CAN總線中主動錯誤和被動錯誤的通俗解釋
1. 主動報錯站點
本文引用地址:http://www.104case.com/article/201612/330282.htm2. 被動報錯站點
3. 出錯標識本身沒有什么優先級的問題。
4. 對于通過競爭得到總線使用權的發送站點來說,它在一邊發一邊聽,有可能出現以下幾種情況:
(a) 它自己就發現錯誤,它就干脆嘩啦嘩啦,亂發一氣(連續的發六個同性位)。就象你小時候在幼兒園練習寫字,寫錯一個筆畫你自己就不耐煩了,在紙上嘩啦嘩啦亂畫一氣。目的就是告訴別人(別的站點):出錯了!
(b) 它自己沒有發現錯誤,但作為主動報錯的接收站點發現了錯誤(比如因為線路長,干擾大引起的錯誤),這個發現錯誤的站點就會立即嘩啦嘩啦往總線上亂發一氣(連續的發六個顯性位),就象你小時候在幼兒園練習寫字,寫錯一個筆畫你自己沒發現,可老師(主動報錯站點)發現了就不耐煩了,在你的紙上嘩啦嘩啦亂畫一氣。目的就是告訴你自己以及告訴別人(發送站點和別的站點):出錯了!
(c) 它自己沒有發現錯誤,但作為被動報錯的接收站點發現了錯誤(比如因為線路長,干擾大引起的錯誤),這個發現錯誤的站點只能慢慢的等待,等待別的主動報錯站點報錯。如果別的主動報錯站點沒發現錯誤,那就繼續等,一直等到該發ACK的時候不給發送站發這個顯性的ACK信號,當然了其他站點可能會發這個ACK,那說明其他站點沒有發生錯誤,沒辦法,別人能通信,你不能!然后積攢到一定的時候,你就脫離總線吧!再繼續等待一段時間,脫胎換骨,重新回到總線上(這個時候錯誤記錄都清0了,你肯定是主動報錯站了)。就象你小時候在幼兒園練習寫字,寫錯一個筆畫你自己沒發現,但被別的同學(被動報錯站點)發現了,但他不能說,嘿嘿(亂說話,老師要打屁股的),他就只能等,等老師來發現你的錯誤(等待主動報錯站點報錯),或者老師沒眼力,那就等到收作業的時候,不收你的(不發ACK),不過老師可能主動來收的(給你發ACK),那你可沒辦法,繼續等吧,等到你也當老師了(脫胎換骨了)...
devicenet協議中關于CAN 的出錯管理的規范
一、
CAN 提供了檢測下列錯誤類型的機制:
l. 位錯誤
2. 應答錯誤
3. 填充錯誤
4. CRC 錯誤
5. 格式錯誤
二、節點錯誤狀態
1. 錯誤主動(Error Active)
2. 錯誤被動 (Error Passive)
3. 離線 (Bus Off)
故障界定狀態機制中所含過程簡述如下:
1. 節點保持對發送和接收錯誤計數器的跟蹤;
2. 節點在開始錯誤主動狀態時錯誤計數器的值等于0。該狀態下的節點假設所有檢測到的錯誤非該節點所為;
3. 錯誤類型以及檢出錯誤的結點被賦予不同的計數值,這些計數值將根據是發送還是接收錯誤進行累加。有效的接收及發送使這些計數器遞減,直至最小值0;
4. 當這些計數器中的任何一個超出 CAN 定義的閾值時,該節點進入錯誤被動狀態。在此狀態下該節點將被認為是導致錯誤的原因;
5. 當發送錯誤計數值超出 CAN 定義的另一個閾值時,節點進入離線狀態。本規范定義了從離線到錯誤主動之間的狀態轉換機制;
6. 當錯誤被動的節點的發送及接收錯誤計數器值都減小至CAN 定義的閾值以下時,節點重新進入錯誤主動狀態。
評論