tft每日頭條

 > 科技

 > can總線入門

can總線入門

科技 更新时间:2024-11-27 13:46:39

can總線入門?CAN錯誤處理CAN怎樣處理錯誤,下面我們就來聊聊關于can總線入門?接下來我們就一起去了解一下吧!

can總線入門(CAN總線應用基礎精華課程系列)1

can總線入門

CAN錯誤處理

CAN怎樣處理錯誤

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

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

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

錯誤檢測機制

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

位監視

位填充

幀檢查

确認檢查

循環冗餘檢查

1. 位監視

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

2. 位填充

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

3. 幀檢查

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

4. 确認檢查

總線上正确收到報文的所有節點(不管這些節點是否對報文内容感興趣)都被期望在報文中稱為确認槽的位置中發送一個顯性電平。這是,發送方将發送一個隐性電平。如果發送方無法在确認槽中檢測到顯性電平,會發出确認錯誤的信号。

5. 循環冗餘檢查

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

錯誤限制機制

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

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

節點開始時處于“錯誤積極”模式。當兩個錯誤計數器中的任何一個的計數超過127時,節點将進入稱為“錯誤消極”的狀态。當傳送錯誤計數器達到255以上時,節點将進入“總線離線”狀态。

“錯誤積極”節點将在檢測到錯誤時發送積極錯誤标志。

“錯誤消極”節點将在檢測到錯誤時發送消極錯誤标志。

“總線離線”節點根本不會在總線上傳送任何内容。

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

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

當傳送錯誤計數器超過127時(也就是在16次嘗試之後),節點A進入“錯誤消極”狀态。區别在于,它現在将在總線上傳送消極錯誤标志。消極錯誤标志包含6個隐性位,不會影響其它的總線通信,所以其它節點不會聽到A在抱怨總線錯誤。但是,A繼續增加其傳送錯誤計數器。當計數值超過255時,節點A最終放棄傳送并進入“總線離線”狀态。

其它節點怎樣對待節點A?對于A傳送的每個積極錯誤标志,其它節點将為其接收錯誤計數器增加1。A進入“總線離線”狀态時,其它節點的接收錯誤計數器的計數大大低于“錯誤消極”的限制值(127)。每次正确收到一條報文,這個計數值将減1。但是,節點A将停留在“總線離線”狀态。

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

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

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

一些控制器(但不是所有)還為“錯誤消極”狀态提供一個位。一些控制器還提供對錯誤計數器的直接訪問。

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

總線故障模式

ISO 11898标準列出了CAN總線線纜的幾種故障模式:

CAN_H中斷

CAN_L中斷

CAN_H短路到電池電壓

CAN_L短路到接地

CAN_H短路到接地

CAN_L短路到電池電壓

CAN_L短路到CAN_H線路

CAN_H和CAN_L在同一個位置中斷

丢失到終端網絡的連接

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

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

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

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved