作者 |Dawnfly
小編 | 不吃豬頭肉
引言
CAN(Controller Area Network)協議是當前使用最普遍的車載通信協議之一,其優點不只體現在多主并行、最高達1Mbit/sec的傳輸速率(針對標準CAN)、基于優先級的仲裁機制以及廣播發送的短幀結構,還體現在其錯誤檢測機制上。通過總線數據以及總線波形來分析總線故障時,CAN協議錯誤檢測機制中豐富的錯誤幀類型能讓定位問題的效率更高。錯誤幀是CAN協議進行錯誤報告的方式,可以將總線上任何一個節點發現錯誤的信號通知給其他節點。作為一名總線測試工程師,在日常測試過程中不可避免的會接觸到錯誤幀,因此了解錯誤幀的作用、類型與產生原因,對于測試工作的順利開展有很大的幫助。
CAN錯誤幀格式
圖1 錯誤幀通用格式
CAN錯誤幀通用格式如上圖1所示,主要包括錯誤標志和錯誤界定符兩個部分,其形成的原理以及作用如下:
錯誤標志
出現錯誤后若CAN節點處在主動錯誤階段則發送6個連續顯性位,在被動錯誤階段則發送6個連續隱性位。由于6個連續相同的位違背了位填充規則會引發填充錯誤,會使其他節點也發送錯誤標志,因此,一個錯誤標志通常由兩個連續6位的信號組成,由于會存在錯誤標志的重疊,所以錯誤標志的長度會在6-12位的范圍。
錯誤界定符
錯誤界定符由8個連續隱性位組成,所有節點在發送錯誤標志后,都會向總線發送1個隱性位,若檢測到總線上該位為隱性,則發送剩下的7個隱性位。
CAN錯誤幀分類
CAN錯誤幀根據產生錯誤的節點類型可以分為發送錯誤和接收錯誤兩大類,根據錯誤產生的原因則可以分為位錯誤、填充錯誤、ACK錯誤、格式錯誤以及CRC錯誤,下圖2為各類錯誤幀所檢測范圍的分布。
圖2 錯誤檢測分布
位錯誤:回讀總線位狀態與自身發送的位不同,發送節點發送錯誤幀,需要注意仲裁段和ACK位發送隱性位但是回讀到顯性位除外。
填充錯誤:違反位填充規則,發送節點在發送報文時遇到5個相同極性位后需要插入1個極性相反的位,接收節點再接收報文時則需要刪除填充位。如果接收到的報文存在6個相同極性的位,則第6個位便是出現了填充錯誤,需要在該位后發送錯誤幀。
ACK錯誤:當發送節點發送報文后,在ACK位沒有在總線上檢測到其他節點發送的顯性電平。
格式錯誤:固定格式位場(如CRC界定符、ACK界定符、EOF等)與協議標準定義的顯隱性不同則會被檢測為非法位觸發格式錯誤,發送和接收節點都會發送錯誤幀。
CRC錯誤:接收節點計算的CRC序列與接收到報文中的CRC序列不同。
錯誤幀的表現形式
圖3 實驗環境配置
為了更直觀的展示各種錯誤幀類型,搭建了如圖3所示的實驗環境,以VN1630為發送節點,VH6501為接收節點,結合VH6501的報文干擾功能制造各類錯誤幀。
1. 發送錯誤
位錯誤
如圖4所示,用VH6501干擾發送節點仿真報文的SOF位后,SOF位出現位錯誤,在Bit0開始發送錯誤幀,接收節點在Bit5檢測到存在6個連續的隱性位,觸發填充錯誤。
圖4 位錯誤報文示例
ACK錯誤
按照CAN協議的規定,在一幀報文發出之后,如果接收節點成功接收了該幀報文,則接收節點需要在該幀報文ACK段內向總線上發送一個顯性位來對發送節點的報文進行應答,此時發送節點會在ACK段內從總線上回讀到一個顯性位。如圖5所示,通過配置關閉接收節點的ACK應答功能,此時發送節點在ACK位沒有收到其他節點應答,觸發ACK錯誤。
圖5 ACK錯誤報文示例
格式錯誤
如圖6所示,分別干擾EOF的第一位和第六位都會導致發送和接收節點出現格式錯誤,是由于發送節點發送隱性位EOF,回讀到總線為顯性位,在該位后發送格式錯誤幀。
圖6 EOF格式錯誤報文示例
2. 接收錯誤
填充錯誤
如圖7所示,干擾報文0x210,使Bit7隱性變為顯性,總線出現6個連續顯性位,使得發送節點和接收節點都檢測到填充錯誤,發送錯誤幀。
圖7 報文填充錯誤
CRC錯誤
如圖8所示,通過VH6501直接發送報文序列,并篡改數據場使其與CRC序列不匹配,觸發接收節點檢測到CRC錯誤,錯誤位置是100(ACK DEL),ISO 11898-1中規定檢測到CRC錯誤后,應該在ACK界定符之后發送錯誤標志。
圖8 CRC錯誤報文示例
格式錯誤
如圖9所示,Position 98和Position 100分別為CRC界定符和ACK界定符,干擾發送報文固定格式位后,接收節點檢測到格式錯誤幀。
圖9 界定符格式錯誤報文示例
錯誤標志重疊由于錯誤標志為6個極性相同的位,因此錯誤標志會導致填充錯誤,引起其他節點發送錯誤標志,或在發送錯誤標志時將原本個,從而使其他節點緊跟著發送錯誤標志,當引起全局錯誤時,所有節點都會同時發送錯誤標志,使得錯誤標志為6個位。以下為三種典型錯誤標志重疊范例。
重疊部分為6個位時
如圖10所示,在固定格式ACK界定符發送后,總線獲取到的信號為顯性位,由此發送節點和接收節點同時檢測到格式錯誤,都在ACK界定符后發送6個連續顯性位。
圖10 錯誤標志完全重疊
重疊部分為5個位時
用定位可以如圖11所示,當接收節點B出現CRC錯誤時,在ACK DEL后發送主動錯誤標志,發送節點和接收節點A監測到EOF的第一位被顯性位覆蓋,發送格式錯誤幀,總線上表現為7位長度的錯誤標志。
圖11 錯誤標志部分重疊
重疊部分為0時
如圖12所示,發送節點回讀總線監測到位錯誤,發送錯誤標志,當錯誤標志的6個連續顯性位發送完畢之后,總線上出現填充錯誤,引起其他節點發送錯誤標志,從而使錯誤標志達到12個位。
圖12 錯誤標志不重疊
總結
CAN總線在幾十年的使用和發展下,被使用在幾乎每一臺車輛上,可以說是車輛行業不可或缺的存在,是現如今國際上應用最廣泛的現場總線之一。而錯誤幀是CAN總線用于錯誤報告的報文,豐富的錯誤幀類型有助于迅速排查定位總線故障,因此錯誤幀的理解和使用也是作為總線測試工程師的必修課,希望這篇簡介能夠幫助了解錯誤幀的相關內容。北匯信息是一家專注于汽車電子測試領域的企業,對網絡測試有著豐富經驗,并可提供相關培訓、咨詢服務以及測試解決方案,幫助汽車制造商和零部件供應商確保其車載網絡的可靠性和安全性。如果需要具體的測試服務或了解更多信息,歡迎大家來聯系我們。
參考文獻:【1】《ISO11898-1 - 2015》,Road vehicles - Controller area network (CAN) - Part 1:Data link layer and physical signalling【2】《CAN入門書》瑞薩科技RCJ05B0027-0100【3】文中部分圖片來源于Vector
-
CAN
+關注
關注
57文章
2764瀏覽量
464093 -
車載通信
+關注
關注
0文章
47瀏覽量
13451 -
Vector
+關注
關注
3文章
62瀏覽量
8637
發布評論請先 登錄
相關推薦
評論