汽車內部掛有很多的ECU節點,當其中一個節點發生故障進入總線關閉狀態時,會很大程度上影響整車CAN網絡的通訊。例如,當汽車發生碰撞時,傳感器將電信號傳送給安全氣囊ECU,將信號進行處理,當確定需要打開安全氣囊時,ECU會立即發出點火信號,氣體發生器才會充滿氣囊,對駕駛員和乘客提供安全保護,如下圖1所示。若此時安全氣囊ECU處于總線關閉狀態,則無法正常彈出氣囊,會導致嚴重后果。
圖1 ECU工作示意圖
因此,對于新能源汽車行業工程師,了解CAN總線Bus Off原理是非常有必要的。CAN控制器可以判斷出錯誤的類型是總線上暫時的數據錯誤(如外部干擾等)還是持續的數據錯誤(如單元內部故障、驅動器故障、斷線、短路等)。由此,當總線上發生持續數據錯誤時,CAN控制器內部的錯誤計數器累積到總線關閉的閾值,可將引起此故障單元從總線上隔離出去,不參與跟總線其他節點的網絡通信。如圖2所示:
圖2 錯誤檢測機制
哪些因素會導致CAN總線Bus Off?
引起錯誤的原因大多是由物理故障引起的,主要是CAN線路產生的。其中包括:CAN_H開路、CAN_L開路、CAN_H對CAN_L短路/開路、CAN_L對VBAT短路、CAN_H對GND短路、CAN_L對GND短路、終端電阻開路等。
除了物理層線路因素,還有可能因為CAN控制器或收發器等元器件故障導致。同時,也有可能是由于CAN總線信號干擾導致的CAN信號收發不正確,嚴重時會導致不能正常發送報文,從而更容易導致CAN總線關閉。
例如,新能源汽車通常是指純電動汽車或者混合動力汽車,其特色是使用電池、電容來存儲能力,然后通過逆變的方式變成交流,帶動電動機驅動車輛。逆變產生的巨大電流形成強干擾,串擾到CAN總線上,導致控制器死機、損壞或者通訊中斷,車輛運行不穩定。詳情請關注公眾號【車端】
CAN總線Bus Off恢復的解決方案
如果出現了Bus Off,總線上的節點需要做一些動作,例如重啟CAN控制器或是重新上電,但是這些都只是一些補救措施,最根本的還是需要找到引起Bus Off的根源。
當發生CAN總線關閉時,我們可以檢查Bus Off寄存器的值,對CAN控制器的驅動及相關寄存器進行初始化操作。初始化完成后,CAN總線關閉故障就會立即解除。為了避免該節點在CAN網絡中頻繁發生總線關閉問題,建議在初始化后,不要立即對外發送CAN報文。
從下圖所示可以看出,當節點進入總線關閉狀態后,如果MCU僅是開啟自動恢復功能,CAN控制器在檢測到128次11個連續的隱性位后即可恢復通信,在實際的CAN通信總線中,這一條件是很容易達到的。我們已經知道,當進入總線關閉狀態時,節點已經發生了嚴重的錯誤,處于不可信狀態,如果迅速恢復參與總線通信,具有較高的風險,因此實際應用中,往往會通過MCU對CAN控制器總線關閉狀態的恢復過程進行編程處理,以控制節點從總線關閉狀態恢復到錯誤主動狀態的等待時間,如圖4所示,具體包括“快恢復”和“慢恢復”策略,兩種策略一般同時應用。
圖3
上文也提到過,由于汽車內部存在強干擾,也會導致CAN總線關閉。針對這種現象,我們通過以下方式進行處理:
由于汽車內部存在強電流產生的空間磁干擾,應該將CAN線纜雙絞程度加大;
CAN接口設計采用CTM1051隔離收發器、隔離限幅,防止ECU死機;
CAN接口增加磁環、共模電感等效果好的感性防護器件;
外接專用的信號保護器消除干擾,如ZF-12Y2;
使用網橋中繼設備CANBridge對部分強干擾源進行隔離。
綜合上述,汽車CAN總線關閉故障發生時,應分析物理層包括CAN線路、CAN控制器及收發器、CAN信號干擾等外在因素,同時分析CAN寄存器及軟件處理,重新初始化CAN驅動和恢復正常后,定時嘗試往外發送報文。
審核編輯:郭婷
-
收發器
+關注
關注
10文章
3454瀏覽量
106240 -
控制器
+關注
關注
112文章
16445瀏覽量
179429 -
CAN總線
+關注
關注
145文章
1955瀏覽量
131086
原文標題:CAN總線Bus Off原理
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論