精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CAN總線錯誤處理介紹

智能汽車電子與軟件 ? 來源:電控知識搬運工 ? 2023-09-20 17:09 ? 次閱讀

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

CAN怎樣處理錯誤

錯誤處理內建在CAN協議中,對CAN系統的運行十分重要。錯誤處理的目標是檢測CAN總線上出現的報文中的錯誤,從而傳送器可以重傳出錯的報文。總線上的每個CAN控制器都會嘗試檢測報文中的錯誤。如果發現錯誤,發現節點將傳送一個錯誤標志,從而中斷總線通信。其它節點將檢測錯誤標志導致的錯誤(如果它們尚未檢測到初始錯誤)并采取合適的措施(例如丟棄當前報文)。

每個節點維護兩個錯誤計數器:傳送錯誤計數器和接收錯誤計數器。有幾個規則規定這些計數器怎樣增加和/或減少計數。總的來講,檢測到故障的傳送器增加其傳送錯誤計數器比偵聽節點增加其接收錯誤計數器要快。這是因為,很有可能是傳送器發生了故障!當任何錯誤計數器增加到超過某個值時,節點將首先進入“錯誤被動”,也就是說,它在檢測到錯誤時不會積極地阻止總線通信,然后“離開總線”,這意味著節點根本不參與總線通信。

使用錯誤計數器,CAN節點不但可以檢測故障,而且可以執行錯誤限制。

錯誤檢測機制

CAN協議定義了五種以上不同的方法來檢測錯誤。其中兩種工作在位層次,另外三種工作在報文層次。

位監視

位填充

幀檢查

應答檢查

循環冗余檢查

1. 位監視

CAN總線上的每個傳送器都會監視(也就是回讀)傳送的信號電平。如果真正讀到的位電平與傳送的位電平不同,會發出信號指示位錯誤(仲裁過程中不會發出位錯誤)。

2. 位填充

節點連續發送五個具有相同電平的位后,將在發送出去的位流中加上第六個相反電平的位。接收方將刪除這個額外的位。這樣做是為了避免總線上出現過度的直流電成分,但它同時也給予了接收方檢測錯誤的額外機會:如果總線上出現五個以上相同電平的連續位,會發出信號指示填充錯誤。

3. 幀檢查

CAN報文的一些部分具有固定的格式,也就是說,標準明確定義了何種電平和何時出現這種電平(CRC定界符、ACK定界符、幀結束以及間歇,但是間歇還有一些另外的特殊錯誤檢查規則)。如果一個CAN控制器在這些固定字段中的一個中檢測到無效值,將發出組成錯誤。

4. 應答檢查

總線上正確接收報文的所有節點(不管這些節點是否對報文內容“感興趣”)預期將在報文中所謂的應答時隙中發送一個顯性電平。這是,發送方將發送一個隱性電平。如果發送方無法在應答時隙中檢測到顯性電平,會發出應答錯誤的信號。

5. 循環冗余檢查

每個報文都包含一個15位的循環冗余校驗和(CRC)。節點如果在報文中檢測到與自己計算所得不同的CRC,將發出CRC錯誤的信號。

錯誤限制機制

總線上的每個CAN控制器都將在每個報文中嘗試檢測以上列出的錯誤。如果發現錯誤,發現節點將發送一個錯誤標志,從而停止總線通信。其它節點將檢測到由錯誤標志引發的錯誤(如果它們尚未檢測到原始錯誤)并采取恰當的措施(也就是丟棄當前報文)。

每個節點維護兩個錯誤計數器:傳送錯誤計數器和接收錯誤計數器。有幾個規則規定這些計數器怎樣增加和/或減少計數。總的來講,檢測到故障的傳送器增加其傳送錯誤計數器比偵聽節點增加其接收錯誤計數器要快。這是因為很有可能是傳送器發生了故障!

節點開始時處于主動錯誤模式。當兩個錯誤計數器中的任何一個的計數超過127時,當兩個錯誤計數器中的任何一個計數超過127時,節點將進入稱為被動錯誤的狀態。當傳送錯誤計數器達到255以上時,節點將進入總線離線狀態。

1.主動錯誤節點將在檢測到錯誤時發送主動錯誤標志。

2.被動錯誤節點將在檢測到錯誤時發送被動錯誤標志。

3.總線離線節點不會在總線上傳送任何內容。

增加和減少錯誤計數器的規則略顯復雜,但是原理比較簡單:傳送錯誤的步進為8個錯誤點數,而接收錯誤的步進為1個錯誤點數。正確傳送和/或接收的報文會減小計數器值。

示例(稍加簡化):假設總線上的節點A運氣不好。不管什么時候A發送報文都發生失敗(由于種種原因)。每次失敗時,它的傳送錯誤計數器增加8并發送主動錯誤標志。然后它將嘗試重傳報文,但是一直失敗。

當傳送錯誤計數器超過127時(也就是在16次嘗試之后),節點A進入被動錯誤模式。區別在于,它現在將在總線上傳送被動錯誤標志。被動錯誤標志包含6個隱性位,不會影響其它的總線通信,所以其它節點不會偵聽到有關總線錯誤的反饋。但是,A繼續增加其傳送錯誤計數器。當計數值超過255時,節點A最終放棄傳送并進入總線離線模式。

其它節點怎樣響應節點A?對于A傳送的每個主動錯誤標志,其它節點將為其接收錯誤計數器增加1。當A進入總線離線狀態時,其它節點的接收錯誤計數器的計數大大低于錯誤被動的限制值(127)。每次正確收到一條報文,這個計數值將減1。但是,節點A將停留在總線離線狀態。

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

“錯誤警告” – 一個或兩個錯誤計數器的計數超過96

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

一些控制器(但不是所有)還為被動錯誤狀態提供一個位。一些控制器還可以直接訪問錯誤計數器。

CAN控制器在發生錯誤時自動重傳報文的特性有時候會很煩人。市場上至少有一種控制器(飛利浦公司生產的SJA1000)允許對錯誤處理完全人工控制。

總線故障模式

ISO 11898標準列出了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在同一個位置中斷

9.丟失到終端網絡的連接

對于故障1-6和9,建議減小S/N比率保持總線繼續工作。對于故障8,建議保持產生的子系統繼續工作。對于故障7,可以選擇減小S/N比率繼續工作。

實踐中,使用82C250類型收發器的CAN系統無法在發生故障1-7時繼續工作,在發生故障8-9時可能無法繼續工作。

但是,存在諸如TJA1053等容錯能力強的驅動程序可以處理所有故障。通常,獲得這種容錯能力的代價是最大速度受到限制。對于TJA1053,最大速度是125kbps。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • CAN
    CAN
    +關注

    關注

    57

    文章

    2715

    瀏覽量

    463372
  • 計數器
    +關注

    關注

    32

    文章

    2253

    瀏覽量

    94352
  • 總線
    +關注

    關注

    10

    文章

    2866

    瀏覽量

    87985

原文標題:CAN總線錯誤處理介紹

文章出處:【微信號:智能汽車電子與軟件,微信公眾號:智能汽車電子與軟件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CAN控制器總線錯誤分析之CAN節點BusOff恢復過程分析與測試

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

    一文讀懂Can總線錯誤處理

    為了防止故障節點干擾甚至阻塞整個CAN網絡系統,CAN協議實現了復雜的故障限制機制。為了保證通信的正常,CAN 2.0 總線協議總線中各節點
    發表于 11-08 17:12 ?9727次閱讀

    一文讀懂CAN總線錯誤處理

    為了防止故障節點干擾甚至阻塞整個CAN網絡系統,CAN協議實現了復雜的故障限制機制。為了保證通信的正常,CAN 2.0 總線協議總線中各節點
    發表于 06-21 17:14 ?6005次閱讀
    一文讀懂<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯誤處理</b>

    Rust語言中錯誤處理的機制

    可能的錯誤,實際運行中仍然可能出現各種各樣的錯誤,比如文件不存在、網絡連接失敗等等。對于這些不可預測的錯誤,我們必須使用錯誤處理機制來進行處理
    的頭像 發表于 09-19 14:54 ?1361次閱讀

    CAN總線錯誤分析方法 精選資料推薦

    我們先簡單總結一下CAN錯誤處理與故障界定:1.CAN控制器記錄發生在發送/接收過程中,總線數據出現錯誤的總數(位
    發表于 08-20 06:18

    LabVIEW中的錯誤處理

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

    關于CAN總線錯誤的相關知識

    在本系列文章中,我們將為您詳細介紹CAN總線錯誤的相關知識,包括CAN總線
    的頭像 發表于 05-27 17:56 ?3057次閱讀

    CAN總線錯誤的類型介紹

    在本系列文章中,我們將為您詳細介紹CAN總線錯誤的相關知識,包括CAN總線
    的頭像 發表于 06-13 16:08 ?8148次閱讀

    虹科干貨 | 帶你全面認識“CAN總線錯誤”(二)——CAN錯誤類型

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

    虹科干貨 | 帶你全面了解“CAN總線錯誤”(三)——CAN節點狀態與錯誤計數器

    AsimpleintrotoCANerrorsCAN總線錯誤介紹在本系列文章中,我們將為您詳細介紹CAN
    的頭像 發表于 06-09 09:46 ?2318次閱讀
    虹科干貨 | 帶你全面了解“<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯誤</b>”(三)——<b class='flag-5'>CAN</b>節點狀態與<b class='flag-5'>錯誤</b>計數器

    虹科干貨 | 帶你全面認識“CAN總線錯誤”(一)——CAN總線錯誤錯誤

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

    虹科干貨 | 帶你全面認識“CAN總線錯誤”(二)——CAN錯誤類型

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

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

    節點錯誤狀態,并通過實際的應用測試生成并記錄CAN錯誤。在之前發布的文章中,我們介紹CAN錯誤
    的頭像 發表于 06-09 10:21 ?1637次閱讀
    虹科干貨 | 帶你全面了解“<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯誤</b>”(四)——在實踐中生成和記錄<b class='flag-5'>CAN</b><b class='flag-5'>錯誤</b>

    認識CAN總線錯誤 CAN總線錯誤分析與解決

    認識CAN 總線錯誤的第一步就是了解認識CAN 總線協議和它的具體功能,這樣才能更容易地理解CAN
    發表于 08-14 15:18 ?5906次閱讀
    認識<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯誤</b> <b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>錯誤</b>分析與解決

    socket編程中的錯誤處理技巧

    Socket編程是網絡編程的基礎,它允許程序之間通過TCP/IP協議進行通信。然而,網絡通信是不穩定的,可能會遇到各種問題,如網絡延遲、連接中斷、數據丟失等。 錯誤處理的重要性 提高程序的健壯性
    的頭像 發表于 11-01 17:47 ?798次閱讀