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