<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > CAN總線(xiàn)中主動(dòng)錯誤和被動(dòng)錯誤的通俗解釋

CAN總線(xiàn)中主動(dòng)錯誤和被動(dòng)錯誤的通俗解釋

作者: 時(shí)間:2016-12-15 來(lái)源:網(wǎng)絡(luò ) 收藏
首先建議把廣泛使用的“主動(dòng)錯誤”和“被動(dòng)錯誤”概念換成“主動(dòng)報錯”和“被動(dòng)報錯”。

1. 主動(dòng)報錯站點(diǎn)

本文引用地址:http://dyxdggzs.com/article/201612/330282.htm

只要檢查到錯誤,它立即“主動(dòng)地”發(fā)出錯標識。所謂“出錯標識“,它本身就是一個(gè)“錯誤的位序列”(連續的6個(gè)顯性位,不滿(mǎn)足CAN協(xié)議的“最多5個(gè)連續的同性位”要求),目的是“主動(dòng)地”告訴大家:即使你們沒(méi)有發(fā)現“剛才我已發(fā)現”的錯誤,現在我“以身作則”出錯啦!你們該看到這個(gè)錯誤了吧!

2. 被動(dòng)報錯站點(diǎn)

如果檢查到錯誤,它只能干瞪眼“被動(dòng)地”等別人(主動(dòng)報錯站點(diǎn))報錯,等待的時(shí)候它可不能去動(dòng)總線(xiàn),直到識別出由主動(dòng)報錯站點(diǎn)發(fā)出 的“錯誤的位序列”,它才松了一口氣:有人正式報錯了!然后他就可以去競爭總線(xiàn),該干啥干啥。

3. 出錯標識本身沒(méi)有什么優(yōu)先級的問(wèn)題。

4. 對于通過(guò)競爭得到總線(xiàn)使用權的發(fā)送站點(diǎn)來(lái)說(shuō),它在一邊發(fā)一邊聽(tīng),有可能出現以下幾種情況:

(a) 它自己就發(fā)現錯誤,它就干脆嘩啦嘩啦,亂發(fā)一氣(連續的發(fā)六個(gè)同性位)。就象你小時(shí)候在幼兒園練習寫(xiě)字,寫(xiě)錯一個(gè)筆畫(huà)你自己就不耐煩了,在紙上嘩啦嘩啦亂畫(huà)一氣。目的就是告訴別人(別的站點(diǎn)):出錯了!

(b) 它自己沒(méi)有發(fā)現錯誤,但作為主動(dòng)報錯的接收站點(diǎn)發(fā)現了錯誤(比如因為線(xiàn)路長(cháng),干擾大引起的錯誤),這個(gè)發(fā)現錯誤的站點(diǎn)就會(huì )立即嘩啦嘩啦往總線(xiàn)上亂發(fā)一氣(連續的發(fā)六個(gè)顯性位),就象你小時(shí)候在幼兒園練習寫(xiě)字,寫(xiě)錯一個(gè)筆畫(huà)你自己沒(méi)發(fā)現,可老師(主動(dòng)報錯站點(diǎn))發(fā)現了就不耐煩了,在你的紙上嘩啦嘩啦亂畫(huà)一氣。目的就是告訴你自己以及告訴別人(發(fā)送站點(diǎn)和別的站點(diǎn)):出錯了!

(c) 它自己沒(méi)有發(fā)現錯誤,但作為被動(dòng)報錯的接收站點(diǎn)發(fā)現了錯誤(比如因為線(xiàn)路長(cháng),干擾大引起的錯誤),這個(gè)發(fā)現錯誤的站點(diǎn)只能慢慢的等待,等待別的主動(dòng)報錯站點(diǎn)報錯。如果別的主動(dòng)報錯站點(diǎn)沒(méi)發(fā)現錯誤,那就繼續等,一直等到該發(fā)ACK的時(shí)候不給發(fā)送站發(fā)這個(gè)顯性的ACK信號,當然了其他站點(diǎn)可能會(huì )發(fā)這個(gè)ACK,那說(shuō)明其他站點(diǎn)沒(méi)有發(fā)生錯誤,沒(méi)辦法,別人能通信,你不能!然后積攢到一定的時(shí)候,你就脫離總線(xiàn)吧!再繼續等待一段時(shí)間,脫胎換骨,重新回到總線(xiàn)上(這個(gè)時(shí)候錯誤記錄都清0了,你肯定是主動(dòng)報錯站了)。就象你小時(shí)候在幼兒園練習寫(xiě)字,寫(xiě)錯一個(gè)筆畫(huà)你自己沒(méi)發(fā)現,但被別的同學(xué)(被動(dòng)報錯站點(diǎn))發(fā)現了,但他不能說(shuō),嘿嘿(亂說(shuō)話(huà),老師要打屁股的),他就只能等,等老師來(lái)發(fā)現你的錯誤(等待主動(dòng)報錯站點(diǎn)報錯),或者老師沒(méi)眼力,那就等到收作業(yè)的時(shí)候,不收你的(不發(fā)ACK),不過(guò)老師可能主動(dòng)來(lái)收的(給你發(fā)ACK),那你可沒(méi)辦法,繼續等吧,等到你也當老師了(脫胎換骨了)...

devicenet協(xié)議中關(guān)于CAN 的出錯管理的規范

一、錯誤類(lèi)型

CAN 提供了檢測下列錯誤類(lèi)型的機制:

l. 位錯誤

當發(fā)送器將自己發(fā)送的電平與總線(xiàn)上的電平相比較,發(fā)現兩者不相等時(shí)產(chǎn)生。隱性位傳輸時(shí), 顯形位的檢測在仲裁區, ACK 時(shí)間段或被動(dòng)故障標志傳輸期間不會(huì )導致位錯誤。

2. 應答錯誤

當發(fā)送器確定信息沒(méi)有得到應答時(shí)發(fā)生。在數據幀及遠程幀之間存在一個(gè)應答時(shí)間段。該時(shí)間段內,所有接收的節點(diǎn),無(wú)論是否是預定的接收者都必須對接收的信息作出應答。

3. 填充錯誤

當節點(diǎn)檢測到 6 個(gè)相同電平值的連續位時(shí)發(fā)生。在正常工作情況下,當發(fā)送器檢測到它已經(jīng)發(fā)送了 5 個(gè)數值相同的連續位時(shí),那么它將在第六位上插入一個(gè)取反值(稱(chēng)之為位填充)。所有接收器在 CRC (循環(huán)冗余檢查)計算之前將除去填充位。 這樣,當節點(diǎn)檢測到 6 個(gè)連續的具有相同值的位時(shí),即產(chǎn)生一個(gè)填充位錯誤。

4. CRC 錯誤

當 CRC (循環(huán)冗余檢查)值與發(fā)送器生成值不匹配時(shí)發(fā)生。每一幀包含一個(gè)由發(fā)送器初始化的循環(huán)冗余檢查 (CRC) 域。接收器計算出 CRC值,并與發(fā)送器產(chǎn)生的值相比較。如果兩個(gè)值不相等,即產(chǎn)生 CRC 錯誤。

5. 格式錯誤

當在一必須發(fā)送預定值的區內檢測到非法位時(shí)發(fā)生。確定的預定義的位值必須在 CAN 幀內的一個(gè)確定點(diǎn)發(fā)送,如果在這些區域中的一個(gè)內檢測到非法位值,即產(chǎn)生格式錯誤。

二、節點(diǎn)錯誤狀態(tài)

為了盡量減小網(wǎng)絡(luò )上故障節點(diǎn)的負面影響,進(jìn)而提供故障界定, CAN 定義了一個(gè)故障界定狀態(tài)機制。一個(gè)節點(diǎn)可能處于下列三種錯誤狀態(tài)之一:

1. 錯誤主動(dòng)(Error Active)

當一個(gè)錯誤主動(dòng)節點(diǎn)檢測到錯誤時(shí),它將發(fā)送一個(gè)錯誤主動(dòng)幀,該幀由 6 個(gè)連續的顯性位組成。這一發(fā)送將覆蓋其他任何同時(shí)生成的發(fā)送,并導致其他所有節點(diǎn)都檢測到一個(gè)填充錯誤,并依次放棄當前幀。

當處于錯誤主動(dòng)狀態(tài)的節點(diǎn)檢測到一個(gè)發(fā)送問(wèn)題時(shí),它將發(fā)出一個(gè)活動(dòng)錯誤幀,以避免所有其他節點(diǎn)接收信息包。無(wú)論檢測到錯誤的節點(diǎn)是否要接收這個(gè)數據都要執行這個(gè)過(guò)程。

2. 錯誤被動(dòng) (Error Passive)

當一個(gè)錯誤被動(dòng)節點(diǎn)檢測到錯誤時(shí),它將發(fā)出一個(gè)錯誤被動(dòng)幀。該幀由 6 個(gè)連續的隱性位組成,這個(gè)幀可能會(huì )被同時(shí)出現的其他發(fā)送所覆蓋,如果其它站點(diǎn)沒(méi)有檢測到這一錯誤將不會(huì )引起丟棄當前幀。

3. 離線(xiàn) (Bus Off)

處于離線(xiàn)狀態(tài)下的節點(diǎn)不允許對總線(xiàn)有任何影響它在邏輯上與網(wǎng)絡(luò )斷開(kāi)。

故障界定狀態(tài)機制中所含過(guò)程簡(jiǎn)述如下:

1. 節點(diǎn)保持對發(fā)送和接收錯誤計數器的跟蹤;
2. 節點(diǎn)在開(kāi)始錯誤主動(dòng)狀態(tài)時(shí)錯誤計數器的值等于0。該狀態(tài)下的節點(diǎn)假設所有檢測到的錯誤非該節點(diǎn)所為;

3. 錯誤類(lèi)型以及檢出錯誤的結點(diǎn)被賦予不同的計數值,這些計數值將根據是發(fā)送還是接收錯誤進(jìn)行累加。有效的接收及發(fā)送使這些計數器遞減,直至最小值0;

4. 當這些計數器中的任何一個(gè)超出 CAN 定義的閾值時(shí),該節點(diǎn)進(jìn)入錯誤被動(dòng)狀態(tài)。在此狀態(tài)下該節點(diǎn)將被認為是導致錯誤的原因;

5. 當發(fā)送錯誤計數值超出 CAN 定義的另一個(gè)閾值時(shí),節點(diǎn)進(jìn)入離線(xiàn)狀態(tài)。本規范定義了從離線(xiàn)到錯誤主動(dòng)之間的狀態(tài)轉換機制;

6. 當錯誤被動(dòng)的節點(diǎn)的發(fā)送及接收錯誤計數器值都減小至CAN 定義的閾值以下時(shí),節點(diǎn)重新進(jìn)入錯誤主動(dòng)狀態(tài)。



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>