CAN總線錯誤處理機制

2021-02-24 汽車ECU開發

CAN總線問題是一類比較普遍的問題,為了方便CAN總線問題的排查,對CAN總線的錯誤處理機制進行總結。

錯誤幀

當節點檢測到錯誤時,節點會向總線上發送錯誤幀,通知其他節點當前總線有錯誤。錯誤幀由錯誤標誌和錯誤界定符組成,如圖1所示。並且分為主動錯誤狀態下的錯誤幀和被動錯誤狀態下的錯誤幀。

圖1 錯誤幀

其中:

        主動錯誤狀態下錯誤幀的錯誤標誌為6位連續的顯性位。

        被動錯誤狀態下錯誤幀的錯誤標誌為6位連續的隱性位。

        錯誤界定符統一為8位連續的隱性位。

錯誤檢測

CAN總線的錯誤類型包括位錯誤、填充錯誤、格式錯誤、ACK錯誤、CRC錯誤五種,錯誤的作用域如圖2所示。其中位錯誤、格式錯誤、ACK錯誤屬於發送節點的錯誤,填充錯誤、格式錯誤、CRC錯誤屬於接收節點的錯誤。

圖2 錯誤的作用域

位錯誤

節點將發送至總線上的電平與從總線回讀的電平進行比較,如果兩者不同,例如發送的是隱性位,回讀到確是顯性位,則節點會檢測出位錯誤,如圖3所示。有以下三種例外情況不屬於位錯誤:

1.仲裁區,節點發送隱性位,回讀為顯性位,這種情況表示仲裁失敗。

2.ACK槽,節點發送隱性位,回讀為顯性位,這種情況表示當前節點發送的報文至少被一個接收節點正確接收。

3.該節點發送被動錯誤標誌位,節點向總線發送被動錯誤標誌,回讀的不是六位連續的隱性位,這種情況是由於CAN總線是線與機制,被動錯誤標誌被其他節點發送的顯性位給覆蓋,所以回讀不是6位連續的隱性位。

圖3 位錯誤

填充錯誤

在使用位填充法(CAN協議中規定,當相同極性的電平持續五位時,則添加一個極性相反的位)進行編碼的信息中,出現了6個連續相同的位電平,則檢測為填充錯誤。

ACK錯誤

節點在發送報文(數據幀或遙控幀)時,如果接收節點成功接收報文,那麼接收節點會在ACK槽對應的時間段內向總線發送一個顯性位,告知發送節點報文已正常接收,如圖4所示。當發送節點在ACK槽時間內沒有回讀到顯性位,則發送節點檢測到ACK錯誤。

圖4 ACK交互

CRC錯誤

發送節點在發送CAN報文(數據幀或遙控幀)時,會對幀起始、仲裁段、控制段、數據段(如圖5所示)進行CRC計算,並將計算的結果放置在CRC段。接收節點在接收報文時對相同的段執行相同的CRC算法,如果計算結果與CRC段的數據不同,則接收節點檢測出CRC錯誤。

圖5 CRC作用域

格式錯誤

報文中,固定形式的位場含有1個或多個非法位,包括數據幀或遙控幀的CRC界定符、ACK界定符、EOF、錯誤幀界定符、過載幀界定符,則節點檢測為格式錯誤。

錯誤通知

總線上節點的狀態機如圖6所示,節點狀態分為三種,分別是主動錯誤、被動錯誤、總線關閉。狀態跳轉依據的是TEC(發送錯誤計數器)和REC(接收錯誤計數器)的值,其中REC和TEC都小於127時為主動錯誤狀態,該狀態下節點能正常進行通信,當錯誤產生時,發送6個連續顯性位組成的主動錯誤標誌;當REC或者TEC大於127時,節點狀態跳轉至被動錯誤狀態,該狀態下節點能正常通信;當錯誤產生時,發送6個連續隱性位組成的被動錯誤標誌;當TEC達到255時,節點進入BusOff狀態,並且不能收發報文,總線上其他節點依然可以正常通信。

圖6 節點狀態機

TEC和REC計數器值的增減是根據表1規定進行的。

表1 錯誤規則

————|往期回顧|————

AUTOSAR CanNm介紹

AUTOSAR BswM介紹

AUTOSAR DCM介紹

    點擊以下圖片關注公眾號!

相關焦點

  • CAN總線錯誤處理
    一 背景寫這篇文章是因為我看到網上介紹CAN總線錯誤處理的文章,清一色的都是生搬照抄教科書或是數據文檔的內容,特別是國內很難找到一些有價值的內容,這讓一些真正有需要的人很苦惱,包括我自己。這篇不打算對CAN的錯誤處理機製做進一步的探討,而是從實際工作中碰到的具體問題來分析一些常見的CAN總線錯誤和解決辦法。
  • 乾貨 | CAN總線的通信錯誤與處理措施
    在CAN總線中存在5種錯誤類型:位錯誤:向總線送出一位的某個節點同時也在監視總線
  • 新能源汽車CAN總線Bus Off處理流程
    例如,當汽車發生碰撞時,傳感器將電信號傳送給安全氣囊ECU,將信號進行處理,當確定需要打開安全氣囊時,ECU會立即發出點火信號,氣體發生器才會充滿氣囊,對駕駛員和乘客提供安全保護,如下圖所示。若此時安全氣囊ECU處於總線關閉狀態,則無法正常彈出氣囊,會導致嚴重後果。
  • CAN總線中主動錯誤和被動錯誤的通俗解釋
    然後積攢到一定的時候,你就脫離總線吧!再繼續等待一段時間,脫胎換骨,重新回到總線上(這個時候錯誤記錄都清0了,你肯定是主動報錯站了)。devicenet協議中關於CAN 的出錯管理的規範一、錯誤類型CAN 提供了檢測下列錯誤類型的機制:l.
  • GEMAC CAN總線測試分析儀
    在CAN總線運行期間出現的典型問題,例如節點故障,通信故障或完全停止運行等,通常源於物理總線的特性.CAN-Bus Tester 2概述了信號總線上的各種狀況,可以幫助您找到並糾正經常發生的錯誤原因,而不會造成不必要的延遲。
  • 非常好的CAN總線教程
    分別是:(1) 數據幀:數據幀將數據從發送器傳輸到接收器;(2) 遠程幀:總線節點發出遠程幀,請求發送具有同一標識符的數據幀;(3) 錯誤幀:任何節點檢測到總線錯誤就發出錯誤幀;(4) 過載幀:過載幀用已在先行的後續的數據幀(或遠程幀)之間提供一附加的延時。我們先研究數據幀吧。
  • 地鐵屏蔽門CAN總線故障排查流程
    從上述介紹中,我們可以發現,地鐵屏蔽門系統是由PSC通過CAN總線來直接控制DCU門單元,同時,由PSA來監控DCU的開關狀態,並通過CAN總線來反饋給PSC。由於CAN-bus總線的錯誤處理機制,可以保證網絡中任何一個節點發生故障時,不會影響到整個網絡的運行,也便於定位錯誤節點。
  • 總線架構30講,啥是CAN錯誤幀?真的那麼煩人嗎?(1/5)
    因為被動錯誤標誌是六個連續的隱性位,所以在總線上按照線與機制,有可能這六個連續隱性位被其它節點發送的顯性電平「吃掉」;3.2 ACK錯誤(Acknowledgment Error)按照CAN協議的規定,在一幀報文(數據幀或者遙控幀)發出之後,如果接收節點Node_B成功接收了該幀報文,那麼接收節點Node_B就要在該幀報文ACK槽對應的時間段內向總線上發送一個顯性位來應答發送節點
  • CAN總線簡明易懂教程
    分別是:(1) 數據幀:數據幀將數據從發送器傳輸到接收器;(2) 遠程幀:總線節點發出遠程幀,請求發送具有同一標識符的數據幀;(3) 錯誤幀:任何節點檢測到總線錯誤就發出錯誤幀;(4) 過載幀:過載幀用已在先行的後續的數據幀(或遠程幀)之間提供一附加的延時。我們先研究數據幀吧。
  • CAN、I2S、I2C、SPI、SSP總線對比
    CAN 是一種多主方式的串行通訊總線,基本設計規範要求有高的位速率、高抗電磁幹擾性,而且要能夠檢測出總線的任何錯誤。當信號傳輸距離達10Km 時CAN 仍可提供高達50Kbit/s 的數據傳輸速率。CAN 具有十分優越的特點:  A、較低的成本與極高的總線利用率;  B、 數據傳輸距離可長達10Km,傳輸速率可高達1Mbit/s;  C、可靠的錯誤處理和檢錯機制,發送的信息遭到破壞後可自動重發;  D、節點在錯誤嚴重的情況下具有自動退出總線的功能;  E、報文不包含源地址或目標地址僅用標誌符來指示功能信息和優先級信息;  由於人為、自然、其它外界環境的影響和人們對公交系統的安全可靠性
  • 一文看懂CAN總線原理、特點及應用
    採用雙線串行通信方式,檢錯能力強,可在高噪聲幹擾環境中工作;  3、具有優先權和仲裁功能,多個控制模塊通過CAN 控制器掛到CAN-bus 上,形成多主機局部網絡;  4、可根據報文的ID決定接收或屏蔽該報文;  5、可靠的錯誤處理和檢錯機制
  • CAN總線的升級版——CAN FD簡介
    原因主要是因為汽車功能越來越多,越來越複雜,傳統的CAN總線(CAN2.0)的負載率越來越高,甚至負載率高達95%。2.因為歷史原因,汽車不可能直接放棄目前的傳統CAN總線技術,一切推到重來。那麼為了解決CAN總線負載率問題,而又能兼容CAN總線,並且研發成本不能太高的問題,2015年最新的修訂版ISO 11898-1(classic CAN和CAN FD)發布。什麼是CAN FD?
  • 一文讀懂CAN總線(三)
    (一)中我們介紹了標準CAN和擴展CAN以及CAN消息類型;在一文讀懂CAN總線(二)中為大家介紹了CAN總線的位填充機制、錯誤檢測和故障界定、網絡拓撲、終端匹配、我們在一文讀懂CAN總線(二)中提到過:CAN總線上的差分電壓>0.9V才能被識別成顯性電平。而為了保證可靠的數據通訊,常用的經驗法則是:最末端節點差分電壓幅值不小於1.2V。現在2號節點只有1V差分電壓,其可靠性已經變得較低了。
  • 基於CAN總線的地鐵屏蔽門系統故障排除方法概述
    由於CAN-bus總線的錯誤處理機制,可以保證網絡中任何一個節點發生故障時,不會影響到整個網絡的運行,也便於定位錯誤節點。同時,也因為CAN-bus總線的報文是以廣播的方式發送到總線上,可以保證屏蔽門的安全關閉或打開,提高安全穩定性。 如果PSC與DCU之間出現CAN通信錯誤,將直接導致地鐵屏蔽門發生故障,嚴重會導致地鐵列車系統無法正常運行,甚至威脅乘客生命安全。
  • 基於CAN總線的碼頭岸電監控系統實時性分析
    1.2 幀延時分析幀延時既報文信息的傳輸延時,由報文的幀長度和總線的傳輸速率決定。根據CAN2.0B協議,CAN總線的報文信息共有以下4種幀類型:數據幀、遠程幀、錯誤幀和過載幀。CAN總線為實現總線空閒的確定、CAN控制器的同步和傳輸錯誤的檢測,採用位流編碼技術,即在幀的幀起始、仲裁場、控制場、數據場以及CRC序列。
  • 如何快速實現CAN總線故障定位?
    一個故障節點或者隱患節點往往會危害到整個產品的安全,如新能源車的控制總線中,故障節點導致儀錶盤數據更新滯後、顯示錯誤導致司機判斷錯誤引發道路安全事故。 圖1 總線故障案例其一,當總線節點過多或者總線布線複雜時往往使工程師抓狂;其二,假如故障原因是各節點容抗、阻抗控制不好導致的,往往多個節點的累積效應才導致問題出現,因此最後一個掛上去且總線出問題的節點不可避免要「背鍋」。 圖2 節點依次接入總線方法二:根據特徵電平判斷錯誤原因。
  • 處理CAN息線Babbling ldiot失效的方法
    由於CAN系統內的優先級機制和出錯傳遞機制,當故障是由接收方面引起時,這種約束方法會錯怪了發送器。例如,位時間錯誤的接收節點總會使發送一接收過程失敗,它可能會使很多節點進入離線狀態,即在CAN總線系統中由一個節點失效擴大為系統失效。
  • 精講CAN總線通信---CAN總線拓撲結構、CAN控制器和收發器、CAN總線控制器晶片濾波器的作用、CAN設備的電源連接
    CAN是一種分布式的控制總線,總線上的每一個節點一般來說都比較簡單,使用MCU控制器處理CAN總線數據,完成特定的功能;通過CAN總線將各節點連接只需較少的線纜(兩根線:CAN_H和CAN_L),可靠性也較高。
  • CAN總線入門(硬體部分)
    ,今天的文章是關於最重要的車載總線——CAN BUS。一、CAN總線是什麼?在汽車上,CAN總線的作用就是把不同的部件連接起來,然後這些部件都執行同一套標準協議,這樣的好處是兼容性高,信息可以可靠共享,並且能減少整車的線束數量。節點可以掛很多部件三、CAN總線的優點1. 簡單低成本:ECU通過單個CAN系統進行通信,而不是直接的複雜模擬信號線通信,這樣減少了錯誤,重量,接線和成本。2.
  • 汽車CAN總線的數據幀結構
    信息想要在CAN-BUS區域網內有效、快速的傳遞,就要把它轉換為適合CAN-BUS總線的傳輸格式。我們把這種信息稱之為報文,把適合CAN-BUS總線傳輸的格式稱之為報文格式。總線上的信息是以不同的固定報文格式發送的,但長度受限。