国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

CAN總線的安全性研究進展

2015-07-02 00:17:24楊福宇
關(guān)鍵詞:斷線離線中斷

楊福宇

(重慶工業(yè)自動化儀表研究所,重慶 401123)

?

CAN總線的安全性研究進展

楊福宇

(重慶工業(yè)自動化儀表研究所,重慶 401123)

給出了CAN總線的假冒錯故障的成因與故障率分析,得到Pmasq.11=9.11×10-11和Pmasq.29=1.70×10-10,值得高層協(xié)議(如CANopen、J1939等)使用者注意。對于CAN FD的功能安全,2014年最新的改進仍然存在錯幀漏檢大以及假冒錯問題,提出了同時利用CAN總線實現(xiàn)二級中斷的想法,使實現(xiàn)自愈總線成為可能。

CAN總線;功能安全;中斷;自愈總線

引 言

CAN總線是當前汽車電子控制應用的主力軍,雖已有20多年的歷史,并且在不斷擴展到飛機等其他行業(yè),這個態(tài)勢還能繼續(xù)下去嗎?為了回答這個問題,必須先了解CAN總線滿足應用要求的程度、相對其他方案的優(yōu)缺點及其在改進方面做出的努力。

1 功能安全的要求

通信協(xié)議功能安全的主要要求有:

① 消息的正確傳輸。殘留誤差的概率要使系統(tǒng)失效率小于10-9/h,所謂殘留誤差就是通過了所有檢錯措施而還留存的錯誤,比如本來要減速卻收到了加速的信號,本來要關(guān)閥門卻收到了開閥門的信號。

② 消息的及時傳輸。規(guī)定的采樣周期內(nèi)沒有收到幀,出現(xiàn)了丟包現(xiàn)象,例如要剎車卻丟了剎車信號。

③ 消息的一致傳輸(所有有關(guān)節(jié)點時間上的同步正確送達)。有些應用要求各個執(zhí)行機構(gòu)協(xié)調(diào)動作,不能因為局部錯誤而有的動、有的不動,例如有的輪子剎車、有的輪子不剎車,就可能引起轉(zhuǎn)向力。

④ 沒有假冒錯。本來是傳送給A節(jié)點的幀,因為局部錯誤,B節(jié)點收下了形式上合法但內(nèi)容上錯誤的幀,例如傳送的是幾個溫度參數(shù),結(jié)果在未預料到的節(jié)點中被理解為電流值。

現(xiàn)在一些競爭性的通信協(xié)議有TTP/C、FlexRay、1553B等,它們在滿足上述要求方面各有困難。

TTP/C的組籍算法可能把正確節(jié)點的通信阻斷,這樣就做不到及時送達。組籍向量隱含在CRC檢驗中,削弱了CRC的檢驗能力,使錯幀漏檢率增大[7]。

FlexRay在啟動時有形成小集團的可能性,即一個系統(tǒng)分割為兩個互相不能通信的邏輯集團[8],做不到正確送達、及時送達,并且時鐘算法會單向漂移,使部分節(jié)點失效概率增大[9]。

1553B的檢錯能力比較弱,每個字只有一個奇校驗位,如果發(fā)生兩個錯誤就要漏檢,在BC發(fā)送命令字有兩個錯時,有可能指向別的RT子系統(tǒng),出現(xiàn)假冒錯。

這些協(xié)議的局部錯誤會出現(xiàn)有的節(jié)點收下、有的節(jié)點拒收,拒收的節(jié)點無法及時通知其他節(jié)點,不能實現(xiàn)數(shù)據(jù)的一致性,而且有全局錯誤時也無法及時糾錯。如果采用冗余硬件通道或時間上的冗余,都意味著成本的提高或可用帶寬的下降。

2 CAN總線的隱患

CAN總線的報錯幀是非常好的機制,有錯時它可以及時通知其他節(jié)點,從而保證數(shù)據(jù)的一致性,并實現(xiàn)重發(fā)糾錯,這是其他協(xié)議所沒有的,但是由于CAN總線協(xié)議設計上的缺陷,還存在不滿足上面功能安全要求的隱患。

圖1 因位錯造成仲裁域與控制域的不同解讀

例如規(guī)定消極報錯幀分界符(delimiter of passive error frame)內(nèi)的0是錯誤,而分界符會延伸到新幀開始處(SOF=0),沖突會造成重復出錯,節(jié)點變?yōu)榈刃щx線,發(fā)送節(jié)點最終真正離線[1-3]。離線的時間可達到數(shù)十ms,無法保證消息的及時傳輸。

CAN總線協(xié)議的填充位規(guī)則的不對稱執(zhí)行,在數(shù)據(jù)域與CRC域形成數(shù)據(jù)流的移位,造成對應位的錯誤是CRC多項式的倍數(shù),形成錯幀漏檢[4],漏檢率達到Pun=1.37×10-7。假定總線速率為1 Mb/s, 幀長為100位, 總線利用率為40%,系統(tǒng)每小時送 1.44×107幀。假定系統(tǒng)的壞狀態(tài)概率是Qbad=0.001,此時系統(tǒng)的失效率為0.001×1.37×10-7×1.44×107=1.97×10-3/h >10-9/h。Bosch 原來的數(shù)據(jù)是Pun=4.7×10-11,產(chǎn)生這樣大差異的原因是沒有把主要漏檢情況考慮進去,同時對考慮進去的情況的出現(xiàn)次數(shù)少算了幾十倍[6]。

CAN總線協(xié)議規(guī)定接收節(jié)點查錯查到EOF6,如果EOF6有局部錯誤,那么有的節(jié)點拒收、有的節(jié)點收下。若位速率為1 Mb/s,幀長為110位,總線負載率為90%,誤碼率為10-4,節(jié)點數(shù)為32,節(jié)點失效率為10-4,則造成的不一致重復為2.84 × 103/h,不一致丟失為3.94 × 10-7/h[5]。

當CAN總線協(xié)議的填充位規(guī)則的不對稱執(zhí)行發(fā)生在仲裁區(qū)時,便可能發(fā)生假冒錯(masquerade error),這是一個以前未討論過的錯誤。圖1中接收節(jié)點本地局部錯在ID7處發(fā)生,造成了接收節(jié)點把Tx的ID4讀為填充位,加以剔除,因而接收節(jié)點對本幀的ID和幀長度有不同解讀。若長幀被讀短,例如本例中8字節(jié)數(shù)據(jù)被誤讀為1字節(jié)數(shù)據(jù),則Rx的CRC域、ACK域、EOF域都將在Tx的數(shù)據(jù)域中,總存在一個通過CRC、ACK檢驗的概率,發(fā)生在Rx的ACK分界符、EOF部分的連續(xù)8位1也可以由Tx的11(110)111中發(fā)生第2個位錯實現(xiàn) (0可以處在括號中的任一位),此時接收節(jié)點就會收下幀。如果Tx后續(xù)的0破壞了Rx的服務間隔,引起超載幀,而此超載幀又破壞了Tx,導致Tx的重發(fā)也沒有任何意義,因為那個錯的ID幀已經(jīng)收下了。

這個錯誤幀是否被接收濾波器拒絕,或者被應用層拒絕,需要對發(fā)生錯誤的所有情景加以檢查才能判斷。圖1原來的ID變成了另一個ID,在高層協(xié)議中會有別的解釋。如果第一個位錯發(fā)生在ID4,又是另一種ID,則要逐一檢驗是否是內(nèi)容上合法的定義。此例為11位ID的系統(tǒng),其分析對29位ID的系統(tǒng)也同樣適用,所以高層協(xié)議(如CANopen、J1939等)的應用者要特別注意。

一個填充位序列有6位,只有第6位是第5位的補碼時,才不會被填充位檢錯發(fā)現(xiàn),發(fā)生填充位規(guī)則執(zhí)行條件概率為2-6。每個ID可處在多個填充位序列中,一般來說有000 001和111 110兩種填充位序列,但在ID3以下受RTR=0的限制,各ID出現(xiàn)在填充位序列的總和是77種。CRCACKEOF共24位,通過檢驗的概率為2-24。位錯發(fā)生在特定位置的概率為2/60/59(假設Rx幀長為60)。長幀讀短條件DLC3=1及DLC2=0的概率為2-2,于是假冒錯概率Pmasq=3.03×10-11。對Tx中有填充位的情況可作類似分析,此時Tx的r0=0將落入Rx的DLC3,只要Tx的DLC3=1,就能保證長幀讀短,假冒錯概率Pmasq=6.07×10-11。所以總的假冒錯概率Pmasq.11=9.11×10-11。類似地可以算出假冒錯失效的概率是0.001×8.64×10-11×1.44*107=1.2×10-6/h>10-9/h。對于CAN2.0B的29位ID系統(tǒng)也可以算出Pmasq.29=1.70×10-10。

3 CAN FD的不足

CAN FD是Bosch在2011年推出的兼容CAN總線的方案,通過在幀數(shù)據(jù)域提高速率的方法使總的吞吐量提高,滿足ECU程序下載的要求,后來也考慮把它用到實時控制之中。

在實時應用上,第1節(jié)所述功能安全的要求是不可避免的。但是CAN FD并沒有對等效離線的根源和EOF6的局部錯誤造成的不一致性作任何改進,所以問題仍然存在。

CAN FD仍然采用原來的填充位規(guī)則,所以在ID域填充位規(guī)則的不對稱執(zhí)行仍然會造成假冒錯。

CAN FD在CRC檢查上采用了不同的方法,力求減少錯幀漏檢率。第一個措施是把填充位也算到CRC中,第二個措施是采用了更長的CRC多項式,第三個措施是CRC域用了固定填充位,相當于增加了新的查錯機制。

但是CAN FD的可變速率產(chǎn)生了以慢速讀高速的可能,出現(xiàn)了新的錯幀漏檢機制;由于兼容要求,增加了更多的解讀選項,也出現(xiàn)了新的錯幀漏檢機制;由于高/低速轉(zhuǎn)換過程的需要,出現(xiàn)了CRC分界符、ACK位長度是2位也合法的情況,在毛刺引起Tx/Rx錯位時仍可以正確接收的情況,這都造成了CAN FD的錯幀漏檢率相當大,為PunCAN FD=2.3×10-10。這個內(nèi)容已被寫入一個45頁的報告,提供給CiA,有需要的讀者可以在參考文獻[6]的文件中下載。

雖然PunCAN FD=2.3×10-10已經(jīng)比較小,但須注意的是這個錯的發(fā)生只要一個或2個位錯就會漏檢,并不是協(xié)議聲稱的HD=6。一幀中出現(xiàn)1~2個錯誤的概率要遠遠大于一幀中出現(xiàn)6個錯誤的概率。

由此,2014年CiA認為需要改進CRC漏檢率,初步?jīng)Q定在CRC的前部增加一個5位的檢查內(nèi)容,其中3位是以Gray碼表示的填充位計數(shù)器(SBC,模8之后的余數(shù)),1位是這3位的奇偶校驗位,1位是與數(shù)據(jù)相隔的固定填充位。這樣當填充位規(guī)則不對稱執(zhí)行時,Tx/Rx有移位時新增加了3個查錯機制,可減少錯幀漏檢率。

當ID域發(fā)生填充位規(guī)則不對稱執(zhí)行,出現(xiàn)長幀讀短的情況時,新加的填充位計數(shù)檢查機制則僅僅是增加滿足漏檢條件的位數(shù),SBC、CRC17、ACK、EOF共36位,要通過檢驗的概率為2-36。以CAN FD擴展格式幀為例,在Tx無填充位而Rx有填充位時,把Tx的ID17=0誤認為基本格式(IDE=0),Tx的ESI=1移位誤認為低速格式(BRS=1)的可能性。長幀讀短的情況除了這兩種之外,還有DLC的移位。Tx有填充位而Rx無填充位時,Tx的ESI=0誤認為基本格式(DLC3=0),所以并不能消除假冒錯失效。

圖2 用2a級中斷實現(xiàn)心跳診斷原理圖

新的查錯機制仍然存在漏檢情況,例如Tx 填充位計數(shù)域前后是10(00110)1,第一個10是數(shù)據(jù)的最后二位,最后一個1是CRC的第一個固定填充位,表示Tx有2次計數(shù)(Gray碼),偶校驗為0。Rx填充位計數(shù)少1位時,整個填充位計數(shù)域?qū)⑻崆耙晃?,該域?qū)⑹盏?(00011)0,表示Rx有1次計數(shù)(Gray碼),偶校驗為1,計數(shù)值、前后固定填充位規(guī)則都合法。

BRS的1位錯仍然會引起錯幀漏檢,2位及多位錯下的漏檢概率為Pun=2.8×10-7。該報告已交CiA,讀者可以向CiA或本人索要。

4 IntCAN的想法

上述4個CAN總線主要的安全隱患均能解決:去掉了原有的填充位規(guī)則與保護幀長度不讀錯、消除了錯幀漏檢與假冒錯、改變查錯與處理錯的規(guī)則消除等效離線,容錯的幀尾設計解決了不一致接收問題。在此基礎(chǔ)上,還可添加新的中斷功能。

CAN的報錯幀可以打斷當前的傳送,實際上是中斷,IntCAN(Interruptible CAN)擴充了CAN的這一特點,引入了二級中斷幀,可以為通信系統(tǒng)提供更多有利于功能安全與提高系統(tǒng)響應速度的能力。

例如一級中斷為報錯,相當于CAN的報錯幀,2a級中斷作時間同步與心跳。

在通信線路中,電纜連接件由于溫度、振動、沖擊損傷、腐蝕等原因失效,此時通信系統(tǒng)就會物理失效。為了解決這一問題,可以采取雙重或多重系統(tǒng)后備,但是這樣成本就會提高,體積、重量、能耗指標會突破,也可采用星形拓撲結(jié)構(gòu)去除受影響部分,但同樣會面臨上述問題。一個比較經(jīng)濟的解決方案是環(huán)形自愈總線,即2a級中斷實現(xiàn)診斷與自愈。

圖2是使用2a級中斷的例子。在單總線時可以用一個主節(jié)點發(fā)送以2a級中斷開始的心跳幀,2a引導后,每一個節(jié)點都有發(fā)送自己心跳的小窗口。這個窗口是預先組態(tài)確定的,心跳小窗口為3位,發(fā)送心跳的節(jié)點在小窗口的第1、2位置“0”,第3位作分界符“1”。讀心跳小窗口的節(jié)點只讀第2位值,其余忽略,可以防止斷線時終端阻抗不匹配引起的振鈴波形誤差。

節(jié)點有故障時,該節(jié)點的心跳窗口就沒有心跳,在發(fā)生通信斷線時,會在斷線兩側(cè)出現(xiàn)不同的心跳狀況:與主節(jié)點在斷點同一段的節(jié)點在發(fā)生斷點后的節(jié)點均無心跳,在斷點另一側(cè)的節(jié)點將發(fā)現(xiàn)所有節(jié)點沒心跳,用定時器可發(fā)現(xiàn)主節(jié)點缺失心跳的故障。采用中斷方式的優(yōu)點是,占用時間非常少,在上述10個節(jié)點的例子里,一次診斷僅需39位。

解決硬件故障的一種簡化方法是自愈環(huán)網(wǎng)。自愈環(huán)網(wǎng)在物理上是一個環(huán),邏輯上是一個總線,主節(jié)點可以控制某一段線的開閉,在正常運行時環(huán)斷開為總線,當該總線有物理斷開時,主節(jié)點將這一段閉合使之成為新的總線。

這種想法lonworks[10]有過,主從芯片在同一節(jié)點內(nèi),正常通信時主從芯片收到的數(shù)據(jù)相同,有錯時經(jīng)專門的查詢來發(fā)現(xiàn)斷開位置,并閉合開關(guān),實現(xiàn)自愈。其不足之處是電纜的匹配用終端阻抗的位置并不在斷線最近處,所以信號的質(zhì)量將大大下降,查詢與通信可能失敗。

采用2a級中斷實現(xiàn)自愈環(huán)的原理見圖3。

圖3 用2a級中斷實現(xiàn)自愈

每一個從節(jié)點都有控制本地是否添加終端電阻的能力(白圓點)。主節(jié)點有A、B兩組收發(fā)器,除了有添加終端電阻的能力外,還有短接兩邊收發(fā)電纜的能力。正常工作時開關(guān)處于斷開位置,系統(tǒng)的拓撲是一條總線,終端電阻在主節(jié)點兩邊接入(黑圓點),主節(jié)點定時發(fā)心跳,診斷網(wǎng)絡健康狀態(tài)。

在非心跳期間也可發(fā)現(xiàn)故障:收發(fā)器A、B不斷比較兩邊收到的是否為同一位流。如發(fā)生斷線,收發(fā)器A、B處是有終端電阻的,位流是不同的,差別較大,即斷線后的第1次傳送就能發(fā)現(xiàn)故障,與心跳周期無關(guān)。

主節(jié)點收發(fā)器A、B可以同時發(fā)送2a級中斷的心跳幀,由于診斷信號的容差較大,每個從節(jié)點都能收到正確的診斷結(jié)果。如果比本節(jié)點上游(下游)的節(jié)點全無心跳,那么在本節(jié)點上游(下游)發(fā)生了斷線,本節(jié)點應控制接入終端電阻。診斷完成后主節(jié)點將開關(guān)閉合,并去掉本身的終端電阻,網(wǎng)絡自愈為新的總線。

從發(fā)生故障到自愈的時間取決于設計,可以短到數(shù)ms之內(nèi)(現(xiàn)有的光電子繼電器可以在200 μs內(nèi)切入和斷開終端電阻)。對于嚴酷環(huán)境與戰(zhàn)場應用,電纜斷裂或連接件的故障是無法立即修復的,自愈功能是生存的最好幫手,現(xiàn)有的技術(shù)不能很好地滿足這種要求。

在用IntCAN實現(xiàn)類似時間觸發(fā)調(diào)度時可以使總線利用率提高,同時對非常緊急的非周期性信號可用中斷先導出后傳送。例如各種報警消息是非周期性的,越早送達就越有利于事故的后處理,如工業(yè)上電網(wǎng)跳閘信號的安全應對、反應堆意外停堆信號的報警處理、飛機的緊急制動或反擊,這些信號在為許多分散的子系統(tǒng)協(xié)同工作時,也希望通信系統(tǒng)能加以支持。采用2b級中斷代替硬接線,2c級中斷消息共享,這就提供了在時間觸發(fā)協(xié)議時的緊急事件提前發(fā)送機會,也為新應用創(chuàng)造了條件。

一些緊急信號可能在平時優(yōu)先級不高,也未在故障-容錯模型中預先設計,但是由于應急需要,可能由人臨時決定,需要直接干預,也可以由2d級中斷引領(lǐng)發(fā)送特定幀,例如操作員直接開關(guān)某閥門、電子或激光的反抑制。

網(wǎng)絡控制系統(tǒng)中,在系統(tǒng)平穩(wěn)時(例如測量值在控制精度范圍之內(nèi))可以讓出通信帶寬,從而為其他應用(如診斷、網(wǎng)絡上傳、云端聯(lián)系)創(chuàng)造條件,但是在本地緊急狀態(tài)下又要立即收回帶寬,各類二級中斷也為這些應用提供服務。

[1] 楊福宇.CAN總線中的一種安全隱患[J].單片機與嵌入式系統(tǒng)應用,2009(1):20-22.

[2] 楊福宇.CAN消極報錯發(fā)送節(jié)點變?yōu)殡x線狀態(tài)的故障[J].單片機與嵌入式系統(tǒng)應用,2009(5):18-20.

[3] 楊福宇.關(guān)于CAN隱患的爭辨[J].單片機與嵌入式系統(tǒng)應用,2009(6):5-7.

[4] 楊福宇.CAN協(xié)議的錯幀漏檢率改進[J].單片機與嵌入式系統(tǒng)應用,2011(6):5-7.

[5] Rufino J, Veríssimo P,Arroz G,et al. Fault-tolerant broadcasts in CAN [C]//The 28th IEEE International Symposium on Fault-Tolerant Computing,1998.

[6] 楊福宇.你必須要知道風險的根源[EB/OL].[2015-01].http://forum.eet-cn.com/ BLOG_ARTICLE_20719.HTM.

[7] 楊福宇.TTP/C組籍算法存在的問題[J].單片機與嵌入式系統(tǒng)應用,2014(10):1-4.

[8] Milbredt P.An Investigation of the Clique Problem in FlexRay[C]// Proceedings of the 3th IEEE Symposium on Industrial Embedded Systems,2008.

[9] 楊福宇.FlexRay時鐘同步的同向漂移[J].單片機與嵌入式系統(tǒng)應用,2011(4):3-6.

[10] LonWorks.78kbps Self-healing Ring Architecture[EB].Lonworks Marketing Bulletin,1993.

Safety Research on CAN Bus

Yang Fuyu

(Chongqing Industrial Automation Instrument Research,Chongqing 401123,China)

This paper puts forward the cause and fault analysis of fake wrong fault of CAN bus.Pmasq.11=9.11×10-11and Pmasq.29=1.70×10-10are obtained.Higher layer protocol user like CANopen,J1939 should pay special attention to this error.It is pointed that the improvement in 2014 version did not solve the problems and it also faces the masquerade problem about the functional safety of CAN FD.So using CAN bus to realize the idea of two level interrupt is proposed,which can achieve the possibility of self-healing bus.

CAN bus;functional safety;interrupt;self-healing bus

TP302.8

A

士然

2015-01-06)

猜你喜歡
斷線離線中斷
斷線的珍珠
異步電機離線參數(shù)辨識方法
防爆電機(2021年4期)2021-07-28 07:42:46
呼吸閥離線檢驗工藝與評定探討
淺談ATC離線基礎(chǔ)數(shù)據(jù)的準備
一起10kV開關(guān)控制回路斷線故障分析及回路完善
離線富集-HPLC法同時測定氨咖黃敏膠囊中5種合成色素
中成藥(2018年2期)2018-05-09 07:20:09
跟蹤導練(二)(5)
千里移防,衛(wèi)勤保障不中斷
解放軍健康(2017年5期)2017-08-01 06:27:44
斷線的風箏
琴童(2017年1期)2017-02-18 15:39:53
10 kV開關(guān)手車控制回路斷線原因分析及處理方法
都兰县| 金川县| 太仓市| 梅河口市| 新乡市| 浦城县| 峨山| 花莲县| 额敏县| 望谟县| 承德市| 金沙县| 汉沽区| 汉川市| 西安市| 板桥市| 南陵县| 吴川市| 大竹县| 湟源县| 大余县| 修水县| 洞头县| 黄骅市| 香格里拉县| 太保市| 甘肃省| 凤凰县| 金坛市| 合阳县| 筠连县| 乡宁县| 梓潼县| 昌平区| 吴旗县| 定陶县| 紫云| 普陀区| 吉安市| 南澳县| 南宁市|