



免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
CAN消極報(bào)錯(cuò)發(fā)送節(jié)點(diǎn)變?yōu)殡x線狀態(tài)的故障時(shí)間:2009-06-30 13:04:11來(lái)源:?jiǎn)纹瑱C(jī)與嵌入式系統(tǒng)應(yīng)用 作者:重慶工業(yè)自動(dòng)化儀表研究所 楊福字摘要 處于消極報(bào)錯(cuò)狀態(tài)的CAN節(jié)點(diǎn)在一次本地錯(cuò)之后,由于標(biāo)準(zhǔn)考慮不周,會(huì)產(chǎn)生該節(jié)點(diǎn)與其他節(jié)點(diǎn)在幀啟停上的不同步,造成錯(cuò)誤的不斷延續(xù),在接收節(jié)點(diǎn)中產(chǎn)生等同離線狀態(tài)。本文討論了在發(fā)送節(jié)點(diǎn)中產(chǎn)生真正離線的原因,并提出了解決方案。關(guān)鍵詞 CAN報(bào)錯(cuò)幀分界符 優(yōu)先級(jí)逆轉(zhuǎn) 離線 CAN是應(yīng)用非常廣泛的現(xiàn)場(chǎng)總線。它已經(jīng)被大部分汽車廠商用作車內(nèi)控制器交換信息的通信干線,是分布式嵌入式系統(tǒng)的關(guān)鍵部分。但是它有一種以前未討論過(guò)的與安全有關(guān)的故障,當(dāng)某一處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)由于干擾而產(chǎn)生一個(gè)本地錯(cuò)后,因標(biāo)準(zhǔn)考慮欠周,該節(jié)點(diǎn)會(huì)與其他節(jié)點(diǎn)幀啟停失去同步,在其他掛起待發(fā)的消息發(fā)送時(shí)不斷出錯(cuò),形成等同于離線的狀態(tài),無(wú)法提供服務(wù),從而危及安全。本文討論處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn),由于同樣的原因失去同步后的演變過(guò)程。這里不同的是,因?yàn)闃?biāo)準(zhǔn)中的另一個(gè)規(guī)定,它可能經(jīng)歷一個(gè)真正的離線狀態(tài)。1 CAN標(biāo)準(zhǔn)的安全漏洞 在討論該問(wèn)題時(shí)假定讀者對(duì)CAN的標(biāo)準(zhǔn)已有充分的了解,由于中文譯法的差別,本文采用的術(shù)語(yǔ)可能有所不同,相信不會(huì)影響讀者的理解。在Bosch CAN2.O規(guī)范313款中說(shuō):“為了使報(bào)錯(cuò)幀正確結(jié)束,消極報(bào)錯(cuò)節(jié)點(diǎn)可能需要處于空閑狀態(tài)至少有3bit時(shí)間(如果消極報(bào)錯(cuò)接收節(jié)點(diǎn)發(fā)生本地錯(cuò)),因此總線不應(yīng)滿負(fù)荷運(yùn)行?!边@是引起應(yīng)用出故障的原因。因?yàn)楣?jié)點(diǎn)問(wèn)并無(wú)時(shí)間同步,即便總線有空閑時(shí)間,也不能保證像上述要求那樣的分布。掛起待發(fā)的消息將在服務(wù)間隔(intermission,圖中縮寫為IM)后立即發(fā)送。這在規(guī)范中也有規(guī)定:“在另一條消息發(fā)送過(guò)程中掛起待發(fā)的消息在服務(wù)間隔后的第一位啟動(dòng)(發(fā)送)”。ISO11898標(biāo)準(zhǔn)沒(méi)有提到3位空閑問(wèn)題,但是CAN一致性測(cè)試標(biāo)準(zhǔn)ISO16845的具體條文會(huì)有這種要求(雖然該空閑要求還是不充分的)。CAN規(guī)定處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)在發(fā)現(xiàn)錯(cuò)之后發(fā)出6位隱位的消極報(bào)錯(cuò)標(biāo)志(Passive error flag),如讀回6個(gè)連續(xù)的相同位時(shí),就確認(rèn)報(bào)錯(cuò)標(biāo)志發(fā)完,如沒(méi)發(fā)現(xiàn)6個(gè)連續(xù)的相同位,就繼續(xù)發(fā)隱位,直到得到確認(rèn),然后開(kāi)始消極報(bào)錯(cuò)幀分界符的發(fā)送。分界符從發(fā)出隱位讀回也是隱位時(shí)開(kāi)始計(jì)算,總共為8個(gè)連續(xù)的隱位。在CAN一致性測(cè)試標(biāo)準(zhǔn)ISO16845的756款與8513款中,規(guī)定了接收節(jié)點(diǎn)與發(fā)送節(jié)點(diǎn)在發(fā)消極報(bào)錯(cuò)幀分界符時(shí)的格式錯(cuò)檢查辦法。它規(guī)定,在消極報(bào)錯(cuò)幀分界符開(kāi)始后的8位中不得有顯位;如有顯位,就視為出錯(cuò),開(kāi)始新的報(bào)錯(cuò)幀。 如果一個(gè)處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)發(fā)現(xiàn)一個(gè)本地錯(cuò)(即有一種誤判或漏判),由于其他節(jié)點(diǎn)不發(fā)主動(dòng)報(bào)錯(cuò)幀,那么它發(fā)的消極報(bào)錯(cuò)幀標(biāo)志就不會(huì)及時(shí)得到確認(rèn),往往要到圖1所示的數(shù)據(jù)幀或遠(yuǎn)程幀的EOF第5位才會(huì)得到確認(rèn);而它的消極報(bào)錯(cuò)幀分界符將延續(xù)到幀的服務(wù)間隔之后,它就和其他節(jié)點(diǎn)的幀啟停失去了同步。其他節(jié)點(diǎn)開(kāi)始新幀的SOF將被它視為格式錯(cuò),而開(kāi)始發(fā)新的消極報(bào)錯(cuò)幀。當(dāng)其他節(jié)點(diǎn)有掛起待發(fā)的幀不斷發(fā)送時(shí),這個(gè)處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)一直處于不斷出錯(cuò)的狀態(tài),不能發(fā)送也不能接收,即等同于離線狀態(tài)。 這種源自標(biāo)準(zhǔn)考慮不周的故障會(huì)使CAN的優(yōu)先級(jí)逆轉(zhuǎn)(在處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)中的高優(yōu)先級(jí)消息無(wú)法發(fā)送);同時(shí),基于優(yōu)先級(jí)進(jìn)行的調(diào)度分析失靈。以此為算法設(shè)計(jì)得到的消息最壞送達(dá)時(shí)間將是不可靠的,車的安全會(huì)受影響。在參考文獻(xiàn)1中,討論了修改消極報(bào)錯(cuò)幀分界符長(zhǎng)度來(lái)解決該故障的方法。2 處于消極報(bào)錯(cuò)狀態(tài)發(fā)送節(jié)點(diǎn)本地錯(cuò)的后果 處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)在有本地錯(cuò)時(shí),其行為傾向更差。標(biāo)準(zhǔn)ISO16845的869款對(duì)發(fā)送節(jié)點(diǎn)在消極報(bào)錯(cuò)幀分界符內(nèi)的格式錯(cuò)規(guī)定了發(fā)送錯(cuò)計(jì)數(shù)器TEC+8,第7612款對(duì)處于消極報(bào)錯(cuò)狀態(tài)的接收節(jié)點(diǎn)在消極報(bào)錯(cuò)幀分界符內(nèi)的格式錯(cuò)規(guī)定了接收錯(cuò)計(jì)數(shù)器REC+1。而且標(biāo)準(zhǔn)規(guī)定REC是有上限的,它不會(huì)導(dǎo)致節(jié)點(diǎn)成為離線狀態(tài);但TEC會(huì)一直加上去,當(dāng)TEC=256時(shí)節(jié)點(diǎn)就成為離線狀態(tài),直到在總線上讀到128個(gè)連續(xù)的11個(gè)隱位,然后它變?yōu)橹鲃?dòng)報(bào)錯(cuò)狀態(tài)。因此弄清楚節(jié)點(diǎn)是接收還是發(fā)送的地位非常重要。 Bosch CAN 2O規(guī)范32款對(duì)節(jié)點(diǎn)的定義是這樣的:“開(kāi)始一個(gè)消息的單元被稱為該消息的發(fā)送節(jié)點(diǎn)。在總線空閑之前,或該單元在仲裁中失敗之前,該單元一直是發(fā)送節(jié)點(diǎn)?!薄耙粋€(gè)節(jié)點(diǎn)被稱為一條消息的接收節(jié)點(diǎn)的條件是:它不是該消息的發(fā)送節(jié)點(diǎn)且總線不空閑”。國(guó)際標(biāo)準(zhǔn)ISO11898-1:2003第418款有類似的定義:“發(fā)送節(jié)點(diǎn)是指開(kāi)始一個(gè)數(shù)據(jù)幀或遠(yuǎn)程幀的節(jié)點(diǎn),在總線再次空閑之前或在仲裁失敗之前,它仍是發(fā)送節(jié)點(diǎn)”。第416款:“不是發(fā)送節(jié)點(diǎn)且總線不空閑時(shí)節(jié)點(diǎn)是接收節(jié)點(diǎn)”。標(biāo)準(zhǔn)考慮了如下幾種情況: 一個(gè)節(jié)點(diǎn)開(kāi)始發(fā)送ID,仲裁失敗,在此段時(shí)間里它是發(fā)送節(jié)點(diǎn),而后它是接收節(jié)點(diǎn)。 一個(gè)節(jié)點(diǎn)開(kāi)始發(fā)送ID,仲裁勝出,發(fā)送完數(shù)據(jù)幀或遠(yuǎn)程幀,在整個(gè)發(fā)送時(shí)段及其后的服務(wù)間隔內(nèi),它是發(fā)送節(jié)點(diǎn)。 一個(gè)節(jié)點(diǎn)開(kāi)始發(fā)送ID,其中發(fā)生錯(cuò)誤,或者在仲裁勝出后繼續(xù)發(fā)送中出錯(cuò),那么從開(kāi)始到報(bào)錯(cuò)幀結(jié)束及其后的服務(wù)間隔內(nèi),它是發(fā)送節(jié)點(diǎn)。因?yàn)榭偩€空閑最早在服務(wù)間隔之后。 一個(gè)節(jié)點(diǎn)開(kāi)始發(fā)送ID,仲裁勝出,發(fā)完數(shù)據(jù)幀或遠(yuǎn)程幀,但由于某種原因(EOF的最后一位為顯位,或其后的服務(wù)間隔內(nèi)第一、二位為顯位),接了一個(gè)超載幀。那么在整個(gè)上述時(shí)段及其后的服務(wù)間隔內(nèi),它是發(fā)送節(jié)點(diǎn)。 CAN協(xié)議沒(méi)有考慮重復(fù)出錯(cuò)的情況:第一次是處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)發(fā)現(xiàn)一個(gè)本地錯(cuò),其后是因?yàn)橄麡O報(bào)錯(cuò)幀結(jié)束時(shí)與其他節(jié)點(diǎn)幀啟停失去同步而造成新錯(cuò)。在圖2中,處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)在ACK位發(fā)現(xiàn)一個(gè)本地錯(cuò),它發(fā)的消極報(bào)錯(cuò)幀被其他節(jié)點(diǎn)視為EOF和服務(wù)間隔。其他節(jié)點(diǎn)發(fā)的新幀SOF被它視為格式錯(cuò)。該處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)無(wú)法見(jiàn)到它預(yù)期的服務(wù)間隔的結(jié)束,它就以發(fā)送節(jié)點(diǎn)的地位一直錯(cuò)下去。圖3中,處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)在EOF部分發(fā)現(xiàn)一個(gè)本地錯(cuò),其后續(xù)演化與圖2相似。 只要有掛起待發(fā)的消息,此錯(cuò)就重復(fù)發(fā)生。由于發(fā)送節(jié)點(diǎn)的地位未變,它的TEC就一直加上去,直到TEC256,節(jié)點(diǎn)成為真正的離線狀態(tài)。這不是本文第1節(jié)所說(shuō)的等同離線狀態(tài)。在離線狀態(tài)下,如果能從總線上讀到128次連續(xù)的11位隱位,它就可以恢復(fù)為主動(dòng)報(bào)錯(cuò)狀態(tài)。總線上不足11位的隱位將不被計(jì)入。因此,這種離線狀態(tài)一般要長(zhǎng)于參考文獻(xiàn)1所說(shuō)的等同離線狀態(tài)。為了作比較,假定幀長(zhǎng)均為含2字節(jié)數(shù)據(jù)的幀(66位),在掛起的消息傳送16次后,該處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)成為離線,即16(66+3)=1 104位后離線;又假設(shè)最壞情況下有分散的10位空閑,那么節(jié)點(diǎn)處于離線的時(shí)間為128(66+3+10)=10112位。該處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)發(fā)現(xiàn)一個(gè)本地錯(cuò)后,將有11 216位的時(shí)間不能正常收發(fā)。同樣情況下,一個(gè)處于消極報(bào)錯(cuò)狀態(tài)的接收節(jié)點(diǎn)發(fā)現(xiàn)一個(gè)本地錯(cuò)后在第一次遇到足夠空閑時(shí)間時(shí),其等同離線狀態(tài)就會(huì)結(jié)束。 這種處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)變?yōu)檎嬲x線的過(guò)程是無(wú)法從高層加以干預(yù)的,因?yàn)榘l(fā)送節(jié)點(diǎn)接收節(jié)點(diǎn)的地位不是一個(gè)軟件可控制的參數(shù)。3 為什么需要消極報(bào)錯(cuò)狀態(tài) 理論上,解決這一故障有三種可能的方案:第一種方案是,將消極報(bào)錯(cuò)幀分界符長(zhǎng)度按一定的規(guī)則改變,使處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)發(fā)現(xiàn)一個(gè)錯(cuò)后總能與其他節(jié)點(diǎn)幀啟停保持同步。在本文討論的處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)變?yōu)殡x線狀態(tài)的例子中,僅僅改變判斷發(fā)送節(jié)點(diǎn)接收節(jié)點(diǎn)的規(guī)則也是不夠的,因?yàn)樗鼉H能把可能的真正離線變?yōu)榈韧x線。所以隨情況改變,消極報(bào)錯(cuò)幀分界符長(zhǎng)度仍然是需要的。這一方案對(duì)應(yīng)用的改動(dòng)最小,僅CAN通信控制器芯片要修改。第二種方案是采用某種形式的CAN時(shí)間觸發(fā)CAN協(xié)議,預(yù)留出一些總線空閑時(shí)間,使處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)發(fā)現(xiàn)一個(gè)本地錯(cuò)后仍能與其他節(jié)點(diǎn)幀啟停同步;但是迄今為止討論的CAN時(shí)間觸發(fā)協(xié)議都缺少足夠的糾錯(cuò)能力,它們都禁止CAN的出錯(cuò)自動(dòng)重發(fā)機(jī)制,在出錯(cuò)后會(huì)導(dǎo)致數(shù)據(jù)的丟失。第三種可能的解決方案是,放棄消極報(bào)錯(cuò)狀態(tài),沒(méi)了消極報(bào)錯(cuò)狀態(tài)就沒(méi)了消極報(bào)錯(cuò)幀,就不會(huì)有不同步的情況出現(xiàn),也就不會(huì)有離線和等同離線的情況出現(xiàn)。 消極報(bào)錯(cuò)狀態(tài)使通信控制器在正常工作與停工之間有一個(gè)中間狀態(tài),在此種狀態(tài)下,它仍可發(fā)送和接收。唯一的差別是它的報(bào)錯(cuò)能力被限制到很小:只有發(fā)送節(jié)點(diǎn)在ACK以前的本地錯(cuò)會(huì)被其他節(jié)點(diǎn)知道。在其他情況下,消極報(bào)錯(cuò)幀不會(huì)影響其他節(jié)點(diǎn)的收發(fā),不管這種錯(cuò)是本地錯(cuò)還是全局錯(cuò)。這樣,如果這個(gè)處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)不正常,那么它對(duì)系統(tǒng)性能下降的影響就很?。蝗绻ぷ髡?,則系統(tǒng)的性能沒(méi)有損失。 對(duì)汽車類的應(yīng)用來(lái)說(shuō),環(huán)境很惡劣,出錯(cuò)是不可避免的,然而在現(xiàn)場(chǎng)進(jìn)行排障或修理是有難度或不可能的(例如上天或人海的應(yīng)用)。在那里,能“跛”著回家是最好的策略。這種策略不僅適用于機(jī)械部分,也適用于工作失常的電子通信系統(tǒng)。消極報(bào)錯(cuò)狀態(tài)符合這種策略。當(dāng)車子在這種“跛”著回家方式下工作時(shí),某些暫時(shí)性的故障有可能消失。例如,環(huán)境溫度、電磁場(chǎng)、振動(dòng)都可能因工況的不同或路段的不同而改變。隨著通信恢復(fù)正常,節(jié)點(diǎn)的狀態(tài)也可由消極報(bào)錯(cuò)狀態(tài)回到主動(dòng)報(bào)錯(cuò)狀態(tài)。如果節(jié)點(diǎn)只有主動(dòng)報(bào)錯(cuò)和離線二種狀態(tài),那么離線時(shí)節(jié)點(diǎn)就要不斷測(cè)試通信是否恢復(fù),或者等一段時(shí)間測(cè)試一下。顯然,這些方法效率要低,不像消極報(bào)錯(cuò)狀態(tài)時(shí)仍能提供服務(wù),意味著提供服務(wù)的時(shí)間的減少。延長(zhǎng)處于主動(dòng)報(bào)錯(cuò)狀態(tài)的時(shí)間,而去掉消極報(bào)錯(cuò)狀態(tài),會(huì)使有本地故障的節(jié)點(diǎn)對(duì)系統(tǒng)的干擾時(shí)間也延長(zhǎng)。因此廢棄消極報(bào)錯(cuò)狀態(tài)不是一個(gè)好的選擇。從Bosch CAN20規(guī)范里也可以體會(huì)到這一點(diǎn):它規(guī)定一個(gè)處于消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)一定不得發(fā)主動(dòng)報(bào)錯(cuò)標(biāo)志。消極報(bào)錯(cuò)狀態(tài)的想法也為FlexRay所采用,在它的協(xié)議運(yùn)行控制部分規(guī)定有三種狀態(tài),分別是POC:NormalActive、POC:Normeal Passive和POC:Halt。4
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)構(gòu)圖課件教學(xué)
- ppp教學(xué)模式課件
- 日語(yǔ)試講教學(xué)課件模板
- 攀枝花市應(yīng)急信息化建設(shè)趨勢(shì)及行業(yè)投資可行性研究報(bào)告
- 古代羅馬教學(xué)課件
- 音標(biāo)教學(xué)課件小學(xué)四年級(jí)
- 教師教學(xué)課件比賽
- 教育懲戒主題班會(huì)課件
- 弈秋 教學(xué)課件
- 春晚文化惠民活動(dòng)方案
- 危重病例管理制度和報(bào)告制度
- 除臭系統(tǒng)操作培訓(xùn)
- 2025年南外小升初測(cè)試題及答案
- 幼兒園一日活動(dòng)保教細(xì)則培訓(xùn)
- GB/T 45236-2025化工園區(qū)危險(xiǎn)品運(yùn)輸車輛停車場(chǎng)建設(shè)規(guī)范
- 瓦楞紙板銷售培訓(xùn)課件
- DBJ04T 432-2022 建設(shè)工程全過(guò)程造價(jià)咨詢標(biāo)準(zhǔn)
- FANUC機(jī)器人ARC Mate 120iD和M-20iD機(jī)械結(jié)構(gòu)手冊(cè)
- 慢病管理中心工作匯報(bào)
- 居間協(xié)議書(shū)居間協(xié)議書(shū)
- 廣西博物館2025事業(yè)單位招聘通過(guò)歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論