CAN消極報(bào)錯(cuò)發(fā)送節(jié)點(diǎn)變?yōu)殡x線(xiàn)狀態(tài)的故障
只要有掛起待發(fā)的消息,此錯(cuò)就重復(fù)發(fā)生。由于發(fā)送節(jié)點(diǎn)的地位未變,它的TEC就一直加上去,直到TEC≥256,節(jié)點(diǎn)成為真正的離線(xiàn)狀態(tài)。這不是本文第1節(jié)所說(shuō)的等同離線(xiàn)狀態(tài)。在離線(xiàn)狀態(tài)下,如果能從總線(xiàn)上讀到128次連續(xù)的11位隱位,它就可以恢復(fù)為主動(dòng)報(bào)錯(cuò)狀態(tài)??偩€(xiàn)上不足11位的隱位將不被計(jì)入。因此,這種離線(xiàn)狀態(tài)一般要長(zhǎng)于參考文獻(xiàn)[1]所說(shuō)的等同離線(xiàn)狀態(tài)。為了作比較,假定幀長(zhǎng)均為含2字節(jié)數(shù)據(jù)的幀(66位),在掛起的消息傳送16次后,該處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)成為離線(xiàn),即16×(66+3)=1 104位后離線(xiàn);又假設(shè)最壞情況下有分散的10位空閑,那么節(jié)點(diǎn)處于離線(xià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í),其等同離線(xiàn)狀態(tài)就會(huì)結(jié)束。
這種處于消極報(bào)錯(cuò)狀態(tài)的發(fā)送節(jié)點(diǎn)故障有三種可能的方案:第一種方案是,將消極報(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)CAN通信控制器芯片要修改。第二種方案是采用某種形式的CAN時(shí)間觸發(fā)CAN協(xié)議,預(yù)留出一些總線(xiàn)空閑時(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)和等同離線(xiàn)的情況出現(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ì)汽車(chē)類(lèi)的應(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)車(chē)子在這種“跛”著回家方式下工作時(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ò)和離線(xiàn)二種狀態(tài),那么離線(xiàn)時(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 CAN2.0規(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 小 結(jié)
上述分析表明:處于消極報(bào)錯(cuò)狀態(tài)的CAN發(fā)送節(jié)點(diǎn)在某些條件下會(huì)因一次誤判而進(jìn)入離線(xiàn)狀態(tài)。其離線(xiàn)的時(shí)間一般比處于消極報(bào)錯(cuò)狀態(tài)的接收節(jié)點(diǎn)因一次誤判而進(jìn)入的等同離線(xiàn)狀態(tài)要長(zhǎng)。為了避免這種類(lèi)型的失效,最好的解決方案是采用可變長(zhǎng)消極報(bào)錯(cuò)幀分界符,使消極報(bào)錯(cuò)狀態(tài)的節(jié)點(diǎn)總能與系統(tǒng)內(nèi)的其他節(jié)點(diǎn)保持幀啟停的同步。在同步的情況下,假設(shè)現(xiàn)有CAN調(diào)度分析的理論沒(méi)有大的缺失,例如沒(méi)有此類(lèi)故障,沒(méi)有引起超載幀的條件,可以提供較為可信的結(jié)果。
評(píng)論