關(guān)于CAN隱患的爭辯
現在大家都認識到引入消極報錯狀態(tài)是一個(gè)積極的措施,對此并無(wú)異議。而bosch只看到故障約束機制設計的有利方面,未注意到它在幀同步上造成通信服務(wù)缺失的后果。在聲明中對此只字未提。那么通信服務(wù)缺失的后果是否是一個(gè)故障或bug?這應該由用戶(hù)根據其對應用是否有害來(lái)確定,并不能因把它稱(chēng)為“特色”而改變。進(jìn)一步研究表明存在后果嚴重的可能性?;镜木€(xiàn)索是:車(chē)內存在嚴重的電源傳導干擾(ISO7637干擾類(lèi)型D→CAN收發(fā)器在電源跌落時(shí)CANH― CANL差減少,會(huì )有寫(xiě)“0”讀回“1”的bit錯→CAN協(xié)議發(fā)現錯后發(fā)報錯幀的規定(即能重復發(fā)報錯幀)→CAN協(xié)議在報錯標志中發(fā)現bit錯時(shí)出錯計數器+8的規定。一個(gè)較長(cháng)時(shí)問(wèn)跌落就可以將節點(diǎn)推入消極報錯狀態(tài)(消極報錯狀態(tài)并非罕見(jiàn))。然后一次本地故障把它推入失去服務(wù)能力的狀態(tài)。CAN總線(xiàn)失去服務(wù)后對應用的危害的仿真已有文章報道,如在彎道上的外沖或急轉。而故障約束機制設計上的這個(gè)bug是造成這一危險的因素中的關(guān)鍵一環(huán)。
失去服務(wù)能力的后果破壞了實(shí)時(shí)控制應用的基礎――正時(shí)性(timeliness)?,F在許多應用只容許少量數據的丟失,而且能容許數據丟失的應用已經(jīng)考慮了消息的冗余,若要考慮這樣長(cháng)時(shí)間的失去服務(wù)能力,數據的冗余就要多得更多,這將顯著(zhù)增加總線(xiàn)上的流量。要考慮這個(gè)bug,又要符合Bosch的50%的限制,使應用進(jìn)入更加為難的境地。
安全標準IEC61508、EN50159將在汽車(chē)行業(yè)推行,在執行這類(lèi)標準時(shí)要從可靠性角度作故障的危害與風(fēng)險分析。由于一個(gè)小故障會(huì )引起一個(gè)元件出錯或失效,元件的錯或失效造成部件出錯或失效,然后造成子系統出錯或失效,從而造成更上一層系統出錯或失效。必須分析清楚這個(gè)鏈并研究其出錯或失效的概率,才能判斷這個(gè)最原始的錯是否會(huì )對安全構成威脅。CAN的這個(gè)故障是引起系統失效的一個(gè)非常典型的故障。在一般通信系統中,一個(gè)本地錯引起1幀的丟失,如該應用上可容忍,失效的后果到此為止。然而CAN的這個(gè)故障有可能引起100個(gè)左右不同接收幀的丟失。不僅如此,它使該節點(diǎn)的所有幀都暫時(shí)不能發(fā)送,也就是說(shuō)會(huì )影響到其他的控制系統的功能。例如,對CAN總線(xiàn)掛上ECU節點(diǎn)的不同方案,不能發(fā)送發(fā)動(dòng)機轉速信號就會(huì )影響變速器、ABS、ASR、空調,輪速信號不能發(fā)送就可能影響電噴、變速器、ASR,變速比信號不能發(fā)送就會(huì )影響到電噴、ASR、廢氣再循環(huán),含有網(wǎng)關(guān)的儀表板單元不能正常發(fā)送可能引起發(fā)動(dòng)機不能點(diǎn)火。也就是說(shuō),由一個(gè)本地故障轉為一個(gè)節點(diǎn)失效,然后又轉為若干個(gè)功能失效。有些功能的失效會(huì )影響能耗或排放,或使設備運行不平穩,但有的功能會(huì )影響制動(dòng)和轉向。
CAN總線(xiàn)失去服務(wù)能力會(huì )導致控制系統的失效。車(chē)輛是一個(gè)運動(dòng)的物體,控制系統的失效會(huì )變?yōu)檫\動(dòng)的失控,從而引起安全問(wèn)題。這對所有人都是沉重的壓力,采取審慎與觀(guān)望的態(tài)度是符合情理的,但如果CAN失去服務(wù)能力的過(guò)程存在,這個(gè)后果是回避不了的。
Bosch對惡性后果并未提及,這表示他們并未意識到這一點(diǎn)。參考文獻[1]提到,這一等效離線(xiàn)或真正離線(xiàn)的開(kāi)始源于消極報錯狀態(tài)節點(diǎn)的消極報錯幀沒(méi)有足夠的時(shí)間結束。但可能的情景遠超過(guò)Bosch在CAN2.O規范中的描述,如果他們原來(lái)就已知有如此多的情景,就會(huì )把這些情景都包括在CAN2.O中。他們也沒(méi)有提醒過(guò)作調度分析工具軟件的人們,由于任何優(yōu)先級的消息在此隱患發(fā)作時(shí)都失去服務(wù)能力,且進(jìn)入消極報錯狀態(tài)不是罕見(jiàn)的事,那么調度的效果就很小了 ――木桶的底是漏的,其余板長(cháng)短的影響已退居次要地位甚至失去意義。bug影響了工具理論基礎的完整性,調度的結果不能保證,就不能最終保障控制功能的實(shí)現。網(wǎng)上尚未見(jiàn)到Bosch有任何關(guān)于節點(diǎn)因故障約束機制設計而推遲收發(fā)的類(lèi)似這次聲明的報道。因此,由于未充分預計到故障會(huì )引起如此壞的后果,只能說(shuō)這是一個(gè)bug。
實(shí)際上,消極報錯狀態(tài)下出現壞后果及失去服務(wù)能力的毛病是可以克服的。參考文獻[1]提出了2種方法,也是Bosch聲明提到的2種方法。其實(shí)還存在其他可能的解決方案,例如將消極報錯幀分界符內的顯位不視為錯而視為超載幀的請求。此時(shí)經(jīng)超載幀與其他節點(diǎn)的報錯幀重合,可以使消極報錯狀態(tài)節點(diǎn)迅速和其他節點(diǎn)取得同步,但這樣做犧牲了超載幀占用的帶寬,并使其他節點(diǎn)蒙受一次出錯的不白之冤。所以參考文獻[1]提出的是較好的方案。在保持引入消極報錯狀態(tài)的優(yōu)點(diǎn)時(shí)不必死抱
它的缺點(diǎn)。失去服務(wù)能力的問(wèn)題得以避免,由于這個(gè)因素造成的對CAN消息負載率的限制也可減少,這樣對大多數人都有好處。
已有的大量CAN應用,特別是那些現場(chǎng)條件較好,本身并非安全攸關(guān)的應用(即使在汽車(chē)內,也有許多節點(diǎn)與安全關(guān)系不大),對CAN隱患的討論不要恐慌,只需對自己的環(huán)境和應用作評估,必要時(shí)補充作些測試即可。
對CAN隱患的討論并不是要全面否定CAN。盡管CAN尚有其他問(wèn)題與不足,甚至較為嚴重的問(wèn)題,但它仍然是當前最好的協(xié)議。CAN最突出的優(yōu)點(diǎn)是出錯自動(dòng)重發(fā)功能。很久以來(lái),關(guān)于事件觸發(fā)協(xié)議與時(shí)間觸發(fā)協(xié)議孰優(yōu)孰劣的討論中人們傾向于認為時(shí)間觸發(fā)協(xié)議更為可靠,后者更適用于線(xiàn)控系統。但是研究表明,由于出錯自動(dòng)重發(fā)功能的存在,CAN的消息不正確概率比重復送2次消息的TTCAN小幾個(gè)數量級。有理由相信時(shí)間觸發(fā)的其他協(xié)議也會(huì )在類(lèi)似的比較中顯得遜色,除非它們采用更為復雜的上層糾錯措施。上述bug使CAN的這一巨大性?xún)r(jià)比優(yōu)勢變得無(wú)用,所以對CAN進(jìn)行改進(jìn)是非常有價(jià)值的?,F在誰(shuí)作改進(jìn),誰(shuí)就能解決當前的急需,也就有機會(huì )在未來(lái)勝出,這是一個(gè)重新洗牌的機會(huì )。這一爭辯由于Bosch的聲明而使事情變得明朗,國際國內對此作出自己的結論的時(shí)間已經(jīng)同步。
綜合上述分析,筆者依然認為它是一個(gè)隱患。對我國IC、ECU、整車(chē)廠(chǎng)來(lái)說(shuō),必須加以重視并及時(shí)采取行動(dòng)。決策是一個(gè)博弈的過(guò)程,落后將動(dòng)搖消費者的信任,導致十分被動(dòng)的境地。本文引用地址:http://dyxdggzs.com/article/158010.htm
評論