0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CAN總線錯(cuò)誤處理介紹

智能汽車電子與軟件 ? 來(lái)源:電控知識(shí)搬運(yùn)工 ? 2023-09-20 17:09 ? 次閱讀

8d0bb4ee-5790-11ee-939d-92fbcf53809c.jpg

CAN怎樣處理錯(cuò)誤

錯(cuò)誤處理內(nèi)建在CAN協(xié)議中,對(duì)CAN系統(tǒng)的運(yùn)行十分重要。錯(cuò)誤處理的目標(biāo)是檢測(cè)CAN總線上出現(xiàn)的報(bào)文中的錯(cuò)誤,從而傳送器可以重傳出錯(cuò)的報(bào)文??偩€上的每個(gè)CAN控制器都會(huì)嘗試檢測(cè)報(bào)文中的錯(cuò)誤。如果發(fā)現(xiàn)錯(cuò)誤,發(fā)現(xiàn)節(jié)點(diǎn)將傳送一個(gè)錯(cuò)誤標(biāo)志,從而中斷總線通信。其它節(jié)點(diǎn)將檢測(cè)錯(cuò)誤標(biāo)志導(dǎo)致的錯(cuò)誤(如果它們尚未檢測(cè)到初始錯(cuò)誤)并采取合適的措施(例如丟棄當(dāng)前報(bào)文)。

每個(gè)節(jié)點(diǎn)維護(hù)兩個(gè)錯(cuò)誤計(jì)數(shù)器:傳送錯(cuò)誤計(jì)數(shù)器和接收錯(cuò)誤計(jì)數(shù)器。有幾個(gè)規(guī)則規(guī)定這些計(jì)數(shù)器怎樣增加和/或減少計(jì)數(shù)??偟膩?lái)講,檢測(cè)到故障的傳送器增加其傳送錯(cuò)誤計(jì)數(shù)器比偵聽(tīng)節(jié)點(diǎn)增加其接收錯(cuò)誤計(jì)數(shù)器要快。這是因?yàn)?,很有可能是傳送器發(fā)生了故障!當(dāng)任何錯(cuò)誤計(jì)數(shù)器增加到超過(guò)某個(gè)值時(shí),節(jié)點(diǎn)將首先進(jìn)入“錯(cuò)誤被動(dòng)”,也就是說(shuō),它在檢測(cè)到錯(cuò)誤時(shí)不會(huì)積極地阻止總線通信,然后“離開(kāi)總線”,這意味著節(jié)點(diǎn)根本不參與總線通信。

使用錯(cuò)誤計(jì)數(shù)器,CAN節(jié)點(diǎn)不但可以檢測(cè)故障,而且可以執(zhí)行錯(cuò)誤限制。

錯(cuò)誤檢測(cè)機(jī)制

CAN協(xié)議定義了五種以上不同的方法來(lái)檢測(cè)錯(cuò)誤。其中兩種工作在位層次,另外三種工作在報(bào)文層次。

位監(jiān)視

位填充

幀檢查

應(yīng)答檢查

循環(huán)冗余檢查

1. 位監(jiān)視

CAN總線上的每個(gè)傳送器都會(huì)監(jiān)視(也就是回讀)傳送的信號(hào)電平。如果真正讀到的位電平與傳送的位電平不同,會(huì)發(fā)出信號(hào)指示位錯(cuò)誤(仲裁過(guò)程中不會(huì)發(fā)出位錯(cuò)誤)。

2. 位填充

節(jié)點(diǎn)連續(xù)發(fā)送五個(gè)具有相同電平的位后,將在發(fā)送出去的位流中加上第六個(gè)相反電平的位。接收方將刪除這個(gè)額外的位。這樣做是為了避免總線上出現(xiàn)過(guò)度的直流電成分,但它同時(shí)也給予了接收方檢測(cè)錯(cuò)誤的額外機(jī)會(huì):如果總線上出現(xiàn)五個(gè)以上相同電平的連續(xù)位,會(huì)發(fā)出信號(hào)指示填充錯(cuò)誤。

3. 幀檢查

CAN報(bào)文的一些部分具有固定的格式,也就是說(shuō),標(biāo)準(zhǔn)明確定義了何種電平和何時(shí)出現(xiàn)這種電平(CRC定界符、ACK定界符、幀結(jié)束以及間歇,但是間歇還有一些另外的特殊錯(cuò)誤檢查規(guī)則)。如果一個(gè)CAN控制器在這些固定字段中的一個(gè)中檢測(cè)到無(wú)效值,將發(fā)出組成錯(cuò)誤。

4. 應(yīng)答檢查

總線上正確接收?qǐng)?bào)文的所有節(jié)點(diǎn)(不管這些節(jié)點(diǎn)是否對(duì)報(bào)文內(nèi)容“感興趣”)預(yù)期將在報(bào)文中所謂的應(yīng)答時(shí)隙中發(fā)送一個(gè)顯性電平。這是,發(fā)送方將發(fā)送一個(gè)隱性電平。如果發(fā)送方無(wú)法在應(yīng)答時(shí)隙中檢測(cè)到顯性電平,會(huì)發(fā)出應(yīng)答錯(cuò)誤的信號(hào)。

5. 循環(huán)冗余檢查

每個(gè)報(bào)文都包含一個(gè)15位的循環(huán)冗余校驗(yàn)和(CRC)。節(jié)點(diǎn)如果在報(bào)文中檢測(cè)到與自己計(jì)算所得不同的CRC,將發(fā)出CRC錯(cuò)誤的信號(hào)。

錯(cuò)誤限制機(jī)制

總線上的每個(gè)CAN控制器都將在每個(gè)報(bào)文中嘗試檢測(cè)以上列出的錯(cuò)誤。如果發(fā)現(xiàn)錯(cuò)誤,發(fā)現(xiàn)節(jié)點(diǎn)將發(fā)送一個(gè)錯(cuò)誤標(biāo)志,從而停止總線通信。其它節(jié)點(diǎn)將檢測(cè)到由錯(cuò)誤標(biāo)志引發(fā)的錯(cuò)誤(如果它們尚未檢測(cè)到原始錯(cuò)誤)并采取恰當(dāng)?shù)拇胧ㄒ簿褪莵G棄當(dāng)前報(bào)文)。

每個(gè)節(jié)點(diǎn)維護(hù)兩個(gè)錯(cuò)誤計(jì)數(shù)器:傳送錯(cuò)誤計(jì)數(shù)器和接收錯(cuò)誤計(jì)數(shù)器。有幾個(gè)規(guī)則規(guī)定這些計(jì)數(shù)器怎樣增加和/或減少計(jì)數(shù)??偟膩?lái)講,檢測(cè)到故障的傳送器增加其傳送錯(cuò)誤計(jì)數(shù)器比偵聽(tīng)節(jié)點(diǎn)增加其接收錯(cuò)誤計(jì)數(shù)器要快。這是因?yàn)楹苡锌赡苁莻魉推靼l(fā)生了故障!

節(jié)點(diǎn)開(kāi)始時(shí)處于主動(dòng)錯(cuò)誤模式。當(dāng)兩個(gè)錯(cuò)誤計(jì)數(shù)器中的任何一個(gè)的計(jì)數(shù)超過(guò)127時(shí),當(dāng)兩個(gè)錯(cuò)誤計(jì)數(shù)器中的任何一個(gè)計(jì)數(shù)超過(guò)127時(shí),節(jié)點(diǎn)將進(jìn)入稱為被動(dòng)錯(cuò)誤的狀態(tài)。當(dāng)傳送錯(cuò)誤計(jì)數(shù)器達(dá)到255以上時(shí),節(jié)點(diǎn)將進(jìn)入總線離線狀態(tài)。

1.主動(dòng)錯(cuò)誤節(jié)點(diǎn)將在檢測(cè)到錯(cuò)誤時(shí)發(fā)送主動(dòng)錯(cuò)誤標(biāo)志。

2.被動(dòng)錯(cuò)誤節(jié)點(diǎn)將在檢測(cè)到錯(cuò)誤時(shí)發(fā)送被動(dòng)錯(cuò)誤標(biāo)志。

3.總線離線節(jié)點(diǎn)不會(huì)在總線上傳送任何內(nèi)容。

增加和減少錯(cuò)誤計(jì)數(shù)器的規(guī)則略顯復(fù)雜,但是原理比較簡(jiǎn)單:傳送錯(cuò)誤的步進(jìn)為8個(gè)錯(cuò)誤點(diǎn)數(shù),而接收錯(cuò)誤的步進(jìn)為1個(gè)錯(cuò)誤點(diǎn)數(shù)。正確傳送和/或接收的報(bào)文會(huì)減小計(jì)數(shù)器值。

示例(稍加簡(jiǎn)化):假設(shè)總線上的節(jié)點(diǎn)A運(yùn)氣不好。不管什么時(shí)候A發(fā)送報(bào)文都發(fā)生失敗(由于種種原因)。每次失敗時(shí),它的傳送錯(cuò)誤計(jì)數(shù)器增加8并發(fā)送主動(dòng)錯(cuò)誤標(biāo)志。然后它將嘗試重傳報(bào)文,但是一直失敗。

當(dāng)傳送錯(cuò)誤計(jì)數(shù)器超過(guò)127時(shí)(也就是在16次嘗試之后),節(jié)點(diǎn)A進(jìn)入被動(dòng)錯(cuò)誤模式。區(qū)別在于,它現(xiàn)在將在總線上傳送被動(dòng)錯(cuò)誤標(biāo)志。被動(dòng)錯(cuò)誤標(biāo)志包含6個(gè)隱性位,不會(huì)影響其它的總線通信,所以其它節(jié)點(diǎn)不會(huì)偵聽(tīng)到有關(guān)總線錯(cuò)誤的反饋。但是,A繼續(xù)增加其傳送錯(cuò)誤計(jì)數(shù)器。當(dāng)計(jì)數(shù)值超過(guò)255時(shí),節(jié)點(diǎn)A最終放棄傳送并進(jìn)入總線離線模式。

其它節(jié)點(diǎn)怎樣響應(yīng)節(jié)點(diǎn)A?對(duì)于A傳送的每個(gè)主動(dòng)錯(cuò)誤標(biāo)志,其它節(jié)點(diǎn)將為其接收錯(cuò)誤計(jì)數(shù)器增加1。當(dāng)A進(jìn)入總線離線狀態(tài)時(shí),其它節(jié)點(diǎn)的接收錯(cuò)誤計(jì)數(shù)器的計(jì)數(shù)大大低于錯(cuò)誤被動(dòng)的限制值(127)。每次正確收到一條報(bào)文,這個(gè)計(jì)數(shù)值將減1。但是,節(jié)點(diǎn)A將停留在總線離線狀態(tài)。

大部分CAN控制器將為兩種狀態(tài)提供狀態(tài)位(和相應(yīng)的中斷):

“錯(cuò)誤警告” – 一個(gè)或兩個(gè)錯(cuò)誤計(jì)數(shù)器的計(jì)數(shù)超過(guò)96

“總線離線”,如上所述。

一些控制器(但不是所有)還為被動(dòng)錯(cuò)誤狀態(tài)提供一個(gè)位。一些控制器還可以直接訪問(wèn)錯(cuò)誤計(jì)數(shù)器。

CAN控制器在發(fā)生錯(cuò)誤時(shí)自動(dòng)重傳報(bào)文的特性有時(shí)候會(huì)很煩人。市場(chǎng)上至少有一種控制器(飛利浦公司生產(chǎn)的SJA1000)允許對(duì)錯(cuò)誤處理完全人工控制。

總線故障模式

ISO 11898標(biāo)準(zhǔn)列出了CAN總線線纜的幾種故障模式:

1.CAN_H中斷

2.CAN_L中斷

3.CAN_H短路到電池電壓

4.CAN_L短路到接地

5.CAN_H短路到接地

6.CAN_L短路到電池電壓

7.CAN_L短路到CAN_H線路

8.CAN_H和CAN_L在同一個(gè)位置中斷

9.丟失到終端網(wǎng)絡(luò)的連接

對(duì)于故障1-6和9,建議減小S/N比率保持總線繼續(xù)工作。對(duì)于故障8,建議保持產(chǎn)生的子系統(tǒng)繼續(xù)工作。對(duì)于故障7,可以選擇減小S/N比率繼續(xù)工作。

實(shí)踐中,使用82C250類型收發(fā)器的CAN系統(tǒng)無(wú)法在發(fā)生故障1-7時(shí)繼續(xù)工作,在發(fā)生故障8-9時(shí)可能無(wú)法繼續(xù)工作。

但是,存在諸如TJA1053等容錯(cuò)能力強(qiáng)的驅(qū)動(dòng)程序可以處理所有故障。通常,獲得這種容錯(cuò)能力的代價(jià)是最大速度受到限制。對(duì)于TJA1053,最大速度是125kbps。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2754

    瀏覽量

    463717
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2256

    瀏覽量

    94575
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2881

    瀏覽量

    88090

原文標(biāo)題:CAN總線錯(cuò)誤處理介紹

文章出處:【微信號(hào):智能汽車電子與軟件,微信公眾號(hào):智能汽車電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CAN控制器總線錯(cuò)誤分析之CAN節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(cè)試

    總線關(guān)閉(bus off)是CAN節(jié)點(diǎn)比較重要的錯(cuò)誤處理機(jī)制。那么,在總線關(guān)閉狀態(tài)下,CAN節(jié)點(diǎn)的恢復(fù)流程是怎樣的?又該如何理解節(jié)點(diǎn)恢復(fù)
    發(fā)表于 08-04 11:16 ?1.5w次閱讀
    <b class='flag-5'>CAN</b>控制器<b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤</b>分析之<b class='flag-5'>CAN</b>節(jié)點(diǎn)BusOff恢復(fù)過(guò)程分析與測(cè)試

    一文讀懂Can總線錯(cuò)誤處理

    為了防止故障節(jié)點(diǎn)干擾甚至阻塞整個(gè)CAN網(wǎng)絡(luò)系統(tǒng),CAN協(xié)議實(shí)現(xiàn)了復(fù)雜的故障限制機(jī)制。為了保證通信的正常,CAN 2.0 總線協(xié)議總線中各節(jié)點(diǎn)
    發(fā)表于 11-08 17:12 ?9986次閱讀

    一文讀懂CAN總線錯(cuò)誤處理

    為了防止故障節(jié)點(diǎn)干擾甚至阻塞整個(gè)CAN網(wǎng)絡(luò)系統(tǒng),CAN協(xié)議實(shí)現(xiàn)了復(fù)雜的故障限制機(jī)制。為了保證通信的正常,CAN 2.0 總線協(xié)議總線中各節(jié)點(diǎn)
    發(fā)表于 06-21 17:14 ?6613次閱讀
    一文讀懂<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤處理</b>

    Rust語(yǔ)言中錯(cuò)誤處理的機(jī)制

    可能的錯(cuò)誤,實(shí)際運(yùn)行中仍然可能出現(xiàn)各種各樣的錯(cuò)誤,比如文件不存在、網(wǎng)絡(luò)連接失敗等等。對(duì)于這些不可預(yù)測(cè)的錯(cuò)誤,我們必須使用錯(cuò)誤處理機(jī)制來(lái)進(jìn)行處理
    的頭像 發(fā)表于 09-19 14:54 ?1415次閱讀

    CAN總線錯(cuò)誤分析方法 精選資料推薦

    我們先簡(jiǎn)單總結(jié)一下CAN錯(cuò)誤處理與故障界定:1.CAN控制器記錄發(fā)生在發(fā)送/接收過(guò)程中,總線數(shù)據(jù)出現(xiàn)錯(cuò)誤的總數(shù)(位
    發(fā)表于 08-20 06:18

    LabVIEW中的錯(cuò)誤處理

    如何合理使用 LabVIEW 中的自定義錯(cuò)誤處理功能;對(duì)于可預(yù)見(jiàn)的錯(cuò)誤,是否可以選擇直 接忽略,或者前幾次嘗試忽略直到該特定錯(cuò)誤出現(xiàn)很多次后才通知用戶需要糾正該錯(cuò)誤 了;是否可以對(duì)
    發(fā)表于 05-24 11:07 ?6次下載

    關(guān)于CAN總線錯(cuò)誤的相關(guān)知識(shí)

    在本系列文章中,我們將為您詳細(xì)介紹CAN總線錯(cuò)誤的相關(guān)知識(shí),包括CAN總線
    的頭像 發(fā)表于 05-27 17:56 ?3115次閱讀

    CAN總線錯(cuò)誤的類型介紹

    在本系列文章中,我們將為您詳細(xì)介紹CAN總線錯(cuò)誤的相關(guān)知識(shí),包括CAN總線
    的頭像 發(fā)表于 06-13 16:08 ?8228次閱讀

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

    AsimpleintrotoCANerrorsCAN總線錯(cuò)誤介紹在本系列文章中,我們將為您詳細(xì)介紹CAN
    的頭像 發(fā)表于 06-09 09:46 ?2174次閱讀
    虹科干貨 | 帶你全面認(rèn)識(shí)“<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤</b>”(二)——<b class='flag-5'>CAN</b><b class='flag-5'>錯(cuò)誤</b>類型

    虹科干貨 | 帶你全面了解“CAN總線錯(cuò)誤”(三)——CAN節(jié)點(diǎn)狀態(tài)與錯(cuò)誤計(jì)數(shù)器

    AsimpleintrotoCANerrorsCAN總線錯(cuò)誤介紹在本系列文章中,我們將為您詳細(xì)介紹CAN
    的頭像 發(fā)表于 06-09 09:46 ?2414次閱讀
    虹科干貨 | 帶你全面了解“<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤</b>”(三)——<b class='flag-5'>CAN</b>節(jié)點(diǎn)狀態(tài)與<b class='flag-5'>錯(cuò)誤</b>計(jì)數(shù)器

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

    AsimpleintrotoCANerrorsCAN總線錯(cuò)誤介紹在本系列文章中,我們將為您詳細(xì)介紹CAN
    的頭像 發(fā)表于 05-27 10:39 ?4624次閱讀
    虹科干貨 | 帶你全面認(rèn)識(shí)“<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤</b>”(一)——<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤</b>與<b class='flag-5'>錯(cuò)誤</b>幀

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

    AsimpleintrotoCANerrorsCAN總線錯(cuò)誤介紹在本系列文章中,我們將為您詳細(xì)介紹CAN
    的頭像 發(fā)表于 06-02 09:41 ?1445次閱讀
    虹科干貨 | 帶你全面認(rèn)識(shí)“<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤</b>”(二)——<b class='flag-5'>CAN</b><b class='flag-5'>錯(cuò)誤</b>類型

    虹科干貨 | 帶你全面了解“CAN總線錯(cuò)誤”(四)——在實(shí)踐中生成和記錄CAN錯(cuò)誤

    節(jié)點(diǎn)錯(cuò)誤狀態(tài),并通過(guò)實(shí)際的應(yīng)用測(cè)試生成并記錄CAN錯(cuò)誤。在之前發(fā)布的文章中,我們介紹CAN錯(cuò)誤
    的頭像 發(fā)表于 06-09 10:21 ?1726次閱讀
    虹科干貨 | 帶你全面了解“<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤</b>”(四)——在實(shí)踐中生成和記錄<b class='flag-5'>CAN</b><b class='flag-5'>錯(cuò)誤</b>

    認(rèn)識(shí)CAN總線錯(cuò)誤 CAN總線錯(cuò)誤分析與解決

    認(rèn)識(shí)CAN 總線錯(cuò)誤的第一步就是了解認(rèn)識(shí)CAN 總線協(xié)議和它的具體功能,這樣才能更容易地理解CAN
    發(fā)表于 08-14 15:18 ?6284次閱讀
    認(rèn)識(shí)<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤</b> <b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯(cuò)誤</b>分析與解決

    socket編程中的錯(cuò)誤處理技巧

    Socket編程是網(wǎng)絡(luò)編程的基礎(chǔ),它允許程序之間通過(guò)TCP/IP協(xié)議進(jìn)行通信。然而,網(wǎng)絡(luò)通信是不穩(wěn)定的,可能會(huì)遇到各種問(wèn)題,如網(wǎng)絡(luò)延遲、連接中斷、數(shù)據(jù)丟失等。 錯(cuò)誤處理的重要性 提高程序的健壯性
    的頭像 發(fā)表于 11-01 17:47 ?862次閱讀