CAN總線(xiàn)的局限
車(chē)內通信有兩個(gè)最基本的要求:一是數據內容正確;二是通信及時(shí),序列一致。對這兩點(diǎn),CAN總線(xiàn)中均有所設計,但仍存在著(zhù)不一致性、不可預測性、信道出錯堵塞等漏洞。
本文引用地址:http://dyxdggzs.com/article/201612/330370.htm
1)不一致性
CAN總線(xiàn)中有一個(gè)著(zhù)名的Last-But-One-Bit錯誤。CAN總線(xiàn)2.0A在信息認證(Message Validation)中規定:發(fā)送器驗錯的范圍可覆蓋到幀結束,如果發(fā)現錯誤,以后就按優(yōu)先權和狀態(tài)的規定重發(fā);接收器驗錯的范圍覆蓋到幀結束的前一位。因此,如果由于空間干擾、電源波動(dòng)等原因,對于幀的倒數第二位,一部分節點(diǎn)A認為無(wú)錯,一部分節點(diǎn)B認為有錯,即出現了所謂的Byzantine錯誤。這時(shí),根據EOF應該是7個(gè)隱性位,節點(diǎn)B認為這是一種形式錯誤,所以就會(huì )啟動(dòng)錯誤幀,通知發(fā)送器重發(fā),同時(shí)丟棄收到的幀。而認為沒(méi)錯的節點(diǎn)A由于只查到倒數第二位,因此就會(huì )接收此幀。如果在發(fā)送器例行的下一次發(fā)送前B通知的重發(fā)成功,A就會(huì )收到重復幀;如果重發(fā)不成功,B就丟了一幀。在轉向和制動(dòng)系統中,4個(gè)輪子對命令的不同理解,可能造成性能的下降或其他更嚴重的后果。
2)不可預測性
CAN總線(xiàn)將節點(diǎn)狀態(tài)分為Error Active、Error Passive和Bus Off三種,這三種狀態(tài)在一定條件下可以互相轉換。不同狀態(tài)中節點(diǎn)的發(fā)送有不同的延遲。最高優(yōu)先權的信息發(fā)送延遲有幾種可能:當節點(diǎn)狀態(tài)為Error Active時(shí),若總線(xiàn)空閑,則立即發(fā)送;當節點(diǎn)狀態(tài)為Error Active時(shí),如果其它幀正在發(fā)送,則需等正在發(fā)送的報文結束后,再過(guò)3位后發(fā)送;當節點(diǎn)狀態(tài)為Error Passive時(shí),它有一個(gè)出錯重發(fā)的要求,若沒(méi)有其它幀要發(fā)送,等3位傳送(Intermission)和8位掛起傳送(Suspend Transmission)后重發(fā);當節點(diǎn)狀態(tài)為Error Passive時(shí),若總線(xiàn)空閑,出錯后等別的信息發(fā)送完后再發(fā),等待時(shí)間與其它幀的長(cháng)度有關(guān);當節點(diǎn)狀態(tài)為Bus Off時(shí),需等狀態(tài)恢復到Error Passive或Error Active再發(fā)。
當確認某節點(diǎn)的狀態(tài)時(shí),還有幾個(gè)因素需要考慮:首先,節點(diǎn)由最高優(yōu)先權的信息和其他信息共用,因此,其他信息在傳送過(guò)程中出現的錯誤也會(huì )影響到節點(diǎn)狀態(tài);其次,進(jìn)入Error Passive或 Bus Off狀態(tài)的條件是發(fā)送錯誤計數器與/或接收錯誤計數器的值,由于CAN的原子廣播特點(diǎn),其它節點(diǎn)的發(fā)送錯誤或接收錯誤會(huì )開(kāi)啟一個(gè)錯誤幀,從而影響到該節點(diǎn)的接收錯誤計數器的值,進(jìn)而影響節點(diǎn)狀態(tài)。
對于優(yōu)先權較低的信息來(lái)說(shuō),發(fā)送時(shí)間的離散程度更大。在反饋控制系統中,采樣調節周期的大范圍抖動(dòng)相當于信號延遲后的變化,它有可能使系統性能下降或不穩定。在與安全相關(guān)的開(kāi)環(huán)系統中,抖動(dòng)可能造成動(dòng)作順序的混亂。
3)信道出錯堵塞
節點(diǎn)有可能受干擾或其它原因暫時(shí)或永久失效,出錯的主機會(huì )命令CAN收發(fā)器不斷發(fā)送消息,即所謂的Babbling Idiot錯誤。由于該信息的格式等均合法,因此CAN沒(méi)有相應的機制來(lái)處理這種情況。根據CAN的優(yōu)先權機制,比它優(yōu)先權低的信息就被暫時(shí)或永久堵塞。
由于CAN總線(xiàn)存在上述幾種根本的缺陷,因此,在更為嚴格的控制系統中,它將會(huì )造成巨大的風(fēng)險,無(wú)法滿(mǎn)足安全、環(huán)保、節能的要求。
CAN的事件觸發(fā)協(xié)議特點(diǎn)限制了ECU的應用、開(kāi)發(fā)與生產(chǎn),不僅用過(guò)的ECU難于重用,而且還不利于改善和開(kāi)發(fā)新的ECU。
一個(gè)成功的CAN應用僅在一定的條件下是有效的,簇內所有信息的優(yōu)先權配置、波特率、通信負荷(所有信息的出現頻率和長(cháng)度)都較為固定,任何一個(gè)參數的改變都會(huì )使通信的時(shí)域分布改變。因此,當需要改變車(chē)型時(shí),如果添加了新的功能,或是修改了閉環(huán)控制方案,ECU的所有基本功能就必須重新驗證,這使工作量大大增加,延遲了新車(chē)型的上市時(shí)間。同樣,對于提供零部件的廠(chǎng)商,同一ECU在不同汽車(chē)廠(chǎng)商的汽車(chē)上應用時(shí),可能不得不對某些參數進(jìn)行修改,這需要進(jìn)行重新的驗證和認證,增加了管理的復雜性,也增加了成本。
在事件觸發(fā)通信系統中,所有的應用都因優(yōu)先權規則而深深地耦合在一起。這一特點(diǎn)使得由不同的工作組對個(gè)別應用同時(shí)進(jìn)行設計、測試和認證的工作無(wú)法實(shí)現,這一點(diǎn)對期望成為質(zhì)量與技術(shù)進(jìn)步的汽車(chē)廠(chǎng)商來(lái)說(shuō)是難以容忍的。
另外,對CAN的各種改進(jìn)都難以實(shí)現向下的兼容性。自CAN總線(xiàn)問(wèn)世以來(lái),隨著(zhù)對CAN局限性的認識不斷加深,業(yè)界提出了各種改進(jìn)方案,這些方案采用標準的芯片,在底層協(xié)議上添加新的規定,使其具有分時(shí)通信的功能。如TTCAN、FTT_CAN ( Flexibly Time-Triggered CAN)、ServerCAN、TCAN (Timely CAN)、FlexCAN/SafeCAN 等。其中,TTCAN正在成為業(yè)界標準ISO11898-4。但是,這些改進(jìn)都要對原有的CAN協(xié)議進(jìn)行修改,例如出錯時(shí)不立即重發(fā),要將事件觸發(fā)的應用程序改為時(shí)間觸發(fā)的應用程序等。這些改動(dòng)都是新協(xié)議必備而老協(xié)議不具備的,因此,原有的帶CAN通信協(xié)議的ECU如果想要在新系統中應用,也就必須進(jìn)行修改。
CAN總線(xiàn)的另一個(gè)局限因素是傳送波特率,十多年前確定的1M波特率由于應用的飛速增加而變成瓶頸。從低速CAN總線(xiàn)、高速CAN總線(xiàn),以致將來(lái)不得不配置第二條高速CAN總線(xiàn),雖然這或許可以緩解速率問(wèn)題,但從全局看,總線(xiàn)數量的增加使布線(xiàn)、網(wǎng)關(guān)、系統復雜性都隨之增加。從技術(shù)角度上看,重新設計CAN收發(fā)器,提高傳送波特率是有一定可能的;但從技術(shù)經(jīng)濟角度上看,無(wú)法與現有產(chǎn)品相兼容就使這種局部改進(jìn)失去了意義。
評論