CAN匯流排的侷限

2021-06-27 17:41:55 字數 2702 閱讀 8153

can匯流排的侷限

can匯流排由博世公司於2023年開發,2023年成為標準,在近23年的時間裡獲得了巨大的成功,逐漸替代了其它相近的匯流排,2023年的節點採用量已超過1億。但是,曾經力推can匯流排的廠商,如寶馬、博世、飛利浦等,目前都開始支援新的匯流排。對於推動新匯流排研究的原因,x-by-wire的發展是一方面,但從根本上講,消費者的安全需求才是最重要的原因。根據新聞報道:在 can的發源地德國,2023年汽車拋錨事故中有35%是電子裝置引起的。因此,電子控制系統及其通訊系統的可靠性是乙個敏感的問題,即使沒有採用x-by-wire,仍然使用常規的液壓氣動機構,也需要一種更為可靠的新匯流排來代替can。車內通訊有兩個最基本的要求:一是資料內容正確;二是通訊及時,序列一致。對這兩點,can匯流排中均有所設計,但仍存在著不一致性、不可**性、通道出錯堵塞等漏洞。

不一致性

can匯流排中有乙個著名的last-but-one-bit錯誤。can匯流排2.0a在資訊認證(message validation)中規定:傳送器驗錯的範圍可覆蓋到幀結束,如果發現錯誤,以後就按優先權和狀態的規定重發;接收器驗錯的範圍覆蓋到幀結束的前一位。因此,如果由於空間干擾、電源波動等原因,對於幀的倒數第二位,一部分節點a認為無錯,一部分節點b 認為有錯, 即出現了所謂的byzantine錯誤。這時,根據eof應該是7個

隱性位,節點b認為這是一種形式錯誤,所以就會啟動錯誤幀,通知傳送器重發,同時丟棄收到的幀。而認為沒錯的節點a由於只查到倒數第二位,因此就會接收此幀。如果在傳送器例行的下一次傳送前b通知的重發成功,a就會收到重複幀;如果重發不成功,b就丟了一幀。在轉向和制動系統中,4個輪子對命令的不同理解,可能造成效能的下降或其他更嚴重的後果。

不可**性

can匯流排將節點狀態分為error active、error passive和bus of三種,這三種狀態在一定條件下可以互相轉換。不同狀態中節點的傳送有不同的延遲。最高優先權的資訊傳送延遲有幾種可能: 當節點狀態為error active時,若匯流排空閒,則立即傳送;當節點狀態為error active時,如果其它幀正在傳送,則需等正在傳送的報文結束後,再過3位後傳送;當節點狀態為error passive時,它有乙個出錯重發的要求,若沒有其它幀要傳送, 等3位傳送(intermission)和8位掛起傳送(suspend transmission)後重發;當節點狀態為erorpassive時,若匯流排空閒,出錯後等別的資訊傳送完後再發,等待時間與其它幀的長度有關;當節點狀態為bus of時,需等狀態恢復到eror passive或eror active再發。

當確認某節點的狀態時,還有幾個因素需要考慮:首先,節點由最高優先權的資訊和其他資訊共用,因此,其他資訊在傳送過程中出現的錯誤也會影響到節點狀態;其次,進入error passive或bus off狀態的條件是傳送錯誤計數器與/或接收錯誤計數器的值,由於can的原子廣播特點,其它節點的傳送錯誤或接收錯誤會開啟乙個錯誤幀,從而影響到該節點的接收錯誤計數器的值,進而影響節點狀態。

對於優先權較低的資訊來說,傳送時間的離散程度更大。在反饋控制系統中,取樣調節週期的大範圍抖動相當於訊號延遲後的變化,它有可能使系統效能下降或不穩定。在與安全相關的開環系統中,抖動可能造成動作順序的混亂。

通道出錯堵塞

節點有可能受干擾或其它原因暫時或永久失效, 出錯的主機會命令can收發器不斷傳送訊息,即所謂的babbling idiot錯誤。由於該資訊的格式等均合法, 因此can沒有相應的機制來處理這種情況。根據can 的優先權機制,比它優先權低的資訊就被暫時或永久堵塞。

由於can匯流排存在上述幾種根本的缺陷,因此,在更為嚴格的控制系統中,它將會造成巨大的風險,無法滿足安全、環保、節能的要求。

can的事件觸發協議特點限制了ecu 的應用、開發與生產,不僅用過的ecu難於重用,而且還不利於改善和開發新的ecu。

乙個成功的can應用僅在一定的條件下是有效的,簇內所有資訊的優先權配置、波特率、通訊負荷(所有資訊的出現頻率和長度)都較為固定,任何乙個引數的改變都會使通訊的時域分布改變。因此,當需要改變車型時,如果新增了新的功能,或是修改了閉環控制方案,ecu的所有基本功能就必須重新驗證,這使工作量大大增加,延遲了新車型的上市時間。同樣,對於提供零部件的廠商, 同一ecu在不同汽車廠商的汽車上應用時,可能不得不對某些引數進行修改,這需要進行重新的驗證和認證,增加了管理的複雜性,也增加了成本。

在事件觸發通訊系統中,所有的應用都因優先權規則而深深地耦合在一起。這一特點使得由不同的工作組對個別應用同時進行設計、測試和認證的工作無法實現,這一點對期望成為質量與技術進步的汽車廠商來說是難以容忍的。

另外,對can的各種改進都難以實現向下的相容性。自can匯流排問世以來,隨著對can侷限陛的認識不斷加深,業界提出了各種改進方案,這些方案採用標準的晶元,在底層協議上新增新的規定,使其具有分時通訊的功能。如ttcan、ftt_can(flexibly time-triggered can)、servercan、tcan(timely can) flexcan/safecan 等。其ttcan正在成為業界標準iso11898-4。但是,這些改進都要對原有的can協議進行修改,例如出錯時不立即重發,要將事件觸發的應用程式改為時間觸發的應用程式等。這些改動都是新協議必備而老協議不具備的,因此,原有的帶can通訊協議的ecu如果想要在新系統中應用,也就必須進行修改。

can匯流排的另乙個侷限因素是傳送波特率,十多年前確定的1m波特率由於應用的飛速增加而變成瓶頸。從低速can匯流排、高速can匯流排,以致將來不得不配置第二條高速can匯流排,雖然這或許可以緩解速率問題,但從全域性看,匯流排數量的增加使佈線、閘道器、系統複雜性都隨之增加。從技術角度上看,重新設計can收發器,提高傳送波特率是有一定可能的,但從技術經濟角度上看,無法與現有產品相相容就使這種區域性改進失去了意義。

can匯流排學習(一) 初識can匯流排

can匯流排最初由德國bosch公司為汽車檢測 控制系統而設計的。1993年can成為國際標準iso11898 高速應用 和iso1119 低速應用 can的規範從can1.2規範 標準格式 發展為相容can1.2規範的can2.0規範 can2.0a為標準格式,can2.0b為擴充套件格式 目前應...

初學CAN匯流排

初學can 匯流排,之前用的是 rs485 485 中沒有匯流排仲裁的概念,如果匯流排上有十個節點,要事先算好每組資料的傳送用時,調好時間延遲,逐個排隊傳送。而 can匯流排可以把多個節點的資料都送到本站的 can晶元,並處於準備狀態,等待匯流排空閒時,向匯流排傳送資料,由匯流排仲裁哪乙個節點優先傳...

can匯流排配置

can 匯流排配置 在linux 系統中,can匯流排介面 裝置作為網路裝置 被系統進行統一 管理。在控制 台下,can匯流排 的配置和以 太網的配置使用相同的 命令。在控制台 上輸入命令 ifconfig a 可以得到以下結果 can0 link encap unspec hwaddr 00 00...