加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

虹科干貨丨帶你全面認(rèn)識“CAN總線錯(cuò)誤”

2023/09/26
8164
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
  • 方案介紹
    • 1.什么是CAN總線錯(cuò)誤?
    • 2.CAN錯(cuò)誤幀
    • 3.CAN總線錯(cuò)誤類型
    • 4.CAN節(jié)點(diǎn)狀態(tài)和錯(cuò)誤計(jì)數(shù)器
    • 5.在實(shí)踐中生成和記錄CAN錯(cuò)誤
    • 6.CAN錯(cuò)誤幀記錄的示例
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

在本文檔中,我們將為您詳細(xì)介紹CAN總線錯(cuò)誤的相關(guān)知識,包括CAN總線錯(cuò)誤的基礎(chǔ)概念、CAN總線錯(cuò)誤的類型、CAN錯(cuò)誤幀和CAN節(jié)點(diǎn)錯(cuò)誤狀態(tài),并通過實(shí)際的應(yīng)用測試生成并記錄CAN錯(cuò)誤。

1.什么是CAN總線錯(cuò)誤?

控制器局域網(wǎng)絡(luò)(Controller Area Network, CAN)是當(dāng)今汽車和工業(yè)自動化系統(tǒng)的重要標(biāo)準(zhǔn)??煽啃允荂AN總線協(xié)議的核心優(yōu)勢之一,這使其成為安全關(guān)鍵應(yīng)用的理想選擇。但十分值得注意的是,錯(cuò)誤處理對CAN的穩(wěn)健性來說至關(guān)重要。

CAN總線錯(cuò)誤的發(fā)生可能有多種原因,比如電纜故障、噪聲、不匹配的終端電阻、CAN節(jié)點(diǎn)故障等。識別、分類和解決此類CAN錯(cuò)誤是確保整個(gè)CAN系統(tǒng)持久性能的關(guān)鍵。錯(cuò)誤處理可以識別和拒絕錯(cuò)誤的信息,使發(fā)送者能夠重新傳輸信息。此外,該過程有助于識別和斷開持續(xù)傳輸錯(cuò)誤信息的CAN節(jié)點(diǎn)。

錯(cuò)誤處理是CAN標(biāo)準(zhǔn)和每個(gè)CAN控制器的內(nèi)置部分。換句話說,每個(gè)CAN節(jié)點(diǎn)都以相同的方式處理故障識別和限制。下面我們做了一個(gè)簡單的說明性示例:

具體步驟示例:

  • CAN節(jié)點(diǎn)1將消息傳輸?shù)紺AN總線,并讀取它發(fā)送的每一位
  • 在這樣做的過程中,它發(fā)現(xiàn)發(fā)送顯性的一位被讀取為隱性
  • 這是一個(gè)“位錯(cuò)誤”,節(jié)點(diǎn)1會引發(fā)一個(gè)活動錯(cuò)誤標(biāo)志以通知其他節(jié)點(diǎn)
  • 實(shí)際上,這意味著節(jié)點(diǎn)1將6個(gè)顯性位序列發(fā)送到總線上
  • 反過來,6個(gè)顯性位被其他節(jié)點(diǎn)視為“位填充錯(cuò)誤”
  • 作為響應(yīng),節(jié)點(diǎn)2和3同時(shí)引發(fā)活動錯(cuò)誤標(biāo)志
  • 此引發(fā)的錯(cuò)誤標(biāo)志序列構(gòu)成“CAN錯(cuò)誤幀”的一部分
  • CAN節(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自動重新傳輸消息
  • 結(jié)果,節(jié)點(diǎn)1將其TEC減少1,節(jié)點(diǎn)2和3將其REC減少1

2.CAN錯(cuò)誤幀

在上述示例中,CAN節(jié)點(diǎn)“引發(fā)活動錯(cuò)誤標(biāo)志”,從而創(chuàng)建“錯(cuò)誤幀”以響應(yīng)檢測到的CAN錯(cuò)誤。

為了理解它是如何工作的,讓我們首先看一個(gè)“正?!钡腃AN幀(沒有錯(cuò)誤):

圖中,我們突出顯示了CAN幀中的“位填充”。位填充是CAN標(biāo)準(zhǔn)的一個(gè)微妙但重要的部分?;旧纤?guī)定,每當(dāng)CAN節(jié)點(diǎn)發(fā)送相同邏輯電平(顯性或隱性)的五個(gè)位時(shí),它必須發(fā)送相反電平的一個(gè)位。接收CAN節(jié)點(diǎn)會自動刪除這個(gè)額外的位。此過程有助于確保網(wǎng)絡(luò)的持續(xù)同步。

根據(jù)前面的示例,當(dāng)CAN節(jié)點(diǎn)1在CAN消息傳輸期間檢測到錯(cuò)誤時(shí),它會立即傳輸相同邏輯電平的6位序列-也稱為引發(fā)活動錯(cuò)誤標(biāo)志。

正如前文所述,這樣的序列違反了位填充規(guī)則——也稱為“位填充錯(cuò)誤”。此外,此錯(cuò)誤對網(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)。

請注意,其他CAN節(jié)點(diǎn)會將活動錯(cuò)誤標(biāo)志視為位填充錯(cuò)誤。作為響應(yīng),它們還會引發(fā)一個(gè)活動錯(cuò)誤標(biāo)志。

正如我們后面將解釋的,區(qū)分錯(cuò)誤標(biāo)志很重要。特別是,第一個(gè)錯(cuò)誤標(biāo)志(來自“發(fā)現(xiàn)”節(jié)點(diǎn))通常被稱為“主要”活動錯(cuò)誤標(biāo)志,而后續(xù)“反應(yīng)”節(jié)點(diǎn)的錯(cuò)誤標(biāo)志被稱為“次要”活動錯(cuò)誤標(biāo)志(s)。

2.1 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è)顯性位序列。一旦通過主要活動錯(cuò)誤標(biāo)志的一半,節(jié)點(diǎn)2和3識別位填充錯(cuò)誤(由于3個(gè)初始顯性位后面跟著另外3個(gè)顯性位)并開始提高它們的錯(cuò)誤標(biāo)志。結(jié)果是來自錯(cuò)誤標(biāo)志的顯性位序列變?yōu)?位長。

上述引發(fā)錯(cuò)誤標(biāo)志的邏輯反映在我們所謂的“活動”CAN錯(cuò)誤幀中。請?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í)際上,活動錯(cuò)誤幀可能在錯(cuò)誤CAN幀中的不同位置“開始”,這取決于何時(shí)發(fā)現(xiàn)錯(cuò)誤。然而,結(jié)果將是相同的:所有節(jié)點(diǎn)都丟棄錯(cuò)誤的CAN幀,發(fā)送節(jié)點(diǎn)可以嘗試重新發(fā)送失敗的消息。

如果CAN節(jié)點(diǎn)已從其默認(rèn)的“活動”狀態(tài)轉(zhuǎn)變?yōu)椤氨粍印睜顟B(tài),那么它將只能引發(fā)所謂的“被動錯(cuò)誤標(biāo)志”。被動錯(cuò)誤標(biāo)志是6個(gè)隱性位的序列。在這種情況下,區(qū)分由發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)引發(fā)的被動錯(cuò)誤標(biāo)志是相關(guān)的。

示例4:發(fā)送器是被動錯(cuò)誤

如圖所示,如果發(fā)送器(例如我們示例中的CAN節(jié)點(diǎn)1)引發(fā)被動錯(cuò)誤標(biāo)志(例如響應(yīng)位錯(cuò)誤),這將對應(yīng)于6個(gè)隱性位的連續(xù)序列。這又被所有CAN節(jié)點(diǎn)檢測為位填充錯(cuò)誤。假設(shè)其他CAN節(jié)點(diǎn)仍處于其錯(cuò)誤活動狀態(tài),它們將引發(fā)6個(gè)顯性位的活動錯(cuò)誤標(biāo)志。換言之,無源發(fā)送器仍然可以“傳達(dá)”CAN幀是錯(cuò)誤的。

示例5:接收器是被動錯(cuò)誤

相反,如果接收器產(chǎn)生被動錯(cuò)誤標(biāo)志,這實(shí)際上對總線上的所有其他CAN節(jié)點(diǎn)“不可見”(因?yàn)槿魏物@性位都勝過隱性位序列)。實(shí)際上,這意味著錯(cuò)誤被動接收器不再具有破壞其他CAN節(jié)點(diǎn)傳輸?shù)膸哪芰Α?/p>

3.CAN總線錯(cuò)誤類型

CAN總線協(xié)議規(guī)定了5種CAN錯(cuò)誤類型:

  • 位錯(cuò)誤[發(fā)送器]
  • 位填充錯(cuò)誤[接收器]
  • 格式錯(cuò)誤[接收者]
  • ACK應(yīng)答錯(cuò)誤(應(yīng)答)[發(fā)送器]
  • CRC校驗(yàn)錯(cuò)誤(循環(huán)冗余校驗(yàn))[接收器]

在前文中,我們已經(jīng)對位錯(cuò)誤和位填充錯(cuò)誤有所了解,這兩者都是在位級別進(jìn)行評估的。其余三種CAN錯(cuò)誤類型在消息級別進(jìn)行評估。下面我們詳細(xì)介紹每種錯(cuò)誤類型。

1)位錯(cuò)誤

CAN總線上的每個(gè)CAN節(jié)點(diǎn)都會在任何給定時(shí)間監(jiān)控信號電平——這意味著發(fā)送CAN節(jié)點(diǎn)也會“讀回”它發(fā)送的每一位。如果發(fā)送器讀取的數(shù)據(jù)位級別與其發(fā)送的內(nèi)容不同,則發(fā)送器會將其檢測為位錯(cuò)誤。但是,如果在仲裁過程中(即發(fā)送CAN ID時(shí))發(fā)生位不匹配,則不會將其解釋為位錯(cuò)誤。類似地,應(yīng)答時(shí)隙(ACK字段)中的不匹配不會導(dǎo)致位錯(cuò)誤,因?yàn)锳CK字段特別要求來自發(fā)送器的隱性位被來自接收器的顯性位覆蓋。

2)位填充錯(cuò)誤

如前文所述,位填充是CAN標(biāo)準(zhǔn)的一部分。它規(guī)定在同一邏輯級別的每5個(gè)連續(xù)位之后,第6位必須是補(bǔ)碼。這是通過提供上升沿來確保網(wǎng)絡(luò)的持續(xù)同步所必需的。此外,它確保位流不會被誤解為錯(cuò)誤幀或標(biāo)記消息結(jié)束的幀間空間(7位隱性序列)。所有CAN節(jié)點(diǎn)都會自動刪除多余的位。

如果在CAN消息內(nèi)(在SOF和CRC字段之間)的總線上觀察到具有相同邏輯電平的6位序列,則接收器將其檢測為位填充錯(cuò)誤,即填充錯(cuò)誤。

3)格式錯(cuò)誤

此消息級別檢查利用CAN消息中的某些字段/位必須始終處于某個(gè)邏輯級別的事實(shí)。具體來說,1位SOF必須是顯性的,而整個(gè)8位EOF字段必須是隱性的。此外,ACK和CRC界定符必須是隱性的。如果接收器發(fā)現(xiàn)這些位中的任何一個(gè)具有無效的邏輯電平,則接收器將其檢測為格式錯(cuò)誤。

4)ACK應(yīng)答錯(cuò)誤(應(yīng)答)

當(dāng)發(fā)送器發(fā)送CAN報(bào)文時(shí),它將包含ACK字段(應(yīng)答),發(fā)送器將在其中發(fā)送一個(gè)隱性位。所有偵聽CAN節(jié)點(diǎn)都應(yīng)在該字段中發(fā)送顯性位以驗(yàn)證消息的接收(無論節(jié)點(diǎn)是否對消息感興趣)。如果發(fā)送器未讀取ACK時(shí)隙中的顯性位,則發(fā)送器將其檢測為ACK錯(cuò)誤。

5)CRC校驗(yàn)錯(cuò)誤(循環(huán)冗余校驗(yàn))

每個(gè)CAN報(bào)文都包含一個(gè)15位的循環(huán)冗余校驗(yàn)和字段。在這里,發(fā)送器已經(jīng)計(jì)算了CRC值并將其添加到消息中。每個(gè)接收節(jié)點(diǎn)也會自己計(jì)算CRC。如果接收器的CRC計(jì)算與發(fā)送器的CRC不匹配,接收器會將其檢測為CRC錯(cuò)誤。

4.CAN節(jié)點(diǎn)狀態(tài)和錯(cuò)誤計(jì)數(shù)器

顯然,CAN錯(cuò)誤處理有助于去除錯(cuò)誤消息,并使CAN節(jié)點(diǎn)能夠重新進(jìn)行錯(cuò)誤消息的傳輸。這確保了短暫的局部干擾(例如來自噪聲)不會導(dǎo)致無效/丟失數(shù)據(jù)。相反,發(fā)送器將會嘗試重新發(fā)送消息。如果它贏得仲裁(并且沒有錯(cuò)誤),則消息發(fā)送成功。

但是,如果錯(cuò)誤是由于傳輸節(jié)點(diǎn)中的系統(tǒng)故障引起的怎么辦?這可能會觸發(fā)發(fā)送/去除相同消息的無限循環(huán)——干擾CAN總線。這就是CAN節(jié)點(diǎn)狀態(tài)和錯(cuò)誤計(jì)數(shù)器發(fā)揮作用的地方。

CAN錯(cuò)誤跟蹤的目的是通過降低有問題的CAN節(jié)點(diǎn)的權(quán)限來限制錯(cuò)誤。

具體來說,讓我們看看三種可能的狀態(tài):

  • 活動錯(cuò)誤:這是每個(gè)CAN節(jié)點(diǎn)的默認(rèn)狀態(tài),在該狀態(tài)下它能夠傳輸數(shù)據(jù)并在檢測到錯(cuò)誤時(shí)引發(fā)“活動錯(cuò)誤標(biāo)志”
  • 被動錯(cuò)誤:在這種狀態(tài)下,CAN節(jié)點(diǎn)仍然能夠傳輸數(shù)據(jù),但現(xiàn)在在檢測到錯(cuò)誤時(shí)會引發(fā)“被動錯(cuò)誤標(biāo)志”。此外,CAN節(jié)點(diǎn)現(xiàn)在除了等待3位中斷時(shí)間外,還必須等待額外的8位(也稱為暫停傳輸時(shí)間)才能恢復(fù)數(shù)據(jù)傳輸(以允許其他CAN節(jié)點(diǎn)控制總線
  • 總線關(guān)閉:在此狀態(tài)下,CAN節(jié)點(diǎn)將自身與CAN總線斷開連接,無法再傳輸數(shù)據(jù)或引發(fā)錯(cuò)誤標(biāo)志

每個(gè)CAN控制器都會跟蹤自己的狀態(tài)并采取相應(yīng)的行動。CAN節(jié)點(diǎn)根據(jù)其錯(cuò)誤計(jì)數(shù)器的值轉(zhuǎn)換狀態(tài)。具體來說,每個(gè)CAN節(jié)點(diǎn)都會跟蹤發(fā)送錯(cuò)誤計(jì)數(shù)器(TEC)和接收錯(cuò)誤計(jì)數(shù)器(REC):

  • 如果REC或TEC超過127,則CAN節(jié)點(diǎn)進(jìn)入被動錯(cuò)誤狀態(tài)
  • 如果TEC超過255,則CAN節(jié)點(diǎn)進(jìn)入總線關(guān)閉狀態(tài)

那么,錯(cuò)誤計(jì)數(shù)器如何變化呢?在我們了解如何增加/減少錯(cuò)誤計(jì)數(shù)器的邏輯之前,讓我們重新審視CAN錯(cuò)誤幀以及主要/次要錯(cuò)誤標(biāo)志。從CAN錯(cuò)誤幀圖示中可以明顯看出,在其自己的6個(gè)顯性位序列之后觀察到顯性位的CAN節(jié)點(diǎn)將知道它引發(fā)了主要錯(cuò)誤標(biāo)志。在這種情況下,我們可以將此CAN節(jié)點(diǎn)稱為錯(cuò)誤的“發(fā)現(xiàn)者”。

起初,讓一個(gè)CAN節(jié)點(diǎn)反復(fù)發(fā)現(xiàn)錯(cuò)誤并通過在其他節(jié)點(diǎn)之前發(fā)出錯(cuò)誤標(biāo)志來迅速做出反應(yīng),這聽起來可能是積極的。然而,在實(shí)踐中,發(fā)現(xiàn)者通常也是導(dǎo)致錯(cuò)誤的罪魁禍?zhǔn)住?/p>

5.在實(shí)踐中生成和記錄CAN錯(cuò)誤

測試1:沒有CAN總線錯(cuò)誤

為了便于對照,我們設(shè)置了沒有CAN總線錯(cuò)誤的測試:一個(gè) CANedge2 的“發(fā)送器”將數(shù)據(jù)發(fā)送到另一個(gè) CANedge2 的“接收器”,并且兩者都能夠記錄CAN總線錯(cuò)誤。

測試2:移除CAN總線終端電阻

在這個(gè)測試中,我們在日志會話過程中移除了 CAN 終端電阻。這可以有效地將位電平設(shè)置為顯性。同時(shí),CANedge2發(fā)送器立即開始記錄位錯(cuò)誤(當(dāng)它嘗試發(fā)送隱性位但讀取顯性位時(shí)會發(fā)生這種情況)。CANedge2 接收器在檢測到 6 個(gè)連續(xù)顯性位時(shí)記錄位填充錯(cuò)誤。記錄這些錯(cuò)誤,直到再次添加終止。

在記錄來自車輛、機(jī)器等的數(shù)據(jù)時(shí),缺少終端電阻似乎并沒有影響,但是,在使用“測試臺”設(shè)置時(shí),這個(gè)問題非常常見,并可能導(dǎo)致混淆,因?yàn)樗y以與非活動CAN總線區(qū)分開來。因此,在CANedge數(shù)據(jù)記錄儀上啟用錯(cuò)誤幀記錄幀對于故障排除而言是十分有效的。


發(fā)送器位錯(cuò)誤


接收器位填充錯(cuò)誤

測試3:設(shè)置錯(cuò)誤的波特率

在這個(gè)測試中,我們將CANedge接收器節(jié)點(diǎn)配置為具有492.872K波特率,而發(fā)送器的波特率為500K,這是一個(gè)相當(dāng)大的差異,并導(dǎo)致發(fā)送器的ACK錯(cuò)誤和接收器的位填充錯(cuò)誤。在更現(xiàn)實(shí)的場景中,各個(gè)節(jié)點(diǎn)的波特率配置的較小差異可能會導(dǎo)致間歇性錯(cuò)誤幀,從而導(dǎo)致消息丟失。

這個(gè)例子比較極端,然而,在實(shí)踐中,我們有時(shí)會看到使用標(biāo)準(zhǔn)比特率(250K、500K、……)的CAN總線,但其特定的位時(shí)序設(shè)置與通常推薦的設(shè)置不同。這不會導(dǎo)致通信完全關(guān)閉,但會導(dǎo)致幾個(gè)百分比的周期性幀丟失。為了解決這個(gè)問題,可以在CANedge配置中構(gòu)建一個(gè)“預(yù)定義比特率”,本質(zhì)上是設(shè)置位時(shí)序以更好地匹配正在記錄的CAN總線。


發(fā)送器ACK錯(cuò)誤


接收器位填充錯(cuò)誤

測試4:移除應(yīng)答CAN節(jié)點(diǎn)

在本次測試中,我們使用了三個(gè)配置如下的 CANedge 單元:

  • CANedge1:配置為應(yīng)答數(shù)據(jù)
  • CANedge2 A:配置為“靜默模式”(無確認(rèn))
  • CANedge2 B:配置為每 500 ms 傳輸一個(gè) CAN 幀

在默認(rèn)設(shè)置中,數(shù)據(jù)由 CANedge2 B 傳輸?shù)?CAN 總線上并無錯(cuò)誤記錄。但是,如果我們從總線上移除 CANedge1,則不再有任何 CAN 節(jié)點(diǎn)來確認(rèn)發(fā)送器發(fā)送的幀。結(jié)果,發(fā)送器檢測到ACK 錯(cuò)誤。作為響應(yīng),它增加其發(fā)送錯(cuò)誤計(jì)數(shù)器并在 CAN 總線上產(chǎn)生活動錯(cuò)誤標(biāo)志。這些又由 CANedge2 A(它靜默監(jiān)控總線)記錄為格式錯(cuò)誤。

CANedge之所以會記錄格式錯(cuò)誤,是因?yàn)榘l(fā)送器在識別出ACK時(shí)隙中缺少顯性位時(shí)將其提高,一旦接收器在隨后的EOF字段中觀察到顯性位(本該是隱性的),就會檢測到格式錯(cuò)誤。

很明顯,當(dāng)TEC從0增加到16x8=128時(shí),發(fā)送器會廣播16個(gè)主動錯(cuò)誤標(biāo)志。發(fā)送器現(xiàn)在已超過TEC的閾值127并進(jìn)入被動錯(cuò)誤模式。因此,發(fā)送器仍然會遇到ACK錯(cuò)誤,但現(xiàn)在只會引發(fā)被動錯(cuò)誤標(biāo)志(接收器不可見)。在這一點(diǎn)上,發(fā)送器不斷嘗試發(fā)送相同的幀,并且接收器不斷記錄這個(gè)重傳序列。

這種類型的錯(cuò)誤是我們在技術(shù)支持中經(jīng)常遇到的錯(cuò)誤。具體來說,用戶會嘗試使用我們的CAN記錄器來記錄來自單個(gè)CAN節(jié)點(diǎn)的數(shù)據(jù)(例如從CANmod傳感器CAN模塊),如果他們決定在這樣的安裝中啟用CANedge上的“靜默模式”,則沒有CAN節(jié)點(diǎn)將確認(rèn)單個(gè)CAN節(jié)點(diǎn)廣播數(shù)據(jù),這樣得到的結(jié)果大概率將是空日志文件,或充滿相同CAN幀重傳的日志文件。

發(fā)送器ACK錯(cuò)誤


接收器格式錯(cuò)誤

測試5:CAN幀沖突(無重傳)

設(shè)置CAN總線時(shí),避免CAN ID重復(fù)是關(guān)鍵,否則可能會導(dǎo)致幀沖突,因?yàn)閮蓚€(gè)CAN節(jié)點(diǎn)可能都認(rèn)為他們已經(jīng)贏得了仲裁,并同時(shí)開始傳輸它們的幀。

為了模擬這一點(diǎn),我們使用與測試4相同的設(shè)置。此外,我們連接了一個(gè)PCAN-USB設(shè)備作為輔助發(fā)送器。CANedge2發(fā)送器現(xiàn)在配置為每10ms輸出一個(gè)CAN ID為1且有效負(fù)載為8個(gè)0xFF字節(jié)的CAN幀。此外,我們將CANedge2配置為禁用因錯(cuò)誤中斷的幀的重新傳輸。PCAN-USB每2ms輸出一個(gè)相同的CAN幀,有效載荷的第一個(gè)字節(jié)更改為0xFE。PCAN設(shè)備已啟用重傳。

這種設(shè)置會迅速產(chǎn)生幀沖突,從而導(dǎo)致CANedge和PCAN發(fā)送器檢測到位錯(cuò)誤。作為對此的響應(yīng),兩者都會引發(fā)一個(gè)活動錯(cuò)誤標(biāo)志,CANedge接收器將其檢測為位填充錯(cuò)誤。PCAN設(shè)備立即嘗試重新傳輸并成功,而CANedge等待進(jìn)一步傳輸,直到要發(fā)送下一個(gè)消息。

這種類型的錯(cuò)誤當(dāng)然不應(yīng)該發(fā)生在例如汽車中,因?yàn)樵O(shè)計(jì)和測試過程將確保所有 CAN 節(jié)點(diǎn)通過全球唯一的 CAN 標(biāo)識符進(jìn)行通信。但是,如果您安裝第 3 方設(shè)備(例如傳感器到 CAN 模塊)以將數(shù)據(jù)注入現(xiàn)有 CAN 總線,則很容易出現(xiàn)此問題。如果您不確保外部 CAN 節(jié)點(diǎn)的 CAN ID 的全局唯一性,您可能會導(dǎo)致幀沖突,從而導(dǎo)致 CAN 總線上的錯(cuò)誤。如果您的外部 CAN 節(jié)點(diǎn)廣播具有高優(yōu)先級 CAN ID 的數(shù)據(jù),這一點(diǎn)尤其重要,因?yàn)槟赡軙绊懓踩P(guān)鍵 CAN 節(jié)點(diǎn)。

PCAN發(fā)送器位錯(cuò)誤


CANedge發(fā)送器位錯(cuò)誤

CANedge接收器位填充錯(cuò)誤

測試6:CAN幀沖突(包括重傳)

在這個(gè)測試中,我們使用與之前相同的設(shè)置,但在CANedge2發(fā)送器上啟用重傳。在這種情況下,幀沖突會導(dǎo)致一系列后續(xù)幀沖突,因?yàn)镃ANedge2和PCAN-USB設(shè)備都試圖重新傳輸其中斷的消息。

由于產(chǎn)生的位錯(cuò)誤,兩者都會引發(fā)總共16個(gè)活動錯(cuò)誤標(biāo)志,它們被靜默CANedge2接收器檢測為位填充錯(cuò)誤。然后兩個(gè)發(fā)送器進(jìn)入錯(cuò)誤被動模式并停止產(chǎn)生主動錯(cuò)誤標(biāo)志,這意味著它們都不能破壞總線上的CAN幀。結(jié)果,其中一個(gè)發(fā)送器將成功傳輸完整的消息,從而結(jié)束重傳,并使兩個(gè)設(shè)備都能恢復(fù)傳輸。但是,這僅持續(xù)幾秒鐘,然后發(fā)生另一次碰撞。

沖突處理是一個(gè)很好的例子,說明CAN錯(cuò)誤處理在“關(guān)閉”潛在有問題的序列和使CAN節(jié)點(diǎn)能夠恢復(fù)通信方面很有效。如果發(fā)生幀沖突,很可能兩個(gè)CAN節(jié)點(diǎn)都將設(shè)置為嘗試重傳,如果不是錯(cuò)誤處理和限制,則將導(dǎo)致阻塞。

虹科CAN/LIN數(shù)據(jù)與錯(cuò)誤記錄器

虹科CANedge1讓您可以輕松地將數(shù)據(jù)從2xCAN/LIN總線記錄到8-32GB的SD卡中,并支持記錄CAN/LIN錯(cuò)誤。只需將其連接到汽車或卡車即可開始記錄-并通過免費(fèi)軟件/API解碼數(shù)據(jù)。此外,升級版CANedge2添加了WiFi功能,讓您可以將數(shù)據(jù)自動傳輸?shù)侥约旱?a class="article-link" target="_blank" href="/tag/%E6%9C%8D%E5%8A%A1%E5%99%A8/">服務(wù)器,并通過無線方式更新設(shè)備。

6.CAN錯(cuò)誤幀記錄的示例

1.OEM原型車中的CAN總線診斷

汽車OEM可能需要在后期原型測試期間在現(xiàn)場記錄CAN錯(cuò)誤幀。通過部署CANedge,OEM工程團(tuán)隊(duì)將能夠根據(jù)實(shí)際CAN信號(速度、RPM、溫度)以及與原型系統(tǒng)中較低層CAN通信相關(guān)的問題進(jìn)行故障排除。如果感興趣的問題是間歇性的,例如每月只發(fā)生一次或兩次,這一點(diǎn)尤其重要。在這種情況下,CAN總線接口不太適合,因?yàn)閾碛谐杀拘б娓叩脑O(shè)備以實(shí)現(xiàn)可擴(kuò)展部署以更快地進(jìn)行故障排除變得越來越重要。虹科車輛網(wǎng)絡(luò)團(tuán)隊(duì)在車用CAN總線方面有著十分豐富的技術(shù)積累,歡迎通過hongchesys@hkaco.com聯(lián)系虹科車輛網(wǎng)絡(luò)團(tuán)隊(duì)。

2.遠(yuǎn)程排除機(jī)器中的CAN錯(cuò)誤

OEM或售后市場用戶可能需要在他們的機(jī)器中捕獲罕見的CAN錯(cuò)誤事件。為此,他們部署了一個(gè)CANedge2來記錄CAN數(shù)據(jù)和相關(guān)的錯(cuò)誤幀,并通過WiFi自動將數(shù)據(jù)上傳到他們自己的云服務(wù)器。在這里,錯(cuò)誤會被自動識別,并向工程團(tuán)隊(duì)發(fā)送警報(bào),以便立即診斷和解決問題。虹科工業(yè)控制團(tuán)隊(duì)在CAN總線等工業(yè)通訊協(xié)議方面有著十分豐富的技術(shù)積累,歡迎通過hongconsys@hkaco.com聯(lián)系虹科工業(yè)控制團(tuán)隊(duì)。

聯(lián)系虹科工程師:13660244187

聯(lián)系方式鏈接:https://tl-tx.dustess.com/uXuUI7m5M0

  • 虹科干貨丨帶你全面認(rèn)識“CAN總線錯(cuò)誤”.docx

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
L6206PD013TR 1 STMicroelectronics DMOS dual full bridge driver

ECAD模型

下載ECAD模型
$7.05 查看
L9788 1 STMicroelectronics Multifunction IC for Automotive Engine Management System

ECAD模型

下載ECAD模型
暫無數(shù)據(jù) 查看
FSBB20CH60C 1 onsemi Intelligent Power Module, 600V, 20A, 60-TUBE
$26.91 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

虹科是一家資源整合及技術(shù)服務(wù)落地供應(yīng)商,與全球頂尖公司深度技術(shù)合作,專注于制造業(yè)、汽車、生物、醫(yī)藥、測試與測量、廣播電視與媒體、通信、網(wǎng)絡(luò)安全、光電等領(lǐng)域,為客戶提供:智能自動化、工業(yè)物聯(lián)網(wǎng)、智能感知、數(shù)字化+AR、光電、網(wǎng)絡(luò)安全、測試測量、衛(wèi)星與無線通信、醫(yī)藥環(huán)境監(jiān)測與驗(yàn)證、生命科學(xué)、汽車電子、汽車維修診斷、云科技等解決方案。虹科始終致力于為行業(yè)客戶提供創(chuàng)新及前端的產(chǎn)品和技術(shù)解決方案,為科技社會發(fā)展助力加碼。