CAN總線的功能安全問題
圖中隊長度18的出現(xiàn)數(shù)比隊長度17次的多,解釋如下:雖然每個18隊都要經(jīng)過17隊而下降,但是處于18隊時仍可能增長到19隊或更長,它們退下時又要經(jīng)過18隊狀態(tài)。而在某時,由于同時就緒的消息多于2個,所以使隊長度直接由小于17而跳到18,從而使18隊的出現(xiàn)次數(shù)多于17隊。
于是,消極報錯發(fā)送節(jié)點發(fā)生等效離線而進入真正離線的概率是P=BER×9×1.2×10-3 ,其中BER為誤碼率。這是一個樂觀的估計。
對消極報錯接收節(jié)點,發(fā)生在幀內(nèi)任一位的局部錯均可能產(chǎn)生類似的情形,即消極報錯幀分界符內(nèi)遇到其他節(jié)點掛起待發(fā)幀的發(fā)送,造成再出錯的情形。假定幀長為135位,那么其等效離線的概率是P=BER×1 35×1.2×10-3。
3 離線的時間
發(fā)生等效離線的節(jié)點不再能發(fā)送,所以應(yīng)扣除消息源是該節(jié)點的那些幀。此時的分析方法可以參考CAN總線的傳統(tǒng)調(diào)度分析方法,最壞的情況是最低優(yōu)先級消息的送達(dá)時間。這樣分析的結(jié)果與應(yīng)用的具體配置有關(guān),對每一個節(jié)點是不同的。
假定掛起待發(fā)的消息有4字節(jié)數(shù)據(jù),采用11位ID,平均填充位取8位,再加3位服務(wù)間隔,那么16幀導(dǎo)致的等效離線為16×(84+3)=1 392位,真正離線的時間為128幀,最壞情況為幀間有10位的空閑。所以真正離線將有128 x(84+3+10)=12 416位。二者相加,消極報錯發(fā)送節(jié)點出錯后會有總計13 808位的不能服務(wù)的時間,在500 kbps速率下,這相當(dāng)于27.6 ms。如果采用29位ID,填充位也增加,幀長變?yōu)?05位,此時消極報錯發(fā)送節(jié)點出錯后不能服務(wù)的時間將達(dá)34.5 ms。有的車采用250 kbps速率,那將有69 ms不能服務(wù)的時間。
4 2個隱患在應(yīng)用上的影響
隱患實際發(fā)作時就表現(xiàn)為系統(tǒng)內(nèi)的故障。
4.1 錯幀漏檢的影響
在單一接收節(jié)點的情況下,錯幀傳遞的信息值域的變化很大,有些應(yīng)用算法加有絕對值的限幅器,或者變化速度的限幅器,可以減少這一故障的危害性。但是這些措施有時是不可行的,或者以降低系統(tǒng)的動態(tài)性能為代價,顯然是應(yīng)用設(shè)計部門不希望的。
在有多個接收節(jié)點的情況下,這一故障就造成數(shù)據(jù)完整性問題,例如在油門、離合器和剎車系統(tǒng)中油門的開度有不同的解釋,系統(tǒng)就難以協(xié)調(diào)工作。
在冗余系統(tǒng)中,如果沒有表決機制,就可能收下錯誤的數(shù)據(jù),就必須增加軟件及時間資源來解決問題。
4.2 離線的影響
如上所述,消極報錯發(fā)送節(jié)點出錯后不能服務(wù)的時間將達(dá)34.5 ms,這在一些應(yīng)用中是不能接受的,例如電子穩(wěn)定控制系統(tǒng)(ESP)中,Bosch ESP8要求信號更新周期最小20 ms。消極報錯接收節(jié)點出錯后不能服務(wù)的時間較短,但是其發(fā)生的概率遠(yuǎn)大于消極報錯發(fā)送節(jié)點出錯后不能服務(wù)的概率(15倍),其影響尚未充分研究。
車輛以100 km/h速度運行時,延遲34.5 ms開始剎車意味著已運動0.94 m,對駕駛員來說是不能接受的。2010年豐田公司Prius的剎車能量回收軟件有0.06 s延遲,造成剎車距離長了0.6 m,進行了召回。
4.3 2個故障先后發(fā)生
應(yīng)用收下了一個錯誤的數(shù)據(jù),然后又發(fā)生了第二個故障,無法改正第一個錯誤,就非常危險。例如向內(nèi)道運動時轉(zhuǎn)向角是5°,但是由電動助力轉(zhuǎn)向ECu發(fā)往ESP-ECU的幀被讀錯為30°,則ESP幫助實現(xiàn)30°轉(zhuǎn)向,如ESP-ECU或電動助力轉(zhuǎn)向ECU發(fā)生離線故障,34.5 ms內(nèi)仍保留這30°的錯誤命令,就會沖向隔離帶或?qū)Ψ杰嚨馈?br /> 下面分析其概率:假定總線工作于500 kbps,總線負(fù)載率為40%,平均幀長為100位,那么每小時送7.2×106幀。筆者對參考文獻(xiàn)作了新的修正,得到錯幀漏檢概率為Pud=1.67×10-7,仍比Bosch的(Pud=4.7×10-11)高幾個數(shù)量級,與Tran的結(jié)果相近(Pud=1.3×10-7)。
如考慮通道錯概率=0.001(它考慮了誤碼率的不均勻分布,例如每1000幀錯1幀),那么可算出殘差率為Pres=1.67×10-10??伤愕玫?個故障造成的失效率Pfailure1=1.2×10-3/h。當(dāng)ber=0.001時第2個故障出現(xiàn)的概率P2nd=1×10-5,造成的失效率為Pfailure2=72/h。由此推斷2個故障先后出現(xiàn)時的失效率Pfailure1+2=1.1×10-3/h。
CAN總線已經(jīng)使用于安全攸關(guān)的系統(tǒng)中,例如電子穩(wěn)定控制系統(tǒng)(ESP)。按照道路車輛的功能安全國際標(biāo)準(zhǔn)ASIL-C的要求,系統(tǒng)的故障率應(yīng)小于10-7/h。這包括許多可能失效的因素,例如傳感器失效、CPU失效、接插件失效、電源失效等,甚至鏍釘未擰緊。通信系統(tǒng)分配的份額一般為1%,即要求達(dá)到小于10-9/h。由表1可知,錯幀漏檢與離線的故障都達(dá)不到。即使在ESP中,因連續(xù)發(fā)生2種故障而產(chǎn)生失效的概率也相當(dāng)大,只有在誤碼率小于10-4的情況下才能達(dá)到安全要求。實際的車內(nèi)環(huán)境很差,有的車廠為了節(jié)省費用,對電磁干擾源頭處理就不足,干擾可能引起較大的誤碼率。還有車外環(huán)境的影響,高壓線、大功率電臺、雷達(dá)站等附近的干擾就大。這都可能造成誤碼率大于10-4,使系統(tǒng)失效。
5 軟件補丁方案實現(xiàn)難點
在參考文獻(xiàn)中提出過添加額外的CRC檢驗來改善錯幀漏檢,對已有的應(yīng)用難以執(zhí)行。它要占用數(shù)據(jù)域,由應(yīng)用軟件生成和檢驗,這要耗費一定的時間,檢驗出錯誤后要另外發(fā)幀通知別的節(jié)點,以及要求重發(fā)。所有節(jié)點為取得一致性都得有計時器,大大延遲整個接收過程。出錯重發(fā)的時間也大于原CAN總線的時間,破壞了原調(diào)度分析的結(jié)果,因此需要重新進行認(rèn)證。
已有的應(yīng)用已經(jīng)采用8字節(jié)數(shù)據(jù)的,就需要拆分成2幀。需要增加標(biāo)識符,這要在接收節(jié)點增加或修改濾波的設(shè)置,還要增加合并機制。這都增加了軟件工作及其正確性的驗證工作,特別是涉及不同廠家的ECU時就更復(fù)雜了。
對等效離線問題,除了修改消極報錯幀分界符長度外,還可以用完全取消消極報錯狀態(tài)的方法:例如用市售CAN總線芯片出錯計數(shù)器達(dá)到96時的中斷,由應(yīng)用決定如何修改工作模式。新的模式可以是認(rèn)為通信已失效,便進入降額使用狀態(tài),同時復(fù)位通信,等一段時間再投入正
常運行。這種方案是將離線的時間變?yōu)槌A?,并讓?yīng)用知道。它并沒有減少離線的概率,只是可能減少一次離線的時間。
這種方案的問題是,從開始降額到實現(xiàn)降額的過程并不安全(沒有剎車,車并不立即降速)。另外,頻繁地在正常/降額模式間切換會引起消費者的不安,失去對車可靠性的信任感,對車廠是極為不利的。
由此可見,軟件補丁的方案對現(xiàn)有車的改進極為有限。
以上分析的CAN總線隱患完全是協(xié)議設(shè)計不周造成的,因此協(xié)議要改。把CAN總線的優(yōu)點繼承下來,物理層仍可沿用,線纜也不用改,甚至印刷版都不用改,用到安全攸關(guān)的場合仍可能是合適的。本文引用地址:http://butianyuan.cn/article/196159.htm
評論