紀宏巖
(北汽集團越野車研究院,北京 101300)
一種基于時間觸發(fā)的CAN發(fā)送機制
紀宏巖
(北汽集團越野車研究院,北京 101300)
提出一種CAN總線發(fā)送機制,通過這種機制,網(wǎng)絡(luò)上的所有節(jié)點能夠獲取統(tǒng)一的時鐘,報文將基于時間觸發(fā)的方式發(fā)送。此機制應(yīng)用于現(xiàn)有CAN網(wǎng)絡(luò)之后,能夠有效避免總線競爭帶來的報文延遲,提高CAN總線的傳送實時性。
時間觸發(fā);事件觸發(fā);總線競爭;報文優(yōu)先級
隨著汽車上電子功能的增多,總線上節(jié)點數(shù)量也越來越多,總線負載率也隨之增高。在負載率超過40%的基礎(chǔ)上,如果不針對CAN網(wǎng)絡(luò)進行任何優(yōu)化,將會使很多節(jié)點發(fā)送的報文產(chǎn)生競爭,從而帶來傳送的延遲。本文提出一種改進方式,即選取網(wǎng)絡(luò)中的某個節(jié)點,讓其周期性地發(fā)送同步報文,其他節(jié)點收到這條報文之后,立刻進行時鐘同步,通過這種方法,使網(wǎng)絡(luò)上的所有節(jié)點獲取公共時鐘,再以公共時鐘為基準,為每個節(jié)點分配自己的時間段,節(jié)點都只在屬于自己的時間段內(nèi)發(fā)送報文,不屬于自己的時間段內(nèi)不發(fā)送,這樣每個節(jié)點在發(fā)送報文的時候都不會與其他節(jié)點產(chǎn)生競爭,需發(fā)送報文就立刻能夠成功發(fā)送出去,不會產(chǎn)生延遲。這種發(fā)送方式不需要對硬件和網(wǎng)絡(luò)拓撲做改動,適用于任何CAN總線網(wǎng)絡(luò),可以在不增加成本的基礎(chǔ)上有效改善總線網(wǎng)絡(luò)的實時性。
CAN是一種基于事件觸發(fā)的通信方式。所謂事件觸發(fā)是指當任何一個節(jié)點有發(fā)送報文需求時,立刻就進行發(fā)送。但也可能其他的節(jié)點有發(fā)送需求,這時就會產(chǎn)生競爭,CAN國際標準ISO 11898規(guī)定了此時依靠報文的優(yōu)先級來決定報文的發(fā)送順序,這種機制保證了在產(chǎn)生競爭時,每條報文都能夠被成功發(fā)送,但沒法保證報文的實時性,優(yōu)先級低的報文不能在需發(fā)送的時候立刻發(fā)送成功,會有等待而造成的延遲?;谑录|發(fā)的報文發(fā)送示意圖如圖1所示。
圖1 基于事件觸發(fā)的報文發(fā)送
從圖1可以看到,節(jié)點A、B、C、D在不同的時刻分別向總線上發(fā)送ID為5、7、3、6的報文。B節(jié)點發(fā)送優(yōu)先級較低,雖然發(fā)送時間很早,但是由于總線競爭的原因?qū)е缕渥罱K發(fā)送到總線上的時刻最靠后。這就是基于“事件觸發(fā)”發(fā)送方式的缺陷,各個節(jié)點之間沒有公共時鐘,報文的發(fā)送不能統(tǒng)一進行協(xié)調(diào),很多時候會由于多個節(jié)點同時發(fā)送報文造成總線競爭而產(chǎn)生延遲。
提出一種以時間觸發(fā)的CAN報文發(fā)送機制,時間觸發(fā)的關(guān)鍵是要讓所有的節(jié)點都能獲取一個公共的時鐘,CAN總線采取廣播的方式發(fā)送報文,任何一個節(jié)點發(fā)送的報文都可以被其它節(jié)點所接收,并且發(fā)送節(jié)點發(fā)送完成和接收節(jié)點接收成功是同一個時刻,因此利用CAN總線的這種特點來實現(xiàn)基于時間觸發(fā)。
選取網(wǎng)絡(luò)上的任何一個節(jié)點發(fā)送同步報文,發(fā)送同步報文的節(jié)點稱為同步節(jié)點。為了保證同步報文能夠精確地 按周期發(fā)送,同步報文的ID設(shè)置為0(優(yōu)先級最高),同步報文的周期取所有周期報文的最大公約數(shù)。假設(shè)其他報文的周期分別為10 ms、20 ms、30 ms、50 ms,則同步報文的周期為300 ms。同步節(jié)點每間隔300 ms發(fā)送一次同步報文,其發(fā)送完該報文之后,立刻將自身計數(shù)器清0,其他節(jié)點收到同步報文之后也將自身計數(shù)器清0,這樣就能夠使網(wǎng)絡(luò)上所有節(jié)點每隔300 ms實現(xiàn)一次時鐘同步。基于時間觸發(fā)的報文發(fā)送如圖2所示。
圖2 基于時間觸發(fā)的報文發(fā)送
從圖2可以看出,時間軸上每間隔300 ms為一個同步時刻,所有節(jié)點都以同步時刻為基準發(fā)送報文。由于發(fā)送時刻都不沖突,因此報文能夠在第一時間內(nèi)被發(fā)送成功,避免了總線競爭,也就大大降低了報文延遲的可能。
闡述CAN總線時間觸發(fā)方面的一些思路,并嘗試在汽車網(wǎng)絡(luò)設(shè)計過程中進行一些有意義的理論實踐,所提出的方法和措施都在工作中經(jīng)過驗證,實用性較強,對于提高汽車網(wǎng)絡(luò)設(shè)計的實時性具有重要的參考作用。
[1] 顏碧云,魏葉華.基于CAN總線的共享時鐘混合調(diào)度算法[J].計算機工程與應(yīng)用,2014(4):69-72,156.
[2] 馮曉東,果艷紅.TTCAN動態(tài)調(diào)度算法實現(xiàn)與仿真[J].電子測量與儀器學報,2008,22(2):81-85.
[3] 王慶祥,陳家琪.TTCAN網(wǎng)絡(luò)的響應(yīng)分析及系統(tǒng)矩陣的優(yōu)化[J].上海理工大學學報,2005,27(1):32-36,42.
(編輯 心 翔)
A Time-trigger Method of CAN Transmission Mechanism
JI Hong-yan
(BAIC Off-road Vehicle Research Centre,Beijing 101300,China)
This article proposes a CAN transmission mechanism that all nodes on the network get a global clock,and message sending is triggered by time. This mechanism could effectively avoid delay caused by CAN competition,thus improve the real-time transmission.
time-trigger;event-trigger;CAN competition;message priority
U463.6
A
1003-8639(2017)10-0061-02
2017-01-05
紀宏巖,碩士,高級工程師,負責車載網(wǎng)絡(luò)的設(shè)計和診斷系統(tǒng)的開發(fā),具有10年總線開發(fā)經(jīng)驗。