作者:雷萬軍,張云生,陳穎,陳輝
1 引 言
隨著計算機技術、控制技術、信息技術的快速發展,工業的生產和管理方式進入了生產自動化、控制智能化時代,特別是分布嵌入式系統的應用,更加需要標準化、實時的控制模塊和I/O功能模塊,以便系統集成,構建適應于惡劣環境的復雜分布式系統。實時嵌入式軟件模塊適合于沒計復雜的分布式系統,它支持分布的、異構設備的系統建摸和構造。嵌入式模塊的作用是提供使復雜性容易處理的結構和技術,基于Giorio的嵌入式控制設汁更適合具有硬實時控制約束的應用。本文中,平臺指硬件結構、操作系統和通信協議,由CPU、傳感器、執行器和網絡組成。與平臺無關的事件包括應用功能和時限,與平臺相關的事件包括時序安排、通信和物理特性。
傳統的實時嵌入式軟件設計是在抽象的數學模型基礎上,控制工程師根據對象行為和環境影響,利用求解模型的軟件工具,得到模型的功能和性能,然后交給軟件工程師針對給定的平臺寫出代碼,并在給定的平臺上檢驗和優化代碼,直到得出滿意的時間行為。在這個過程中,常常丟失了模型和代碼之間緊密的對應關系,放棄了軟件的復硝性,增加了軟件設計的復雜度,因而產生的軟件是弱化的,難于在不同的平臺上應用。
基于Giotto的嵌入式控制軟件設計將功能程序從特定平臺分離,將時限從功能中分離,其與平臺無關性使得它具有更好的實時性、可靠性及可復用性,更適合嵌入式實時分布系統。圖l為基于Giotto的嵌入式控制系統的設計流程圖。首先,控制工程師和軟件工程師就控制設計的功能和時限達成一致,設計一個Giotto程序;然后,軟件工程師使用Giotto編譯器產生一個可執行代碼,該代碼能連接Giotto運行時間庫,將程序映射到給定的平臺。Giotto運行時間庫提供一個時序安排和通信的中間層,這一層定義了Giotto可執行程序與平臺之間的接口。目前已經建立了一個Giotto運行時間庫,用于Intel x86機上Wind River的VxWorks實時操作系統。
3 Giotto編程技術
Giotto是一種與平臺無關,且在特定控制領域應用中具有高水平的編程語言。Giotto的設計用于高要求的控制應用,這些應用要求周期性地瀆取傳感器,調用任務,更新執行和模式轉換。Giotto基于時間觸發編程,從傳感器到CPU以及CPU到執行器之問的通信由全局時鐘觸發,使其具有可預報性。Giotto程序不指定與平臺相關的部分,如優先權、通信等。其優點是與具體的執行平臺無關,能與任何實時操作系統、調度運算法則以及實時通信協議兼容。
Giotto的兩個核心組成部分是:周期性的任務調用和模式轉換。一個Giotto程序指定一系列的模式,每一種模式又包含一系列的任務和模式轉換。每一時刻,程序都執行在特定的模式P下,每個P模式轉換包含1個評估函數和1個目標模式Q,只有評估函數為真時系統才轉換為新模式Q。
Giotto任務是一項劇期性的工作,其輸入和輸出端幾分別在任務周期的啟動和結束時更新,但Giotto任務不一定要在周期開始時啟動,只需在周期內啟動和完成。圖2(a)顯示了運行在同一個CPU上的1個40ms任務M和1個10ms任務N的時序,虛線為目前任務占用CPU的可能情況。在第Oms,M和N都讀取它們輸入端口的值;在第10 ms,任務N的計算結果寫入它的輸出端口,但是N早已結束執行(如圖中虛線所示);在第40 ms,任務M的計算結果寫入它的輸出端口,但任務M在第40ms之前已經完成執行。無論任務M在0~40 ms的任何時間完成計算,任務N都只會在第40 ms讀其結果。
在Giotto中一個任務可以看作是一個工作單元,一旦開始,就必須要完成。任務周期沒結束時,模式轉換不能終止任何任務。給定一個Giotto模式P(包括分別由40 ms和10 ms調用的Giotto任務M和N)和一個Giotto模式Q(包括分別由40ms和5ms調用的Giotto任務M和R)。圖2(b)顯示了在P模式中的第10ms模式轉換被激活的時序,此時模式P轉換為模式Q。由于P和Q都包含任務M,所以任務M不會終止,但任務N被周期為5ms的任務R代替。
4 物流系統自主小車設計
2一自主小車系統包括2個自主小車,每個自主小車包含一個微處理器、馬達和觸摸式傳感器。設定在任何時候只有一個自主小車是領導者,而其他自主小車是跟隨者。其中,處于領導或避開狀態的自主小車稱為“領導者”,處于跟隨或停止狀態的自主小車稱為“跟隨者”。當領導者被阻礙時,領導者進入避開狀態,跟隨者進入停止狀態。進入避開狀態的自主小車執行一段避開程序,以避開障礙物,此時處于停止狀態的自主小車仍停止;當領導者完成避開程序返回到領導狀態時,跟隨者返回跟隨狀態。當跟隨者之一被阻礙時,該自主小車進入避開狀態,其他所有的自主小車進入停止狀態,被阻礙的這個自主小車成為新的領導者。圖3顯示了2一自主小車系統的狀態行為。
由于自主小車處于領導或避開狀態時其他自主小車處于跟隨或停止狀態,因此對每一個領導者X使用1個LeildXFollow模式和1個EvadeXStop模式。其中,處于LeadlFollow模式時,自主小車l是領導者;處于Evadelstop模式時,自主小車l執行避開程序。另外,為每個自主小車X引入一個stopX模式,它允許自主小車快速停止。runCom1任務每40 ms運行一次存儲于輸出端口 command中的命令。兩個Giotto任務rrailerCtrl和trailerCtr2具有lOms的周期,它們根據command中的命令控制兩個自主小車的馬達;command中的數據由任務驅動trailerDrv傳送到任務trailerCtrl和trailerCtr2的輸入端口。
系統分別對自主小車l和2的傳感器不斷地進行檢測。當自主小車1被阻礙時,系統轉換到stopl模式。兩個自主小車都停止移動;完成stopl模式之后系統轉換為EvadelStop模式.此時自主小車l執行 避開程序而自主小車2停止不動。類似地,當自主小車2被阻礙時,自主小車2經過stop2模式后轉換到Evade2Stop模式。在EvadelStop模式下,Evadel任務每一周期計算一次避開動作是否完成以及避開的下一步動作;具有10ms周期的任務trailerCtrl根據command中避開的步驟去控制自主小車1的馬達,一旦完成避開動作,就轉換為LeadlFollow模式。
圖4為系統從LeadlFollow模式到stopl模式,EvadelStop模式和LeadlFollow模式的模式轉換時序圖。到stopl模式的轉換發生在LeadlFollow模式下的第60 ms,自主小車l的傳感器檢測到障礙,系統由LeadlFollow模式轉換為stopl模式.兩個自主小車執行停止程序;完成stopl模式后,在第80 ms系統轉換為另外一個模式EvadelStop,自主小車1的控任務立刻被調用,自主小車l執行避開程序,此時自主小車2仍停止;當自主小車1完成避開動作后,在第110ms,兩個自主小車的控制任務立刻被調用,系統轉換為LeadlFollow模式。當自主小車2是領導者時,其模式轉換類似。
5 結論
在基于Giotto的嵌入式控制設計中,時序程序與功能程序的分離,使Giotto程序與具體的運行平臺無關,從而提高了程序的健壯性、穩定性及代碼的復用性。Giotto系統中任務的調用和環境變量的檢測由全局時鐘觸發,其時間行為具有高度可預報性,使得Giotto非常適合具有硬實時約束的嵌入式控制系統。
責任編輯:gt
-
嵌入式
+關注
關注
5087文章
19145瀏覽量
306122 -
控制系統
+關注
關注
41文章
6635瀏覽量
110685 -
計算機
+關注
關注
19文章
7519瀏覽量
88204
發布評論請先 登錄
相關推薦
評論