CAN總線錯誤
介紹
在本系列文章中,我們將為您詳細介紹CAN總線錯誤的相關知識,包括CAN總線錯誤的基礎概念、CAN總線錯誤的類型、CAN錯誤幀和CAN節點錯誤狀態,并通過實際的應用測試生成并記錄CAN錯誤。
什么是CAN總線錯誤?
控制器局域網絡(Controller Area Network, CAN)是當今汽車和工業自動化系統的重要標準。可靠性是CAN總線協議的核心優勢之一,這使其成為安全關鍵應用的理想選擇。但值得注意的是,錯誤處理對CAN的穩健性來說至關重要。
CAN總線錯誤的發生可能有多種原因,比如電纜故障、噪聲、不匹配的終端電阻、CAN節點故障等。識別、分類和解決此類CAN錯誤是確保整個CAN系統持久性能的關鍵。錯誤處理可以識別和拒絕錯誤的信息,使發送者能夠重新傳輸信息。此外,該過程有助于識別和斷開持續傳輸錯誤信息的CAN節點。
CAN錯誤處理如何工作?
錯誤處理是CAN標準和每個CAN控制器的內置部分。換句話說,每個CAN節點都以相同的方式處理故障識別和限制。下面我們做了一個簡單的說明性示例:
具體步驟示例
1CAN節點1將消息傳輸到CAN總線-并讀取它發送的每一位,在這樣做的過程中,它發現發送顯性的一位被讀取為隱性
2這是一個“位錯誤”,節點1會引發一個活動錯誤標志以通知其他節點,實際上,這意味著節點1將6個顯性位序列發送到總線上,反過來,6個顯性位被其他節點視為“位填充錯誤”
3作為響應,節點2和3同時引發活動錯誤標志,此引發的錯誤標志序列構成“CAN錯誤幀”的一部分
4CAN節點1的發送器將其“發送錯誤計數器”(TEC)增加8,CAN節點2和3將其“接收錯誤計數器”(REC)增加1,CAN節點1自動重新傳輸消息。結果節點1將其TEC減少1,節點2和3將其REC減少1
CAN錯誤幀
在上述示例中,CAN節點“引發活動錯誤標志”,從而創建“錯誤幀”以響應檢測到的CAN錯誤。為了理解它是如何工作的,讓我們首先看一個“正常”的CAN幀(沒有錯誤):
請注意,我們突出顯示了CAN幀中的“位填充”。位填充是CAN標準的一個微妙但重要的部分。基本上它規定,每當CAN節點發送相同邏輯電平(顯性或隱性)的五個位時,它必須發送相反電平的一個位。接收CAN節點會自動刪除這個額外的位。此過程有助于確保網絡的持續同步。
根據前面的示例,當CAN節點1在CAN消息傳輸期間檢測到錯誤時,它會立即傳輸相同邏輯電平的6位序列——也稱為引發活動錯誤標志。
正如前文所述,這樣的序列違反了位填充規則——也稱為“位填充錯誤”。此外,此錯誤對網絡上的所有CAN節點都是可見的(與導致此錯誤標志出現的“位錯誤”相反)。因此,錯誤標志的增加可以被視為一種“全局性”錯誤發現的方式,確保通知每個CAN節點。
請注意,其他CAN節點會將活動錯誤標志視為位填充錯誤。作為響應,它們還會引發一個活動錯誤標志。正如我們后面將解釋的,區分錯誤標志很重要。特別是,第一個錯誤標志(來自“發現”節點)通常被稱為“主要”活動錯誤標志,而后續“反應”節點的錯誤標志被稱為“次要”活動錯誤標志(s)。
CAN錯誤幀示例
示例1
6位錯誤標志
在這里,所有CAN節點同時發現CAN報文中存在錯誤并同時發出錯誤標志。結果是錯誤標志全部重疊并且顯性位的總序列總共持續6位。在這種情況下,所有CAN節點都將自己視為“發現”CAN節點。
同時發現這種類型的錯誤幀在實踐中不太常見。但是,它可能是由于格式錯誤(例如CRC定界符是顯性而不是隱性)或CAN發送器在寫入CRC字段期間遇到位錯誤而發生的。
示例2
12位錯誤標志
在本示例中,CAN節點1傳輸顯性位,但將其讀取為隱性-這意味著它發現了位錯誤。它立即發送6個顯性位的序列。其他節點僅在讀取完整的6位后才發現位填充錯誤,之后它們同時提高錯誤標志,從而產生隨后的6個顯性位序列-即總共12個。
示例3
9位錯誤標志
在本示例中,當CAN節點1發現位錯誤并開始發送6個顯性位時,它已經發送了3個顯性位序列。一旦通過主要活動錯誤標志的一半,節點2和3識別位填充錯誤(由于3個初始顯性位后面跟著另外3個顯性位)并開始提高它們的錯誤標志。結果是來自錯誤標志的顯性位序列變為9位長。
上述引發錯誤標志的邏輯反映在我們所謂的“活動”CAN錯誤幀中。請特別注意各個節點引發的次要錯誤標志如何相互重疊——以及主要和次要標志也可能如何重疊。結果是來自引發錯誤標志的主要位序列可能是6到12位長。
該序列始終以8個隱性位序列終止,標志著錯誤幀的結束。實際上,活動錯誤幀可能在錯誤CAN幀中的不同位置“開始”,這取決于何時發現錯誤。然而,結果將是相同的:所有節點都丟棄錯誤的CAN幀,發送節點可以嘗試重新發送失敗的消息。
被動錯誤標志
如果CAN節點已從其默認的“活動”狀態轉變為“被動”狀態,那么它將只能引發所謂的“被動錯誤標志”。被動錯誤標志是6個隱性位的序列。在這種情況下,區分由發送節點和接收節點引發的被動錯誤標志是相關的。
示例4
發送器是被動錯誤
如圖所示,如果發送器(例如我們示例中的CAN節點1)引發被動錯誤標志(例如響應位錯誤),這將對應于6個隱性位的連續序列。這又被所有CAN節點檢測為位填充錯誤。假設其他CAN節點仍處于其錯誤活動狀態,它們將引發6個顯性位的活動錯誤標志。換言之,無源發送器仍然可以“傳達”CAN幀是錯誤的。
示例5
接收器是被動錯誤
相反,如果接收器產生被動錯誤標志,這實際上對總線上的所有其他CAN節點“不可見”(因為任何顯性位都勝過隱性位序列)。實際上,這意味著錯誤被動接收器不再具有破壞其他CAN節點傳輸的幀的能力。
未完待續
虹科在工業通訊總線行業深耕十余年,為客戶提供CAN卡、CAN數據記錄儀、數據采集模塊、CAN網關和轉換器等硬件設備,以及PCAN-Explore 6等軟件。深厚的技術積累和優秀的技術服務能力是眾多客戶選擇虹科的理由,歡迎隨時通過sales@hkaco.com聯系虹科。
原文標題:虹科干貨 | 帶你全面認識“CAN總線錯誤”(一)——CAN總線錯誤與錯誤幀
文章出處:【微信公眾號:廣州虹科電子科技有限公司】歡迎添加關注!文章轉載請注明出處。
-
控制器
+關注
關注
112文章
16363瀏覽量
178072 -
CAN總線
+關注
關注
145文章
1951瀏覽量
130763 -
虹科電子
+關注
關注
0文章
602瀏覽量
14353
原文標題:虹科干貨 | 帶你全面認識“CAN總線錯誤”(一)——CAN總線錯誤與錯誤幀
文章出處:【微信號:Hongketeam,微信公眾號:廣州虹科電子科技有限公司】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論