當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]在CAN消極報(bào)錯(cuò)幀分界符中發(fā)生的格式錯(cuò)會(huì)引起該消極報(bào)錯(cuò)節(jié)點(diǎn)處于等效離線狀態(tài),以及由該節(jié)點(diǎn)發(fā)送的消息優(yōu)先級(jí)逆轉(zhuǎn)。本文討論了發(fā)生此問題的情景、后果以及解決方案。

CAN是最成功的現(xiàn)場總線,特別是在汽車工業(yè)的應(yīng)用方面。僅2006年一年,CAN有關(guān)的控制器出貨量超過5億個(gè)。在過去16年里,有許多關(guān)于CAN在安全攸關(guān)的系統(tǒng)中應(yīng)用時(shí)的安全問題的研究。其中大部分是針對(duì)因CAN事件觸發(fā)通信的性質(zhì)引起的時(shí)間延遲問題,以及數(shù)據(jù)幀幀結(jié)束域倒數(shù)第2位出錯(cuò)時(shí)造成的節(jié)點(diǎn)間消息不一致的問題。有些研究著力于解決CAN系統(tǒng)中的Babb—ling Idiot問題,尚未見到有關(guān)源于標(biāo)準(zhǔn)協(xié)議設(shè)計(jì)本身的嚴(yán)重問題的相關(guān)文獻(xiàn)。

1 出錯(cuò)的情況
    在CAN協(xié)議2.OA版3.1.3款中提到:為了使報(bào)錯(cuò)幀正確結(jié)束,消極報(bào)錯(cuò)節(jié)點(diǎn)可能需要處于空閑狀態(tài)至少3位的時(shí)間(如果消極報(bào)錯(cuò)接收節(jié)點(diǎn)發(fā)生本地錯(cuò)),因此總線不應(yīng)滿負(fù)荷運(yùn)行。這是引發(fā)應(yīng)用故障的原因。節(jié)點(diǎn)間并無時(shí)間同步,因而即便總線有空閑時(shí)間,也不能保證像上述要求那樣的分布。在總線的利用率較低時(shí),掛起待發(fā)的消息將在服務(wù)間隔(intermission,縮寫為I.M.)后立即發(fā)送。這在標(biāo)準(zhǔn)中也有規(guī)定:在另一條消息發(fā)送過程中掛起待發(fā)的消息在服務(wù)間隔后的第一位啟動(dòng)(發(fā)送)。
    現(xiàn)在考慮一種情況:由于電磁干擾,某消極報(bào)錯(cuò)節(jié)點(diǎn)發(fā)生一個(gè)本地錯(cuò)(其他節(jié)點(diǎn)未發(fā)現(xiàn)有錯(cuò)),它就發(fā)一個(gè)消極報(bào)錯(cuò)標(biāo)志(P.E.Flag)。因?yàn)槭请[位,其他節(jié)點(diǎn)對(duì)這個(gè)消極報(bào)錯(cuò)標(biāo)志也無響應(yīng)。這一消極報(bào)錯(cuò)幀的報(bào)錯(cuò)標(biāo)志在數(shù)據(jù)幀ACK分界符后的EOF部分得到確認(rèn)(如圖1所示),但是它的消極報(bào)錯(cuò)幀分界符(P.E.Del)延續(xù)到EOF域最后一位以及服務(wù)間隔之后。如果此時(shí)有3位的總線空閑時(shí)間,那么新幀的開始位(SOF)將是該消極報(bào)錯(cuò)節(jié)點(diǎn)服務(wù)間隔的第一位。按ISO16845標(biāo)準(zhǔn),此顯位被解讀為對(duì)超載幀的請(qǐng)求,由消極報(bào)錯(cuò)節(jié)點(diǎn)發(fā)送的超載幀將引起其他節(jié)點(diǎn)的位填充錯(cuò),使它們發(fā)送主動(dòng)報(bào)錯(cuò)幀。主動(dòng)報(bào)錯(cuò)幀與超載幀將在總線上疊合,雖然比特流的解釋對(duì)該消極報(bào)錯(cuò)節(jié)點(diǎn)和其他節(jié)點(diǎn)而言是不同的,但兩種幀分界符的結(jié)束時(shí)刻是一樣的。所有節(jié)點(diǎn)都會(huì)在此刻復(fù)位CAN協(xié)議狀態(tài)機(jī)的狀態(tài),使它回到開始服務(wù)間隔的狀態(tài)。這解釋了。BoschCAN協(xié)議的說明。但如果對(duì)3位總線空閑時(shí)間沒有保證,那又該如何呢?
    對(duì)報(bào)錯(cuò)幀分界符格式錯(cuò)的檢查在國際標(biāo)準(zhǔn)化組織(ISO)的標(biāo)準(zhǔn)ISO16845中有明確的規(guī)定:在消極報(bào)錯(cuò)幀分界符中的任何顯位是一種格式錯(cuò)。第7.5.6款和8.5.13款是對(duì)應(yīng)消極報(bào)錯(cuò)接收節(jié)點(diǎn)和消極報(bào)錯(cuò)發(fā)送節(jié)點(diǎn)消極報(bào)錯(cuò)幀分界符格式錯(cuò)的測試方法,第7.6.12款和8.6.9款是消極報(bào)錯(cuò)節(jié)點(diǎn)消極報(bào)錯(cuò)幀分界符查到格式錯(cuò)時(shí),接收錯(cuò)計(jì)數(shù)器與發(fā)送錯(cuò)計(jì)數(shù)器增加機(jī)制的檢查方法。因此,消極報(bào)錯(cuò)節(jié)點(diǎn)與其他節(jié)點(diǎn)不同步時(shí),另一個(gè)節(jié)點(diǎn)開始發(fā)送新消息,其SOF將被該消極報(bào)錯(cuò)節(jié)點(diǎn)視為消極報(bào)錯(cuò)幀分界符內(nèi)的格式錯(cuò)。它將在其他節(jié)點(diǎn)新幀傳送過程中開始一個(gè)新的消極報(bào)錯(cuò)幀,新的消極報(bào)錯(cuò)標(biāo)志將在其他節(jié)點(diǎn)新幀的EOF部分得到確認(rèn),新消極報(bào)錯(cuò)幀分界符再一次延續(xù)到超過其他節(jié)點(diǎn)服務(wù)間隔之后。只要掛起的消息未發(fā)完,這一過程將不斷重復(fù)。在此時(shí)間段里,消極報(bào)錯(cuò)節(jié)點(diǎn)不能接收或發(fā)送任何消息,因?yàn)樗傇诓粩喟l(fā)送消極報(bào)錯(cuò)幀。這延遲了該節(jié)點(diǎn)應(yīng)發(fā)送的消息,而不管消息的優(yōu)先級(jí)有多高,也就引起了優(yōu)先級(jí)逆轉(zhuǎn)。由于電磁干擾的隨機(jī)性,無法對(duì)系統(tǒng)進(jìn)行調(diào)度分析。這個(gè)消極報(bào)錯(cuò)節(jié)點(diǎn)有2種可能的方式退出循環(huán)。如果在后面不斷發(fā)送的新幀的某處出現(xiàn)了主動(dòng)報(bào)錯(cuò)幀,該消極報(bào)錯(cuò)節(jié)點(diǎn)的消極報(bào)錯(cuò)幀將與主動(dòng)報(bào)錯(cuò)幀重疊,重復(fù)過程結(jié)束。但在正常應(yīng)用場合中,錯(cuò)誤是很少發(fā)生的,因此后續(xù)的傳送越正常,該消極報(bào)錯(cuò)節(jié)點(diǎn)等效離線狀態(tài)時(shí)間越長。另一個(gè)可能是經(jīng)過一些傳送后不再有掛起待發(fā)的幀,總線空閑時(shí)間足夠長,正如協(xié)議設(shè)想的那樣,能使消極報(bào)錯(cuò)幀的分界符正常結(jié)束,消極報(bào)錯(cuò)幀分界符格式錯(cuò)的重復(fù)也就此結(jié)束。


2 可能的情景
   
除了上述消極報(bào)錯(cuò)接收節(jié)點(diǎn)的本地故障會(huì)引起等效離線的失效以外,其他情景下消極報(bào)錯(cuò)節(jié)點(diǎn)也有可能與簇內(nèi)其他節(jié)點(diǎn)丟失狀態(tài)同步。這些情景在三方面超出了Bosch CAN協(xié)議設(shè)計(jì)時(shí)的設(shè)想:第一,不僅消極報(bào)錯(cuò)接收節(jié)點(diǎn)會(huì)丟失同步,而且消極報(bào)錯(cuò)發(fā)送節(jié)點(diǎn)也會(huì)丟失同步;第二,在有些場合,為了實(shí)現(xiàn)同步,所需的總線空閑時(shí)間要更多(至少為10位);第三,不僅消極報(bào)錯(cuò)節(jié)點(diǎn)的本地錯(cuò)會(huì)引起問題,在少數(shù)場合,主動(dòng)報(bào)錯(cuò)節(jié)點(diǎn)的本地故障也會(huì)引起問題。下面舉一些例子,實(shí)際上有問題的情景遠(yuǎn)不止這些。
    在圖2中,消極報(bào)錯(cuò)接收節(jié)點(diǎn)由于電磁干擾而未能查出總線上的一個(gè)全局錯(cuò)(即漏判性質(zhì)的本地錯(cuò)),但是過后它發(fā)現(xiàn)了因其他節(jié)點(diǎn)所發(fā)送主動(dòng)報(bào)錯(cuò)幀引起的位填充錯(cuò),它發(fā)送的消極報(bào)錯(cuò)幀將遲于其他節(jié)點(diǎn)的主動(dòng)報(bào)錯(cuò)幀結(jié)束,因此丟失了同步。

    在圖3中,消極報(bào)錯(cuò)接收節(jié)點(diǎn)在EOF域中發(fā)生誤判性質(zhì)的本地錯(cuò)。

    它的消極報(bào)錯(cuò)幀不會(huì)被其他節(jié)點(diǎn)看到,因而它們以正常方式結(jié)束收發(fā)。消極報(bào)錯(cuò)節(jié)點(diǎn)的消極報(bào)錯(cuò)幀要遠(yuǎn)遲于其他節(jié)點(diǎn)的結(jié)束時(shí)刻結(jié)束,在此情況下,為使消極報(bào)錯(cuò)節(jié)點(diǎn)能同步,最少要有10位的總線空閑時(shí)間。當(dāng)總線有10位空閑時(shí)間時(shí),新幀的SOF會(huì)被消極報(bào)錯(cuò)節(jié)點(diǎn)看作超載幀的請(qǐng)求,盡管在超載幀結(jié)束后節(jié)點(diǎn)間實(shí)現(xiàn)了狀態(tài)同步,但卻因超載幀造成不必要的開銷。這里理想的總線空閑時(shí)間為13位。
    在圖4中,由于電磁干擾消極報(bào)錯(cuò)發(fā)送節(jié)點(diǎn)未能正確讀取ACK位,它發(fā)出的消極報(bào)錯(cuò)幀將被其他節(jié)點(diǎn)看作ACK分界符和EOF域,就像消極報(bào)錯(cuò)接收節(jié)點(diǎn)一樣,它失去了與其他節(jié)點(diǎn)的狀態(tài)同步。

    在圖5中,消極報(bào)錯(cuò)發(fā)送節(jié)點(diǎn)的本地錯(cuò)發(fā)生在CRC分界符處,它的消極報(bào)錯(cuò)標(biāo)志的第一位被其他節(jié)點(diǎn)的ACK位改寫,消極報(bào)錯(cuò)幀的剩余部分被其他節(jié)點(diǎn)看作ACK分界符和EOF域,狀態(tài)不同步再次發(fā)生。

    在圖6中,消極報(bào)錯(cuò)發(fā)送節(jié)點(diǎn)的本地故障造成ACK分界符的誤讀,它開始一個(gè)消極報(bào)錯(cuò)幀,而其他節(jié)點(diǎn)把它誤讀為數(shù)據(jù)幀的EOF域,此時(shí)消極報(bào)錯(cuò)發(fā)送節(jié)點(diǎn)狀態(tài)與其他節(jié)點(diǎn)不同步。

    當(dāng)一個(gè)規(guī)模較小的系統(tǒng)僅剩一個(gè)主動(dòng)報(bào)錯(cuò)節(jié)點(diǎn)時(shí),它的本地錯(cuò)將引起一個(gè)主動(dòng)報(bào)錯(cuò)幀。其主動(dòng)報(bào)錯(cuò)標(biāo)志會(huì)被其他消極報(bào)錯(cuò)節(jié)點(diǎn)視為位填充錯(cuò)或格式錯(cuò),從而開始它們的消極報(bào)錯(cuò)幀(見圖7)。結(jié)果是主動(dòng)報(bào)錯(cuò)幀較早結(jié)束,狀態(tài)的不同步再次出現(xiàn)。

3 后 果
    當(dāng)消極報(bào)錯(cuò)節(jié)點(diǎn)出現(xiàn)上述分析的情景時(shí),就沒有機(jī)會(huì)收發(fā)消息。直到總線空閑或者有一個(gè)主動(dòng)報(bào)錯(cuò)節(jié)點(diǎn)發(fā)主動(dòng)報(bào)錯(cuò)幀時(shí),才可能恢復(fù)正常。由于錯(cuò)誤的發(fā)生是隨機(jī)事件,在正常應(yīng)用環(huán)境中其間隔會(huì)相當(dāng)長。消極報(bào)錯(cuò)節(jié)點(diǎn)逸出這種等效離線狀態(tài)的最壞情況是,它要等到總線成為空閑。此段時(shí)間為系統(tǒng)中所有消息的最壞響應(yīng)時(shí)間中最大的那個(gè)。以Tindell改造過的SAE典型試驗(yàn)數(shù)據(jù)集為例,最大最壞響應(yīng)時(shí)間在總線速率為125 kbps時(shí)為49.192ms,250kbps時(shí)為14.404ms??偩€的利用率相應(yīng)為94.2%和47.1%。如果故障發(fā)生在收發(fā)制動(dòng)壓力的消息(其周期為5 ms)的節(jié)點(diǎn),則汽車可能在125 kbps時(shí)丟失10次數(shù)據(jù),250 kbps時(shí)丟失3次數(shù)據(jù)。在此期間作用在輪子上的制動(dòng)力不是所期望的,汽車將有難以預(yù)計(jì)的風(fēng)險(xiǎn)。以每小時(shí)100 km行駛的汽車將在1.4 m或O.4 m的距離上失去控制。
    消極報(bào)錯(cuò)節(jié)點(diǎn)狀態(tài)同步的丟失可能比上述最壞情況早些結(jié)束,但這完全取決于錯(cuò)誤的統(tǒng)計(jì)學(xué)特性,超出了CAN調(diào)度分析的假設(shè),使CAN設(shè)計(jì)工具不精確。當(dāng)消極報(bào)錯(cuò)節(jié)點(diǎn)丟失同步后,即使有一些未確知的總線空閑時(shí)間,它們可能引入超載幀,這也是調(diào)度分析時(shí)未加考慮的。因此設(shè)計(jì)工具難以給出有足夠精度的真實(shí)結(jié)果。這會(huì)危害到所設(shè)計(jì)系統(tǒng)的安全性。另外,超載幀也降低了總線的吞吐率。

4 解決方案
    經(jīng)仔細(xì)分析所有可能的全局錯(cuò)和本地錯(cuò)以后,各種情景和合適的消極報(bào)錯(cuò)幀分界符長度間的關(guān)系就建立起來了。所謂“合適”是指消極報(bào)錯(cuò)節(jié)點(diǎn)能在出錯(cuò)后依然與其他節(jié)點(diǎn)的狀態(tài)保持同步。在有些場合中消極報(bào)錯(cuò)幀分界符應(yīng)為原來的8位長,在有些場合中它應(yīng)是2位長,在另外一些場合中它應(yīng)是1位長。若本地錯(cuò)發(fā)生在數(shù)據(jù)幀或遠(yuǎn)程幀的EOF域,那么為了實(shí)現(xiàn)正確的同步,最好的選擇是在EOF的最后一位處對(duì)CAN協(xié)議狀態(tài)自動(dòng)機(jī)進(jìn)行復(fù)位。需要根據(jù)總線上的數(shù)據(jù)流以及錯(cuò)誤發(fā)生的位置加以判斷,該消極報(bào)錯(cuò)節(jié)點(diǎn)是發(fā)生了全局錯(cuò)還是本地錯(cuò),從而確定應(yīng)有的消極報(bào)錯(cuò)幀分界符長度,或者啟動(dòng)協(xié)議狀態(tài)機(jī)的復(fù)位信號(hào),完整的解決方案已申請(qǐng)了專利。
    將消極報(bào)錯(cuò)幀分界符長度簡單地改為另一個(gè)固定的長度,可能簡化實(shí)現(xiàn)的復(fù)雜性,在某些場合它可以避免在消極報(bào)錯(cuò)節(jié)點(diǎn)有本地錯(cuò)時(shí)產(chǎn)生長時(shí)間的等效離線狀態(tài)的失效,但是這一解決方案無法應(yīng)對(duì)所有可能丟失同步的情景。同時(shí)它還殘留有其他的一些缺點(diǎn):例如增加了消極報(bào)錯(cuò)節(jié)點(diǎn)不能接收的機(jī)會(huì);因重復(fù)出錯(cuò)或超載幀造成調(diào)度結(jié)果確定性的下降;本節(jié)點(diǎn)或其他節(jié)點(diǎn)所發(fā)消息優(yōu)先級(jí)的逆轉(zhuǎn);因超載幀造成帶寬的無效占用。所以這種簡化造成的性能下降是得不償失的。
    按修改后實(shí)現(xiàn)的消極報(bào)錯(cuò)幀不能通過現(xiàn)有標(biāo)準(zhǔn)ISO16845第7.5.6款和8.5.13款的全部測試設(shè)置,因?yàn)橄麡O報(bào)錯(cuò)幀分界符的長度不再是固定的8位。CAN標(biāo)準(zhǔn)ISO11898及ISO16845應(yīng)依據(jù)應(yīng)用中對(duì)安全的要求作相應(yīng)的修改。


5 小 結(jié)
    在消極報(bào)錯(cuò)幀分界符內(nèi)格式錯(cuò)的后果長期以來被忽視了。即使在一般應(yīng)用中等效離線狀態(tài)和優(yōu)先級(jí)逆轉(zhuǎn)也是不能容忍的,因?yàn)橐淮坞姶鸥蓴_造成的1位錯(cuò)所要承受的懲罰太大了。為了將CAN用于更為嚴(yán)格的安全攸關(guān)的應(yīng)用中,這個(gè)問題是非解決不可的。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉