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