作者 | 蒹葭小編 | 吃不飽
CAN幀有多種格式,錯誤幀作為CAN幀中獨特的一種,了解其作用,類型與產生原因,對于進行測試以及開發有很大的幫助,本文將對錯誤幀的相關基礎知識以及后續的分析排查進行介紹。
01錯誤幀的基礎知識錯誤幀的作用錯誤幀是CAN總線用于進行錯誤通知的報文,可以將任何一個節點發現的錯誤通知給其他節點,包括發送節點;進而丟棄錯誤的報文,發送節點再進行報文的重新發送,保證傳遞信息的準確性。
錯誤類型
圖1CAN的分層體系結構
首先,如上圖所示,按照分層的理念,CAN的錯誤檢測和錯誤信號的發送都處于二層,即數據鏈路層,因此,錯誤檢測所檢測的報文也是檢測數據鏈路層的報文。其次,當總線上的幀出現錯誤時,節點就會發出錯誤幀,而錯誤也有多種類型:
位錯誤
位錯誤是發送節點在發送數據,進行回讀,檢測到總線上的數據與自身發出的數據不同時,發出的錯誤。由于CAN的仲裁機制和ACK應答機制,在仲裁場和ACK處發出隱性位,而回讀到顯性位時并不會認為是位錯誤。圖2位檢測
格式錯誤
格式錯誤是在固定格式的位場處檢測到非法位,例如:ACK界定符固定是一個隱性位,若檢測到顯性,就認為是格式錯誤。圖3格式檢測
ACK錯誤
發送節點在自身發送的報文的ACK位檢測到隱性時,會認為沒有其他節點接收到此條報文,即為ACK錯誤。圖4ACK檢測
填充錯誤
CAN的填充機制是每檢測到5個連續相同的位時,即填充一個相反的位,以提供足夠的跳變沿來進行同步,當在總線上有報文時,檢測到連續的6個相同的位時,即認為是填充錯誤。圖5填充檢測
CRC錯誤
接收節點接收到的CRC序列與發送節點發送的CRC序列不同時,即識別為CRC錯誤。圖6CRC檢測
錯誤幀的類型
上文已經說了CAN錯誤的類型,當檢測到錯誤時,就會有錯誤幀發出,處于不同錯誤狀態的節點,所發送的錯誤幀格式是不同的。從錯誤的角度分析,節點有三種不同的狀態,分別是主動錯誤狀態,被動錯誤狀態和總線關閉狀態。并有兩種不同的錯誤計數器,分別是接收錯誤計數器REC和發送錯誤計數器TEC。當節點檢測到錯誤時,會發出錯誤幀,并增加錯誤計數器的值,根據錯誤計數器的值,節點會進入不同的狀態。具體的計數算法參照 ISO 11898-1。圖7節點狀態轉換圖
當TEC和REC的值都小于128時,節點處于主動錯誤狀態時,節點發送的錯誤幀由6個顯性位(主動錯誤標志)加8個隱性位(錯誤界定符)組成,共14位。一個節點發出錯誤幀,其他節點識別到后會跟著發出錯誤幀,由此機制,將一個節點檢測到的錯誤通知給其他節點,也能防止其他節點接收到錯誤的報文。當TEC或REC大于127時,節點處于被動錯誤狀態時,節點發送的錯誤幀由6個隱性位(被動錯誤標志)加8個隱性位(錯誤界定符)即14個連續的隱性位組成,當處于被動錯誤狀態的節點在接收報文時檢測到錯誤進而發出的錯誤幀,一定會被正常的報文或者其他節點的錯誤幀覆蓋掉。只有當處于被動錯誤狀態的節點在主動發出報文,發出的錯誤幀才會被其他節點正常檢測到并觸發其他節點發出錯誤幀。當TEC大于255時,節點處于總線關閉狀態(busoff)時,節點會停止收發報文,直到有用戶請求(如:重啟)或總線連續128次出現11個連續的隱性位時,節點重新恢復到主動錯誤的狀態。總線關閉狀態主要是為了防止一個節點出現故障或持續被干擾時,不斷發出錯誤幀,從而影響其他節點的正常收發報文。
綜上,錯誤幀按具體格式分類只有兩類,即6個顯性0 + 8個隱性1和6個隱性1 + 8個隱性1兩種。當一個節點連續檢測到多個錯誤,進入到被動錯誤模式時,此時很有可能是此節點出了問題或者受到干擾,這個時候這個節點檢測出的錯誤可能已經不被信任,所以處于被動錯誤模式的節點發出的錯誤幀是14個隱性位,可以被正常報文或正常的錯誤幀覆蓋掉。
02實車上出現錯誤幀的主要原因
對于實車而言出現錯誤幀主要可能是因為以下幾種原因:終端電阻不匹配:終端電阻用以匹配電纜的阻抗特性,減少信號的反射,當終端電阻與總線的阻抗不匹配時,產生的反射現象就會較為嚴重,影響結果。
總線電阻75Ω總線電阻40Ω總線電阻60Ω圖8 不同電阻對波形的影響
電容對波形的影響:電容不匹配會影響電平上升下降沿的時間,進而影響采樣時的結果。總線電容過大,會導致放電時間增加,下降沿時間會增加,影響最后采樣的結果。
圖9 不同電容對波形的影響
支線長度的影響:支線長度過長,會對總線的阻抗匹配產生影響,形成的反射也會更嚴重,進而影響總線上的波形。采樣點不合適的節點。當總線上的節點的采樣點位置設置的不一致,有可能會出現錯誤幀。電磁干擾比較大的電源,較大的電磁干擾會影響總線的波形,進而影響總線上的報文,出現錯誤幀。
總結:實車上出現錯誤幀一般是波形較差,波形的波動,進而影響采樣的結果,出現錯誤幀。
03錯誤幀的排查方法示例
進行錯誤幀的原因排查,觀察錯誤幀的類型等信息,可借助Vector公司軟件工具CANoe、示波器、萬用表等。在CANoe的Trace窗口中可以看到報文的詳細信息,錯誤類型等。實車上出現錯誤幀時,綜合出現錯誤幀的原因,如下部分典型排查方法可以參考。
先判斷終端節點是否在線,加載DBC來判斷是否有終端節點的報文,或者用萬用表測量終端電阻阻值是否正確。
圖10 判斷節點是否在線
確認錯誤幀出現的頻率,是否為周期型或僅在固定的時間段內出現。
排查錯誤幀出現時,對應的報文是否有固定的ID,或者是固定的節點。
根據錯誤幀的信息排查,是否與正常報文相關;同時再結合重傳和報文的優先級綜合分析。
圖11 優先級對錯誤幀的影響
04結語
通過上述的介紹,相信讀者對于錯誤幀的類型和原因有了一定的了解。對于測試而言,了解錯誤幀的類型,進而分析錯誤出現的原因,對于測試中出現的問題以及對測試結果的分析,都是可以參考的方法。北匯信息專注于汽車電子網絡通信、診斷刷寫、邏輯功能測試開發服務,期待進一步溝通交流、共享合作的機會。
-
CAN
+關注
關注
57文章
2769瀏覽量
464385 -
總線
+關注
關注
10文章
2903瀏覽量
88396
發布評論請先 登錄
相關推薦
評論