• 方案介紹
    • 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)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

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

2023/09/26
6849
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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

共1個(gè)文件

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

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

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

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

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

具體步驟示例:

  • CAN節(jié)點(diǎn)1將消息傳輸?shù)紺AN總線,并讀取它發(fā)送的每一位
  • 在這樣做的過(guò)程中,它發(fā)現(xiàn)發(fā)送顯性的一位被讀取為隱性
  • 這是一個(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ā)送到總線上
  • 反過(guò)來(lái),6個(gè)顯性位被其他節(jié)點(diǎn)視為“位填充錯(cuò)誤”
  • 作為響應(yīng),節(jié)點(diǎn)2和3同時(shí)引發(fā)活動(dòng)錯(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自動(dòng)重新傳輸消息
  • 結(jié)果,節(jié)點(diǎn)1將其TEC減少1,節(jié)點(diǎn)2和3將其REC減少1

2.CAN錯(cuò)誤幀

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

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

圖中,我們突出顯示了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è)額外的位。此過(guò)程有助于確保網(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)都是可見(jià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)志(來(lái)自“發(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)。

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í)踐中不太常見(jiàn)。但是,它可能是由于格式錯(cuò)誤(例如CRC定界符是顯性而不是隱性)或CAN發(fā)送器在寫(xiě)入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ò)誤并開(kāi)始發(fā)送6個(gè)顯性位時(shí),它已經(jīng)發(fā)送了3個(gè)顯性位序列。一旦通過(guò)主要活動(dòng)錯(cuò)誤標(biāo)志的一半,節(jié)點(diǎn)2和3識(shí)別位填充錯(cuò)誤(由于3個(gè)初始顯性位后面跟著另外3個(gè)顯性位)并開(kāi)始提高它們的錯(cuò)誤標(biāo)志。結(jié)果是來(lái)自錯(cuò)誤標(biāo)志的顯性位序列變?yōu)?位長(zhǎng)。

上述引發(fā)錯(cuò)誤標(biāo)志的邏輯反映在我們所謂的“活動(dòng)”CAN錯(cuò)誤幀中。請(qǐng)?zhí)貏e注意各個(gè)節(jié)點(diǎn)引發(fā)的次要錯(cuò)誤標(biāo)志如何相互重疊——以及主要和次要標(biāo)志也可能如何重疊。結(jié)果是來(lái)自引發(fā)錯(cuò)誤標(biāo)志的主要位序列可能是6到12位長(zhǎng)。

該序列始終以8個(gè)隱性位序列終止,標(biāo)志著錯(cuò)誤幀的結(jié)束。實(shí)際上,活動(dòng)錯(cuò)誤幀可能在錯(cuò)誤CAN幀中的不同位置“開(kāi)始”,這取決于何時(shí)發(fā)現(xiàn)錯(cuò)誤。然而,結(jié)果將是相同的:所有節(jié)點(diǎn)都丟棄錯(cuò)誤的CAN幀,發(fā)送節(jié)點(diǎn)可以嘗試重新發(fā)送失敗的消息。

如果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)志。換言之,無(wú)源發(fā)送器仍然可以“傳達(dá)”CAN幀是錯(cuò)誤的。

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

相反,如果接收器產(chǎn)生被動(dòng)錯(cuò)誤標(biāo)志,這實(shí)際上對(duì)總線上的所有其他CAN節(jié)點(diǎn)“不可見(jiàn)”(因?yàn)槿魏物@性位都勝過(guò)隱性位序列)。實(shí)際上,這意味著錯(cuò)誤被動(dòng)接收器不再具有破壞其他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)對(duì)位錯(cuò)誤和位填充錯(cuò)誤有所了解,這兩者都是在位級(jí)別進(jìn)行評(píng)估的。其余三種CAN錯(cuò)誤類型在消息級(jí)別進(jìn)行評(píng)估。下面我們?cè)敿?xì)介紹每種錯(cuò)誤類型。

1)位錯(cuò)誤

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

2)位填充錯(cuò)誤

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

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

3)格式錯(cuò)誤

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

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

當(dāng)發(fā)送器發(fā)送CAN報(bào)文時(shí),它將包含ACK字段(應(yīng)答),發(fā)送器將在其中發(fā)送一個(gè)隱性位。所有偵聽(tīng)CAN節(jié)點(diǎn)都應(yīng)在該字段中發(fā)送顯性位以驗(yàn)證消息的接收(無(wú)論節(jié)點(diǎn)是否對(duì)消息感興趣)。如果發(fā)送器未讀取ACK時(shí)隙中的顯性位,則發(fā)送器將其檢測(cè)為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)也會(huì)自己計(jì)算CRC。如果接收器的CRC計(jì)算與發(fā)送器的CRC不匹配,接收器會(huì)將其檢測(cè)為CRC錯(cuò)誤。

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

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

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

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

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

  • 活動(dòng)錯(cuò)誤:這是每個(gè)CAN節(jié)點(diǎn)的默認(rèn)狀態(tài),在該狀態(tài)下它能夠傳輸數(shù)據(jù)并在檢測(cè)到錯(cuò)誤時(shí)引發(fā)“活動(dòng)錯(cuò)誤標(biāo)志”
  • 被動(dòng)錯(cuò)誤:在這種狀態(tài)下,CAN節(jié)點(diǎn)仍然能夠傳輸數(shù)據(jù),但現(xiàn)在在檢測(cè)到錯(cuò)誤時(shí)會(huì)引發(fā)“被動(dòng)錯(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總線斷開(kāi)連接,無(wú)法再傳輸數(shù)據(jù)或引發(fā)錯(cuò)誤標(biāo)志

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

  • 如果REC或TEC超過(guò)127,則CAN節(jié)點(diǎn)進(jìn)入被動(dòng)錯(cuò)誤狀態(tài)
  • 如果TEC超過(guò)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ò)誤并通過(guò)在其他節(jié)點(diǎn)之前發(fā)出錯(cuò)誤標(biāo)志來(lái)迅速做出反應(yīng),這聽(tīng)起來(lái)可能是積極的。然而,在實(shí)踐中,發(fā)現(xiàn)者通常也是導(dǎo)致錯(cuò)誤的罪魁禍?zhǔn)住?/p>

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

測(cè)試1:沒(méi)有CAN總線錯(cuò)誤

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

測(cè)試2:移除CAN總線終端電阻

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

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


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


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

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

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

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


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


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

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

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

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

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

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

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

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

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


接收器格式錯(cuò)誤

測(cè)試5:CAN幀沖突(無(wú)重傳)

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

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

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

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


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

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

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

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

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

沖突處理是一個(gè)很好的例子,說(shuō)明CAN錯(cuò)誤處理在“關(guān)閉”潛在有問(wè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ò)誤。只需將其連接到汽車(chē)或卡車(chē)即可開(kāi)始記錄-并通過(guò)免費(fèi)軟件/API解碼數(shù)據(jù)。此外,升級(jí)版CANedge2添加了WiFi功能,讓您可以將數(shù)據(jù)自動(dòng)傳輸?shù)侥约旱?a class="article-link" target="_blank" href="/tag/%E6%9C%8D%E5%8A%A1%E5%99%A8/">服務(wù)器,并通過(guò)無(wú)線方式更新設(shè)備。

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

1.OEM原型車(chē)中的CAN總線診斷

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

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

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

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

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

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
A3977SLPTR-T 1 Allegro MicroSystems LLC Stepper Motor Controller, 2.5A, NMOS, PDSO28, TSSOP-28

ECAD模型

下載ECAD模型
$5.5 查看
TLE6209RAUMA2 1 Infineon Technologies AG Brush DC Motor Controller, 7A, NMOS, PDSO20, GREEN, PLASTIC, SOP-20
暫無(wú)數(shù)據(jù) 查看
AD8367ARUZ-RL7 1 Analog Devices Inc 500 MHz, 45 dB Linear-in-dB Variable Gain Amplifier

ECAD模型

下載ECAD模型
$12.79 查看

相關(guān)推薦

方案定制

去合作
方案開(kāi)發(fā)定制化,2000+方案商即時(shí)響應(yīng)!

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