袁遠(yuǎn),李紅信
(蘭州大學(xué) 甘肅 蘭州 730000)
CAN(Controller Area Network)即控制局域網(wǎng),由于本身所具有高性能、高可靠性等特點(diǎn),被認(rèn)為是幾種最有前途的現(xiàn)場(chǎng)總線之一[1]。CAN總線網(wǎng)絡(luò)是基于事件觸發(fā)機(jī)制的多主系統(tǒng),其MAC層協(xié)議采用非破壞性逐位仲裁(CSMA/CA)技術(shù)[2],網(wǎng)絡(luò)上的各個(gè)節(jié)點(diǎn)通過(guò)標(biāo)識(shí)符域中的優(yōu)先級(jí)大小競(jìng)爭(zhēng)總線的使用權(quán)[3]。本文從分析CAN總線標(biāo)準(zhǔn)協(xié)議入手,通過(guò)研究共享訪問(wèn)控制原理及TTCAN協(xié)議,提出了一種動(dòng)態(tài)優(yōu)先級(jí)調(diào)度算法,構(gòu)建了網(wǎng)絡(luò)延時(shí)分析平臺(tái),并與標(biāo)準(zhǔn)CAN網(wǎng)絡(luò)時(shí)延及采用TTCAN協(xié)議網(wǎng)絡(luò)時(shí)延進(jìn)行比較,驗(yàn)證了此算法的有效性。
衡量通信實(shí)時(shí)性的指標(biāo)是通信的延遲時(shí)間,即從消息產(chǎn)生時(shí)刻到將消息幀中的有效數(shù)據(jù)提供給目標(biāo)任務(wù)的時(shí)刻[4]。
動(dòng)態(tài)優(yōu)先級(jí)是基于原有CAN事件觸發(fā)協(xié)議的基礎(chǔ)上,隨著時(shí)間的推移動(dòng)態(tài)調(diào)整各個(gè)站點(diǎn)的優(yōu)先級(jí)的一類算法,相對(duì)于原有的固定優(yōu)先級(jí),它使每個(gè)站點(diǎn)都有相同的權(quán)力來(lái)享受總線的帶寬,避免優(yōu)先級(jí)較低的站點(diǎn)得不到總線占有權(quán),保證網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。方法如下:初始情況下,每個(gè)站點(diǎn)均有各自不同的優(yōu)先級(jí),在沒(méi)有發(fā)生沖突的情況下,各個(gè)站點(diǎn)按初始固定優(yōu)先級(jí)完成數(shù)據(jù)的發(fā)送。當(dāng)發(fā)生沖突后,優(yōu)先級(jí)高的站點(diǎn)在競(jìng)爭(zhēng)勝出發(fā)送數(shù)據(jù),為了能讓失敗的站點(diǎn)在下次的競(jìng)爭(zhēng)中有更大的概率勝出,可以把競(jìng)爭(zhēng)失敗站點(diǎn)的優(yōu)先級(jí)提高一個(gè)等級(jí)來(lái)參加下一次的競(jìng)爭(zhēng)。如果仍然失敗再進(jìn)一步提高優(yōu)先級(jí)等級(jí)。即使失敗了若干次,但這時(shí)候該站點(diǎn)的優(yōu)先級(jí)已經(jīng)相當(dāng)高了,競(jìng)爭(zhēng)勝出的概率也會(huì)很大。當(dāng)優(yōu)先級(jí)低的站點(diǎn)在優(yōu)先級(jí)提高的情況下獲得數(shù)據(jù)發(fā)送權(quán)并發(fā)送完數(shù)據(jù)后,必須把升級(jí)的優(yōu)先級(jí)降低為初始優(yōu)先級(jí),以保證網(wǎng)絡(luò)的正常運(yùn)行。但是,在站點(diǎn)優(yōu)先級(jí)提高的情況下,可能會(huì)出現(xiàn)網(wǎng)絡(luò)中有兩個(gè)或者兩個(gè)以上的站點(diǎn)具有相同的優(yōu)先級(jí),而如果具有相同優(yōu)先級(jí)的站點(diǎn)同時(shí)競(jìng)爭(zhēng)總線,會(huì)造成沖突,產(chǎn)生錯(cuò)誤。因此,必須選擇一種較好算法,保證在站點(diǎn)優(yōu)先級(jí)提升時(shí)避免相同優(yōu)先級(jí)情況的發(fā)生。經(jīng)研究采用“取模增加”的方法可解決這一問(wèn)題。方法描述如下:假設(shè)在幀格式中,表示站點(diǎn)優(yōu)先級(jí)的位數(shù)為N,可以表示的最大數(shù)為2N-1。網(wǎng)絡(luò)中的最大站點(diǎn)數(shù)為L(zhǎng),每個(gè)站點(diǎn)的初始固定優(yōu)先級(jí)為2N-1-P,P為[0,L-1]區(qū)間的一個(gè)值。當(dāng)站點(diǎn)競(jìng)爭(zhēng)失敗后,優(yōu)先級(jí)的增加算法:新優(yōu)先級(jí)=原站點(diǎn)優(yōu)先級(jí)-L。
因?yàn)閮?yōu)先級(jí)必須大于零(取值越低,優(yōu)先級(jí)越高),所以當(dāng)新優(yōu)先級(jí)將要小于0的時(shí)候,優(yōu)先級(jí)就不能繼續(xù)改變了,保持大于等于0的優(yōu)先級(jí)參與競(jìng)爭(zhēng)。
例如,在某個(gè)網(wǎng)絡(luò)中,N=5,L=4,25=32,則各站點(diǎn)初始及升級(jí)優(yōu)先級(jí)如表1所示。
表1 站點(diǎn)動(dòng)態(tài)優(yōu)先級(jí)升級(jí)表
可見(jiàn)在競(jìng)爭(zhēng)失敗的情況下增加站點(diǎn)優(yōu)先級(jí)后,各個(gè)站點(diǎn)的優(yōu)先級(jí)都不會(huì)有相同的情況發(fā)生,因此也不會(huì)產(chǎn)生相應(yīng)的錯(cuò)誤。這里把最大站點(diǎn)數(shù)當(dāng)作模數(shù),第1個(gè)站點(diǎn)可以取的優(yōu)先級(jí)值用L取模后余數(shù)均為3,第2個(gè)站點(diǎn)可以取的優(yōu)先級(jí)值用L取模后余數(shù)均為2,第3個(gè)站點(diǎn)可以取的優(yōu)先級(jí)值用L取模后余數(shù)均為1,第4個(gè)站點(diǎn)可以取的優(yōu)先級(jí)值用L取模后余數(shù)均為0。所以,在競(jìng)爭(zhēng)失敗后,對(duì)原有的優(yōu)先級(jí)值減去模數(shù)L,保證其模運(yùn)算結(jié)果不變。因?yàn)槭峭ㄟ^(guò)減的方法來(lái)實(shí)現(xiàn)優(yōu)先級(jí)的增加,所以把這種方法稱為“取模增加法”。此算法可通過(guò)軟件進(jìn)行實(shí)現(xiàn),具體流程如圖1所示。
圖1 優(yōu)先級(jí)升級(jí)算法流程
TTCAN是一個(gè)在不改變C AN標(biāo)準(zhǔn)協(xié)議的基礎(chǔ)上的高層協(xié)議,是建立在時(shí)間觸發(fā)機(jī)制上的CAN協(xié)議的擴(kuò)展。它能夠同步同一網(wǎng)絡(luò)中所有CAN節(jié)點(diǎn)的通信時(shí)序并提供一個(gè)全局系統(tǒng)時(shí)間,當(dāng)節(jié)點(diǎn)同步后,報(bào)文可以在一個(gè)特定的時(shí)間隙內(nèi)發(fā)送,而不用與其他報(bào)文競(jìng)爭(zhēng)總線訪問(wèn)權(quán),因而得以避免報(bào)文仲裁失敗,并且報(bào)文的延遲時(shí)間也可以預(yù)測(cè)。它在TTCAN的數(shù)據(jù)鏈路層和物理層上都與CAN兼容。在TTCAN中,一個(gè)特殊的節(jié)點(diǎn)即時(shí)間主節(jié)點(diǎn)用來(lái)周期性的發(fā)送使各個(gè)節(jié)點(diǎn)同步的消息,即同步消息。同步消息是TTCAN協(xié)議實(shí)現(xiàn)同步機(jī)制的基礎(chǔ),它的格式就是CAN的數(shù)據(jù)幀格式,各個(gè)節(jié)點(diǎn)通過(guò)標(biāo)識(shí)符來(lái)識(shí)別它。各個(gè)節(jié)點(diǎn)在接收到參考消息后,啟動(dòng)本地定時(shí)器,每一個(gè)網(wǎng)絡(luò)時(shí)間單元計(jì)數(shù)器加1。在TTCAN的Levell級(jí)別中,只占用一個(gè)字節(jié)來(lái)傳輸控制信息比如當(dāng)前所處的基本周期數(shù)。TTCAN的實(shí)現(xiàn)方式是在底層仍采用CAN自身的仲裁機(jī)制,而在會(huì)話層中定義了系統(tǒng)矩陣SM(System Matrix),如圖2所示。將系統(tǒng)矩陣的周期稱為矩陣周期MC(Matrix cycle),每個(gè)矩陣周期由多個(gè)基本周期 BC(Basic cycle)組成,每個(gè)基本周期開(kāi)始于一個(gè)參考消息,并且以下一個(gè)參考消息的開(kāi)始作為結(jié)束。每個(gè)基本周期由若干個(gè)時(shí)間窗口組成,時(shí)間窗口的類型為獨(dú)占窗口、仲裁窗口和自由窗口。只有在這些時(shí)間窗口里才可以進(jìn)行消息交換。每個(gè)基本周期的窗口類型可以不同,并且根據(jù)TTCAN協(xié)議規(guī)定窗口之間有一定的時(shí)間間隙a,其中a的取值為1~16個(gè)網(wǎng)絡(luò)時(shí)間單元。在TTCAN網(wǎng)絡(luò)中除了參考消息和仲裁窗口的消息外,其他消息是不允許重發(fā)的。
圖2 TTCAN系統(tǒng)矩陣
TTCAN系統(tǒng)矩陣是靜態(tài)的,周期重復(fù)的,需要在系統(tǒng)運(yùn)行前就進(jìn)行定義,且所有的節(jié)點(diǎn)中已經(jīng)存儲(chǔ)了相關(guān)的信息。因此對(duì)TTCAN協(xié)議的研究其焦點(diǎn)凝聚于對(duì)系統(tǒng)矩陣的合理調(diào)度[5-6]。
為了檢測(cè)CAN網(wǎng)絡(luò)及TTCAN協(xié)議時(shí)延,研究動(dòng)態(tài)優(yōu)先級(jí)算法網(wǎng)絡(luò)延時(shí)特性,設(shè)計(jì)模擬試驗(yàn)平臺(tái),分析網(wǎng)絡(luò)時(shí)延數(shù)據(jù),并進(jìn)行動(dòng)態(tài)優(yōu)先級(jí)和TTCAN兩種調(diào)度算法的性能分析。
試驗(yàn)平臺(tái)的具體功能包括:模擬網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu);模擬總線參數(shù);記錄消息幀的發(fā)送和接收時(shí)刻。整個(gè)仿真平臺(tái)由3大系統(tǒng)組成,即:網(wǎng)絡(luò)環(huán)境模擬系統(tǒng)、網(wǎng)絡(luò)錯(cuò)誤產(chǎn)生系統(tǒng)、網(wǎng)絡(luò)監(jiān)控系統(tǒng)。實(shí)驗(yàn)網(wǎng)絡(luò)平臺(tái)結(jié)構(gòu)如圖3所示。
圖3 實(shí)驗(yàn)網(wǎng)絡(luò)平臺(tái)結(jié)構(gòu)
仿真系統(tǒng)設(shè)8個(gè)節(jié)點(diǎn),節(jié)點(diǎn)采用Microchip公司dsPIC33FJ256GP710型微控制器實(shí)現(xiàn),該器件內(nèi)置2個(gè)CAN控制器接口,方便實(shí)現(xiàn)CAN通信。向每個(gè)節(jié)點(diǎn)分別發(fā)送周期型和事件型消息幀,在改變網(wǎng)絡(luò)的負(fù)載率的情況下,分別在CAN和TTCAN兩種調(diào)度算法下進(jìn)行實(shí)驗(yàn),比較分析兩種算法下網(wǎng)絡(luò)節(jié)點(diǎn)的時(shí)間延遲特性。
通過(guò)發(fā)送周期型消息和事件型消息,各節(jié)點(diǎn)發(fā)送200幀消息,得到各幀消息的延遲時(shí)間。以其中一節(jié)點(diǎn)為例,實(shí)驗(yàn)統(tǒng)計(jì)結(jié)果如表2所示。
表2 實(shí)驗(yàn)結(jié)果
網(wǎng)絡(luò)負(fù)載是衡量網(wǎng)絡(luò)性能的一個(gè)重要指標(biāo),也是影響網(wǎng)絡(luò)時(shí)延的一個(gè)重要因素。網(wǎng)絡(luò)負(fù)載是單位時(shí)間內(nèi)成功發(fā)送到總線上的信息量,信息量的增加勢(shì)必會(huì)造成多個(gè)報(bào)文的沖突,增加了報(bào)文仲裁的額外開(kāi)銷,尤其是對(duì)優(yōu)先級(jí)較低的報(bào)文有較大的影響。通過(guò)實(shí)驗(yàn),設(shè)置波特率為250 kbps的條件下,根據(jù)在不同網(wǎng)絡(luò)負(fù)載情況下的延時(shí)特性,得出CAN與TTCAN網(wǎng)絡(luò)延時(shí)與負(fù)載率的關(guān)系曲線,如圖4所示。
圖4 網(wǎng)絡(luò)延時(shí)與負(fù)載率關(guān)系
通過(guò)分析上面的實(shí)驗(yàn)結(jié)果看出,動(dòng)態(tài)優(yōu)先級(jí)算法相對(duì)與標(biāo)準(zhǔn)CAN總線,在網(wǎng)絡(luò)實(shí)時(shí)性方面有了一定的進(jìn)步,提高在高負(fù)載情況下,低優(yōu)先級(jí)消息幀獲取仲裁勝出的幾率,降低網(wǎng)絡(luò)時(shí)延。
TTCAN協(xié)議雖然可以保證周期型消息幀的延遲時(shí)間,但是事件型消息幀延遲時(shí)間比CAN協(xié)議大。負(fù)載較低時(shí),消息幀的優(yōu)先級(jí)對(duì)消息的延遲時(shí)間影響有限。但在網(wǎng)絡(luò)負(fù)載非常大的情況下,高優(yōu)先級(jí)消息幀的優(yōu)勢(shì)能體現(xiàn)出來(lái),低優(yōu)先級(jí)消息可能有很大的延遲。CAN網(wǎng)絡(luò)協(xié)議中低優(yōu)先級(jí)消息在網(wǎng)絡(luò)負(fù)載較高時(shí),延遲時(shí)間的數(shù)學(xué)期望及最大值均較高;而TTCAN中周期型消息的延遲時(shí)間基本不變,事件型消息幀隨負(fù)載的增加延遲時(shí)間明顯增加。
靜態(tài)調(diào)度算法(TTCAN協(xié)議)的優(yōu)點(diǎn)是適合調(diào)度強(qiáng)實(shí)時(shí)系統(tǒng)中的周期性消息,只要消息的產(chǎn)生時(shí)刻、傳輸周期、截止期都已知,就無(wú)需進(jìn)行帶寬的動(dòng)態(tài)請(qǐng)求和分配,并且能夠?qū)ο到y(tǒng)進(jìn)行可調(diào)度性分析。缺點(diǎn)是其對(duì)非周期性消息調(diào)度效率低,由于必須進(jìn)行離線調(diào)度算法設(shè)計(jì),不能靈活適應(yīng)系統(tǒng)變化,如節(jié)點(diǎn)的增減等情況,且網(wǎng)絡(luò)資源利用率低。
動(dòng)態(tài)調(diào)度算法(例如動(dòng)態(tài)優(yōu)先級(jí)提升)其優(yōu)點(diǎn)是靈活性強(qiáng),可以實(shí)時(shí)適應(yīng)系統(tǒng)結(jié)構(gòu)和性能的變化,充分利用系統(tǒng)資源;缺點(diǎn)是很難對(duì)系統(tǒng)進(jìn)行有效的可調(diào)度分析,同時(shí)需要大量系統(tǒng)資源來(lái)動(dòng)態(tài)計(jì)算網(wǎng)絡(luò)中消息的優(yōu)先級(jí)。
網(wǎng)絡(luò)控制系統(tǒng)中靜態(tài)調(diào)度算法適合于確定性硬實(shí)時(shí)系統(tǒng)中的消息調(diào)度,但是具有靈活性差等缺點(diǎn),即只適用于時(shí)間特性固定不變的系統(tǒng),如果網(wǎng)絡(luò)某個(gè)節(jié)點(diǎn)傳輸消息的時(shí)間特性發(fā)生變化,則會(huì)造成整個(gè)靜態(tài)調(diào)度的重新構(gòu)建。采用動(dòng)態(tài)調(diào)度算法時(shí),網(wǎng)絡(luò)中傳輸消息的優(yōu)先級(jí)是根據(jù)消息的時(shí)間特性動(dòng)態(tài)構(gòu)建的,因此可以靈活適應(yīng)系統(tǒng)的變化,同時(shí)可以充分利用系統(tǒng)資源。
通過(guò)研究CAN網(wǎng)絡(luò)協(xié)議,分析標(biāo)識(shí)符仲裁機(jī)制,研究CAN網(wǎng)絡(luò)時(shí)延模型,在標(biāo)準(zhǔn)CAN總線協(xié)議的基礎(chǔ)上,提出了動(dòng)態(tài)優(yōu)先級(jí)仲裁算法,解決了高負(fù)載下,低優(yōu)先級(jí)消息幀仲裁勝出的問(wèn)題,有效的降低了網(wǎng)絡(luò)時(shí)延,提高了CAN網(wǎng)絡(luò)實(shí)時(shí)性。并在此基礎(chǔ)上,構(gòu)建仿真時(shí)延平臺(tái),與TTCAN協(xié)議進(jìn)行比較,分析了周期型消息與事件型消息發(fā)送延時(shí)特征,得出延時(shí)與負(fù)載率之間的關(guān)系,為CAN總線在實(shí)際應(yīng)用中的協(xié)議選擇提供了參考依據(jù)。
[1]饒運(yùn)濤.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2007.
[2]吳軍,李曉龍.CAN控制網(wǎng)絡(luò)實(shí)時(shí)性能分析與測(cè)量[J].工業(yè)控制計(jì)算機(jī),2004,17(10):21-23.
[3]牛德青.CAN總線的實(shí)時(shí)性和可靠性研究[D].北京:中國(guó)兵器科學(xué)研究院,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通信延遲時(shí)間的分析[J].清華大學(xué)學(xué)報(bào),2006,46(2):261-265.
[6]王慶祥,陳家琪.TTCAN網(wǎng)絡(luò)的響應(yīng)分析及系統(tǒng)矩陣的優(yōu)化[J].上海理工大學(xué)學(xué)報(bào),2005,27(1):32-36.