分布式嵌入系統(tǒng)中的交互一致性
3 CAN在這類(lèi)應(yīng)用中的可能性
3.1 帶寬
對(duì)4個(gè)輪子節(jié)點(diǎn)和1個(gè)指令節(jié)點(diǎn)(由踏板或其他系統(tǒng)轉(zhuǎn)發(fā)剎車(chē)命令,轉(zhuǎn)發(fā)由輪子來(lái)的輪速信號(hào))構(gòu)成的互為冗余系統(tǒng),要容許1個(gè)錯(cuò)時(shí),采用SM算法需要2輪通信,對(duì)5個(gè)節(jié)點(diǎn)需要交換輸入數(shù)據(jù)1次,共25種幀,4個(gè)節(jié)點(diǎn)交換輸出數(shù)據(jù)1次,共16種幀。如果要求每5 ms進(jìn)行一次協(xié)調(diào),傳送41幀,對(duì)CAN而言將非常吃緊,這就是經(jīng)常提到的CAN的帶寬局限。這里假設(shè)了冗余后的系統(tǒng)只容許5 ms內(nèi)有1個(gè)錯(cuò)。如果從互為冗余剎車(chē)系統(tǒng)的性?xún)r(jià)比考慮,為了此帶寬問(wèn)題,設(shè)立專(zhuān)用的CAN總線(xiàn)也是值得的。
SM算法實(shí)際上對(duì)數(shù)據(jù)的傳送有很大的重復(fù),在本例中對(duì)一個(gè)從節(jié)點(diǎn)而言它收到了5次。如果從節(jié)點(diǎn)只是瞬時(shí)有故障,它一定會(huì)收到正確值。按照SM算法,為了對(duì)付m個(gè)錯(cuò),需要m+1個(gè)從節(jié)點(diǎn),因此雖然互為冗余系統(tǒng)有5個(gè)節(jié)點(diǎn),并不需要每個(gè)從節(jié)點(diǎn)都進(jìn)行轉(zhuǎn)發(fā)。例如取3個(gè)從節(jié)點(diǎn)轉(zhuǎn)發(fā)輸入,那么每5 ms就傳送36幀,可以緩解帶寬瓶頸。如取2個(gè)從節(jié)點(diǎn)轉(zhuǎn)發(fā),帶寬變?yōu)槊? ms傳送27幀。
3.2 確定性
有一種觀點(diǎn)認(rèn)為只有時(shí)間觸發(fā)的通信協(xié)議才能滿(mǎn)足高可信賴(lài)性要求。但這是片面的。在本例中,如果把所有互為冗余系統(tǒng)需要傳送的消息都設(shè)為較高優(yōu)先級(jí),那么在總線(xiàn)上它們將像一個(gè)長(zhǎng)幀不受阻擋延遲,只要帶寬容許,就能送達(dá)。至于這些消息內(nèi)部的到達(dá)先后,在SM算法中并無(wú)影響。更廣義地講,只要把CAN的觸發(fā)事件與時(shí)間一一對(duì)應(yīng),它也可實(shí)現(xiàn)時(shí)間觸發(fā)的功能。利用CAN的竟?fàn)幇l(fā)送,有錯(cuò)未發(fā)節(jié)點(diǎn)的帶寬可被其他節(jié)點(diǎn)盡早利用,SM算法所需的時(shí)限計(jì)時(shí)器只要一個(gè)就夠了。
3.3 錯(cuò)幀漏檢
由于CAN中位填充規(guī)則對(duì)CRC的影響,根據(jù)筆者的研究,它的錯(cuò)幀漏檢率較大,遠(yuǎn)大于Bosch CAN2.0規(guī)范的數(shù)據(jù)。但是由于SM算法中簽名的存在,這一問(wèn)題已免除或緩解。當(dāng)簽名也用本文建議的CRC方法,那么簽名錯(cuò)而漏檢的情況可以用CAN錯(cuò)幀漏檢率同樣的方法分析與改進(jìn)。
3.4 容錯(cuò)
SM算法假設(shè)發(fā)送的消息總能正確送達(dá),通信中可檢出錯(cuò)要排除在外。這就需要某種糾錯(cuò)或冗余。CAN的出錯(cuò)自動(dòng)重發(fā)是很好的糾錯(cuò)措施,但它只能應(yīng)對(duì)瞬時(shí)干擾,對(duì)物理通道上的故障如斷線(xiàn)、短路等,需要用容錯(cuò)CAN協(xié)議ISO118983的收發(fā)器。此種收發(fā)器的帶寬更小,標(biāo)準(zhǔn)為125 kbps,較好的MAX3054可達(dá)250 kbps。如果互為冗余剎車(chē)系統(tǒng)的控制周期定為20 ms(即容許20 ms內(nèi)有一個(gè)錯(cuò))(參考文獻(xiàn)[5]中引述的線(xiàn)控轉(zhuǎn)向的容許失控時(shí)間為50 ms),那么CAN在滿(mǎn)足容許物理故障時(shí)還能滿(mǎn)足SM算法的帶寬要求的。從概率上講,由于重發(fā)而占用的帶寬增量并不大。
4 小結(jié)
分布式互為冗余系統(tǒng)的特點(diǎn)是用重新分配的原理實(shí)現(xiàn)故障-安全。并不是所有系統(tǒng)都能采用這種方法。但是在分布式系統(tǒng)中保證數(shù)據(jù)的一致性是很重要的,例如同一數(shù)據(jù)可能應(yīng)用于不同目的的控制系統(tǒng)中,這些系統(tǒng)在分開(kāi)設(shè)計(jì)時(shí)就默認(rèn)了數(shù)據(jù)一定是一致的。如果發(fā)生了不一致,這些系統(tǒng)的交互影響就難以預(yù)測(cè)。因此SM算法有其現(xiàn)實(shí)意義。
SM算法可以發(fā)現(xiàn)節(jié)點(diǎn)MCU與通信控制器的傳遞過(guò)程中的錯(cuò),以及通信中的拜占庭錯(cuò),這是一個(gè)非常重要的特性。由于本文發(fā)現(xiàn)了SM算法的簽名轉(zhuǎn)述同時(shí)具備的二個(gè)功能─重復(fù)發(fā)送和接收認(rèn)可,使主節(jié)點(diǎn)也能與其他節(jié)點(diǎn)達(dá)到一致,這大大提高了容錯(cuò)實(shí)現(xiàn)的簡(jiǎn)易性。一般地說(shuō),拜占庭錯(cuò)難以發(fā)現(xiàn),當(dāng)雙互備份架構(gòu)輸入有拜占庭錯(cuò)時(shí),無(wú)法確定誰(shuí)錯(cuò)而無(wú)法實(shí)現(xiàn)故障-靜默,甚至可能出現(xiàn)互相沖突的輸出。采用SM算法,可實(shí)現(xiàn)雙互備份架構(gòu)輸入的一致性,再借用其他系統(tǒng)的節(jié)點(diǎn)的部分計(jì)算能力,可用使雙互備份架構(gòu)實(shí)現(xiàn)等效的三重備份輸出的一致性。這在經(jīng)濟(jì)上有巨大意義。
本文根據(jù)總線(xiàn)通信分析了SM算法的實(shí)施方法以及CAN在用于SM算法時(shí)的一些問(wèn)題。CAN是成熟的技術(shù),成本較低,盡量擴(kuò)展其應(yīng)用是理所當(dāng)然的事。就互為冗余剎車(chē)系統(tǒng)而言,CAN仍然是可以應(yīng)用的。參考文獻(xiàn)[3]提到了一種在2002年還是研制中的時(shí)間觸發(fā)協(xié)議,現(xiàn)在看來(lái),可能是FlexRay協(xié)議。毫無(wú)疑問(wèn),F(xiàn)lexRay的帶寬優(yōu)勢(shì)很大,但是對(duì)其的研究還有待深入,例如它的時(shí)鐘同步依賴(lài)于傳送電纜上的模擬電平跳變,毛刺可能改變跳變位置,從而破壞整個(gè)協(xié)議的基礎(chǔ)時(shí)鐘。
SM算法需要的消息簽名轉(zhuǎn)發(fā),均需要MCU的參與,對(duì)FlexRay或CAN而言,要高層協(xié)議或軟件中間件實(shí)現(xiàn),耗費(fèi)時(shí)間,增加中間環(huán)節(jié),增加了時(shí)間抖動(dòng)與受干擾可能性,總之效率不高,并不理想,最好是用專(zhuān)門(mén)的硬件實(shí)現(xiàn),這是值得探討的事。
評(píng)論