汽車CAN總線關閉故障的診斷與恢復
從改革開放到現在,汽車產業對我國經濟發展產生巨大的推動,對社會進步產生了深遠的影響,逐漸成為了我國的支柱行業。近幾年來,隨著科技發展的日新月異,汽車上電子控制裝置越來越多,汽車音響,電子儀表,空調控制器,電噴發動機,BCM,ABS等等ECU在車內形成了巨大的網絡系統,按照傳統的布線模式,電線的錯綜復雜對汽車的電氣控制及系統實時網絡通信帶來重重困難,CAN總線網絡的出現,大大簡化了綜合布線,很好的解決了系統間的信息交互與共享,在汽車電子技術的普及應用取得了重大進步。
Can-Bus總線技術是“控制器局域網總線技術(Controller Area Network-BUS)”的簡稱,它具有極強的抗干擾和糾錯能力,最早被用于飛機、坦克等武器電子系統的通訊聯絡上。
雖然CAN總線有著非常高的穩定性,然而,一旦出現錯誤尤其是CAN總線關閉,對于汽車的整體功能甚至安全性都造成極大影響。為此,在汽車行業高速發展,電子與通信技術廣泛應用的今天,如何檢測汽車網絡故障的發生,如何修復故障,使我們能夠保證穩定和安全的應用CAN網絡技術服務于汽車產業,形成了本文研究的背景和意義。
2 汽車CAN總線網絡技術的概述
2.1 CAN總線網絡簡介
在八十年代,CAN總線是由德國博世公司研究開發而成一種串行通信協議,而今形成了CAN技術規范2.0,包括支持11位地址標準幀的2.0A版本,和支持11位地址標準幀與29位地址擴展幀的2.0B版本。它的出現解決了汽車內部多個微控制器進行實時數據交互的問題。在物理層上,通信介質一般是雙絞線,也可以使同軸電纜或光纖。CAN總線的技術有以下特點。
1)是多主系統。
2)最高波特率達到1 Mbit/sec。
3)是短幀結構(每條報文最多8字節數據)。
4)有錯誤檢測與處理機制。
5)有數據校驗,幀內應答。
6)是總線型拓撲結構。
7)是廣播發送。
8)具有基于優先級的總線仲裁機制。
2.2 車內CAN總線網絡拓撲示例圖
車內CAN總線網絡拓撲示例圖見圖1。
2.3 CAN(高速)總線通信物理電平信號
CAN總線采用CAN_H與CAN_L的差分信號進行通信,顯性位為邏輯0,隱性位為邏輯1,并通過“線與”的機制決定總線電平。
2.4 CAN幀類型
CAN總線的幀類型包括:數據幀,遠程幀,幀間空間,錯誤幀,超載幀。其中總線關閉的故障就是由錯誤幀引起的。
2.5 CAN總線可檢測的錯誤類型
1)位錯誤:節點檢測到的位與自身送出的位數值不同。在仲裁或ACK位期間送出“隱性”位,而檢測到“顯性”位不導致位錯誤。
2)填充錯誤:在使用位填充編碼的幀場(幀起始至CRC序列)中,不允許出現六個連續相同的電平位。
3)CRC錯誤:節點計算的CRC序列與接收到的CRC序列不同。
4)格式錯誤:固定格式位場(如CRC界定符、ACK界定符、幀結束等)含有一個或更多非法位。
5)ACK錯誤:發送節點在ACK位期間未檢測到“顯性”位。
其中發送節點能檢測到的錯誤有位錯誤、格式錯誤、ACK錯誤。而接收節點能檢測到的錯誤有填充錯誤、格式錯誤、CRC錯誤。CAN控制器與收發器在檢測到錯誤時,會發出錯誤幀,通報到總線上發送或接收報文錯誤。
由于CAN總線有著極高的穩定性,所以網絡出現錯誤而又不被檢測到的機會極低。假如一個高速CAN以500kbps的速率進行通信,總線的負載為25%,每年按照2000小時來算,那么至少要1000年才會漏檢一個錯誤。
3 汽車CAN總線關閉問題的成因分析
3.1 CAN總線關閉
CAN控制器可以判斷出錯誤的類型是總線上暫時的數據錯誤(如外部干擾等)還是持續的數據錯誤(如單元內部故障、驅動器故障、斷線、短路等)。由此,當總線上發生持續數據錯誤時,CAN控制器內部的錯誤計數器累積到總線關閉的閥值,可將引起此故障單元從總線上隔離出去,不參與跟總線其他節點的網絡通信。
3.2 CAN(高速)總線常見物理故障分析
對于CAN總線常見的物理故障,主要是CAN線路產生的。其中包括:
1)CAN_H開路。
2)CAN_L開路。
3)CAN_H對VBAT短路。
4)CAN_L對GND短路。
5)CAN_H對GND短路。
6)CAN_L對VBAT短路。
7)CAN_H對CAN_L短路。
8)CAN_H和CAN_L開路。
9)終端電阻開路。如圖4。
但是根據ISO11898標準,CAN收發器具有一定的容錯性能。因此,并不是每一種CAN線路的故障都會導致CAN總線關閉問題的發生。以上述高速CAN網絡為例,除了4)CAN_L對GND短路和9)終端電阻開路是可以自身容錯外,其他線路故障都會存在引發CAN總線關閉問題的可能性。 造成CAN總線關閉的物理層因素,除了CAN線路的故障,還有可能是CAN控制器或收發器等元器件出現了故障,導致該CAN節點無法通信。另外,也有可能因為CAN總線信號的干擾,使得CAN信號的收發不能正確,尤其是不能正常發送報文,容易導致CAN總線關閉。
3.3 CAN總線軟件錯誤計數分析
CAN網絡上每個節點都含有REC(接收錯誤計數器)和TEC(發送錯誤計數器)。當接收錯誤產生時,REC增加;正確接收到數據幀,REC減少;當發送錯誤產生時,TEC增加;正確發送一幀數據幀,TEC減少;REC、TEC的數值會引發節點狀態改變。
CAN網絡節點存在三種狀態:
1)主動錯誤,能正常的進行總線通信,錯誤產生時,發送主動錯誤幀。
2)被動錯誤,能夠進行總線通信,錯誤產生時,發送被動錯誤幀。
3)總線關閉,不能收發任何報文。
特殊案例:如果總線上只有一個節點,該節點發送數據幀后得不到應答,TEC最大只能計到128,即節點只會進入被動錯誤狀態而不會進入總線關閉狀態。
4 汽車CAN總線關閉的故障記錄與恢復建議
4.1 CAN總線關閉的故障診斷與記錄
診斷規范描述了一系列的診斷服務,定義ECU與診斷儀之間的請求響應規則、ECU對于請求報文的處理行為以及請求、響應報文信息含義。常用的診斷規范包括有UDS,KWP2000以及ISO15765等協議。其中記錄和讀取診斷故障碼(DTC)就是診斷的一項重要工作,網絡節點單元把曾經或現在發生的相關故障碼都保存在非易失性存儲器(NVM)中,隨時方便于汽車工程師檢查故障記錄。
我們對于CAN總線關閉故障的診斷流程是,CAN控制器在錯誤中斷里或者在周期性的查詢里,檢查BUS OFF寄存器的值,如果CAN控制器發生了BUS OFF,這個寄存器的值就會被賦真值。此時,CAN診斷模塊會把BUS OFF的DTC狀態中的Test Failed位給置上,表示當前檢查CAN總線關閉故障是存在的,即CAN網絡通信處在失效模式,同時把BUS OFF的記錄次數加1。當BUS OFF的記錄次數達到整車廠規定的閥值時,CAN診斷模塊會DTC狀態中的Confirmed位給置上,同時把CAN總線關閉的DTC記錄到非易失性存儲器中。
4.2 CAN總線關閉的恢復建議
我們的CAN診斷模塊在錯誤中斷或周期性查詢中發現總線關閉故障時,應該立即對CAN控制器的驅動及相關寄存器進行初始化操作,這樣,在初始化完成后,CAN總線關閉的故障能夠立即被解除。但是,該CAN節點在解除總線關閉故障后,會繼續對外發送報文,如果此時產生總線關閉的真正外部因素沒有解除,該CAN節點仍有機會再次發生總線關閉的故障。
為了避免該節點在CAN網絡中頻繁發生總線關閉的問題,防止影響到網絡資源的消耗和對其他節點的不必要干擾,我們建議在CAN初始化完成后,不要立即對外發送CAN報文,應該等待一定時間段后再嘗試發送報文是否成功。
5 結論
汽車CAN總線關閉故障發生時,應分析物理層包括CAN線路、CAN控制器及收發器、CAN信號干擾等外在因素,同時分析CAN寄存器及軟件處理,重新初始化CAN驅動和恢復正常后,定時嘗試往外發送報文。CAN總線關閉嚴重影響到整車的功能與安全性,我們通過對故障的成因分析,提出合理的完善建議,希望能對汽車電子技術的健康發展起到一定的作用。
參考文獻
[1]恒潤科技,CAN規范2.0.2007.
[2]國際標準化組織,ISO14229.2006.
[3]國際標準化組織,ISO11898.2006.
評論