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