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