袁遠,李紅信
(蘭州大學 甘肅 蘭州 730000)
CAN(Controller Area Network)即控制局域網,由于本身所具有高性能、高可靠性等特點,被認為是幾種最有前途的現場總線之一[1]。CAN總線網絡是基于事件觸發機制的多主系統,其MAC層協議采用非破壞性逐位仲裁(CSMA/CA)技術[2],網絡上的各個節點通過標識符域中的優先級大小競爭總線的使用權[3]。本文從分析CAN總線標準協議入手,通過研究共享訪問控制原理及TTCAN協議,提出了一種動態優先級調度算法,構建了網絡延時分析平臺,并與標準CAN網絡時延及采用TTCAN協議網絡時延進行比較,驗證了此算法的有效性。
衡量通信實時性的指標是通信的延遲時間,即從消息產生時刻到將消息幀中的有效數據提供給目標任務的時刻[4]。
動態優先級是基于原有CAN事件觸發協議的基礎上,隨著時間的推移動態調整各個站點的優先級的一類算法,相對于原有的固定優先級,它使每個站點都有相同的權力來享受總線的帶寬,避免優先級較低的站點得不到總線占有權,保證網絡數據傳輸的實時性。方法如下:初始情況下,每個站點均有各自不同的優先級,在沒有發生沖突的情況下,各個站點按初始固定優先級完成數據的發送。當發生沖突后,優先級高的站點在競爭勝出發送數據,為了能讓失敗的站點在下次的競爭中有更大的概率勝出,可以把競爭失敗站點的優先級提高一個等級來參加下一次的競爭。如果仍然失敗再進一步提高優先級等級。即使失敗了若干次,但這時候該站點的優先級已經相當高了,競爭勝出的概率也會很大。當優先級低的站點在優先級提高的情況下獲得數據發送權并發送完數據后,必須把升級的優先級降低為初始優先級,以保證網絡的正常運行。但是,在站點優先級提高的情況下,可能會出現網絡中有兩個或者兩個以上的站點具有相同的優先級,而如果具有相同優先級的站點同時競爭總線,會造成沖突,產生錯誤。因此,必須選擇一種較好算法,保證在站點優先級提升時避免相同優先級情況的發生。經研究采用“取模增加”的方法可解決這一問題。方法描述如下:假設在幀格式中,表示站點優先級的位數為N,可以表示的最大數為2N-1。網絡中的最大站點數為L,每個站點的初始固定優先級為2N-1-P,P為[0,L-1]區間的一個值。當站點競爭失敗后,優先級的增加算法:新優先級=原站點優先級-L。
因為優先級必須大于零(取值越低,優先級越高),所以當新優先級將要小于0的時候,優先級就不能繼續改變了,保持大于等于0的優先級參與競爭。
例如,在某個網絡中,N=5,L=4,25=32,則各站點初始及升級優先級如表1所示。

表1 站點動態優先級升級表
可見在競爭失敗的情況下增加站點優先級后,各個站點的優先級都不會有相同的情況發生,因此也不會產生相應的錯誤。這里把最大站點數當作模數,第1個站點可以取的優先級值用L取模后余數均為3,第2個站點可以取的優先級值用L取模后余數均為2,第3個站點可以取的優先級值用L取模后余數均為1,第4個站點可以取的優先級值用L取模后余數均為0。所以,在競爭失敗后,對原有的優先級值減去模數L,保證其模運算結果不變。因為是通過減的方法來實現優先級的增加,所以把這種方法稱為“取模增加法”。此算法可通過軟件進行實現,具體流程如圖1所示。

圖1 優先級升級算法流程
TTCAN是一個在不改變C AN標準協議的基礎上的高層協議,是建立在時間觸發機制上的CAN協議的擴展。它能夠同步同一網絡中所有CAN節點的通信時序并提供一個全局系統時間,當節點同步后,報文可以在一個特定的時間隙內發送,而不用與其他報文競爭總線訪問權,因而得以避免報文仲裁失敗,并且報文的延遲時間也可以預測。它在TTCAN的數據鏈路層和物理層上都與CAN兼容。在TTCAN中,一個特殊的節點即時間主節點用來周期性的發送使各個節點同步的消息,即同步消息。同步消息是TTCAN協議實現同步機制的基礎,它的格式就是CAN的數據幀格式,各個節點通過標識符來識別它。各個節點在接收到參考消息后,啟動本地定時器,每一個網絡時間單元計數器加1。在TTCAN的Levell級別中,只占用一個字節來傳輸控制信息比如當前所處的基本周期數。TTCAN的實現方式是在底層仍采用CAN自身的仲裁機制,而在會話層中定義了系統矩陣SM(System Matrix),如圖2所示。將系統矩陣的周期稱為矩陣周期MC(Matrix cycle),每個矩陣周期由多個基本周期 BC(Basic cycle)組成,每個基本周期開始于一個參考消息,并且以下一個參考消息的開始作為結束。每個基本周期由若干個時間窗口組成,時間窗口的類型為獨占窗口、仲裁窗口和自由窗口。只有在這些時間窗口里才可以進行消息交換。每個基本周期的窗口類型可以不同,并且根據TTCAN協議規定窗口之間有一定的時間間隙a,其中a的取值為1~16個網絡時間單元。在TTCAN網絡中除了參考消息和仲裁窗口的消息外,其他消息是不允許重發的。

圖2 TTCAN系統矩陣
TTCAN系統矩陣是靜態的,周期重復的,需要在系統運行前就進行定義,且所有的節點中已經存儲了相關的信息。因此對TTCAN協議的研究其焦點凝聚于對系統矩陣的合理調度[5-6]。
為了檢測CAN網絡及TTCAN協議時延,研究動態優先級算法網絡延時特性,設計模擬試驗平臺,分析網絡時延數據,并進行動態優先級和TTCAN兩種調度算法的性能分析。
試驗平臺的具體功能包括:模擬網絡的拓撲結構;模擬總線參數;記錄消息幀的發送和接收時刻。整個仿真平臺由3大系統組成,即:網絡環境模擬系統、網絡錯誤產生系統、網絡監控系統。實驗網絡平臺結構如圖3所示。

圖3 實驗網絡平臺結構
仿真系統設8個節點,節點采用Microchip公司dsPIC33FJ256GP710型微控制器實現,該器件內置2個CAN控制器接口,方便實現CAN通信。向每個節點分別發送周期型和事件型消息幀,在改變網絡的負載率的情況下,分別在CAN和TTCAN兩種調度算法下進行實驗,比較分析兩種算法下網絡節點的時間延遲特性。
通過發送周期型消息和事件型消息,各節點發送200幀消息,得到各幀消息的延遲時間。以其中一節點為例,實驗統計結果如表2所示。

表2 實驗結果
網絡負載是衡量網絡性能的一個重要指標,也是影響網絡時延的一個重要因素。網絡負載是單位時間內成功發送到總線上的信息量,信息量的增加勢必會造成多個報文的沖突,增加了報文仲裁的額外開銷,尤其是對優先級較低的報文有較大的影響。通過實驗,設置波特率為250 kbps的條件下,根據在不同網絡負載情況下的延時特性,得出CAN與TTCAN網絡延時與負載率的關系曲線,如圖4所示。

圖4 網絡延時與負載率關系
通過分析上面的實驗結果看出,動態優先級算法相對與標準CAN總線,在網絡實時性方面有了一定的進步,提高在高負載情況下,低優先級消息幀獲取仲裁勝出的幾率,降低網絡時延。
TTCAN協議雖然可以保證周期型消息幀的延遲時間,但是事件型消息幀延遲時間比CAN協議大。負載較低時,消息幀的優先級對消息的延遲時間影響有限。但在網絡負載非常大的情況下,高優先級消息幀的優勢能體現出來,低優先級消息可能有很大的延遲。CAN網絡協議中低優先級消息在網絡負載較高時,延遲時間的數學期望及最大值均較高;而TTCAN中周期型消息的延遲時間基本不變,事件型消息幀隨負載的增加延遲時間明顯增加。
靜態調度算法(TTCAN協議)的優點是適合調度強實時系統中的周期性消息,只要消息的產生時刻、傳輸周期、截止期都已知,就無需進行帶寬的動態請求和分配,并且能夠對系統進行可調度性分析。缺點是其對非周期性消息調度效率低,由于必須進行離線調度算法設計,不能靈活適應系統變化,如節點的增減等情況,且網絡資源利用率低。
動態調度算法(例如動態優先級提升)其優點是靈活性強,可以實時適應系統結構和性能的變化,充分利用系統資源;缺點是很難對系統進行有效的可調度分析,同時需要大量系統資源來動態計算網絡中消息的優先級。
網絡控制系統中靜態調度算法適合于確定性硬實時系統中的消息調度,但是具有靈活性差等缺點,即只適用于時間特性固定不變的系統,如果網絡某個節點傳輸消息的時間特性發生變化,則會造成整個靜態調度的重新構建。采用動態調度算法時,網絡中傳輸消息的優先級是根據消息的時間特性動態構建的,因此可以靈活適應系統的變化,同時可以充分利用系統資源。
通過研究CAN網絡協議,分析標識符仲裁機制,研究CAN網絡時延模型,在標準CAN總線協議的基礎上,提出了動態優先級仲裁算法,解決了高負載下,低優先級消息幀仲裁勝出的問題,有效的降低了網絡時延,提高了CAN網絡實時性。并在此基礎上,構建仿真時延平臺,與TTCAN協議進行比較,分析了周期型消息與事件型消息發送延時特征,得出延時與負載率之間的關系,為CAN總線在實際應用中的協議選擇提供了參考依據。
[1]饒運濤.現場總線CAN原理與應用技術[M].北京:北京航空航天大學出版社,2007.
[2]吳軍,李曉龍.CAN控制網絡實時性能分析與測量[J].工業控制計算機,2004,17(10):21-23.
[3]牛德青.CAN總線的實時性和可靠性研究[D].北京:中國兵器科學研究院,2005.
[4]Almeida L.The FTT-CAN protocol:why and how[J].IEEE Transparent on International Electronics,2002,49(6):52-57.
[5]李佳,朱元,田光宇.CAN與TTCAN通信延遲時間的分析[J].清華大學學報,2006,46(2):261-265.
[6]王慶祥,陳家琪.TTCAN網絡的響應分析及系統矩陣的優化[J].上海理工大學學報,2005,27(1):32-36.