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