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