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