《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 分布式嵌入系統(tǒng)中的交互一致性
分布式嵌入系統(tǒng)中的交互一致性
維庫(kù)
摘要: 分布式嵌入系統(tǒng)中的交互一致性,許多應(yīng)用與人身安全或設(shè)備安全有密切聯(lián)系,隨著安全性要求的提高,希望設(shè)備或系統(tǒng)在其構(gòu)成的部件與控制裝置發(fā)生故障時(shí)仍能保證安全,即故障-安全(failsafe)的特性。系統(tǒng)是由子系統(tǒng)組成的,子系統(tǒng)有故障時(shí)有控制
Abstract:
Key words :

        許多應(yīng)用與人身安全或設(shè)備安全有密切聯(lián)系,隨著安全性要求的提高,希望設(shè)備或系統(tǒng)在其構(gòu)成的部件與控制裝置發(fā)生故障時(shí)仍能保證安全,即故障-安全(failsafe)的特性。系統(tǒng)是由子系統(tǒng)組成的,子系統(tǒng)有故障時(shí)有控制地停止工作(failsilent,故障-靜默模式),對(duì)系統(tǒng)而言仍是故障,因?yàn)樗辉偬峁┰ǖ姆?wù)了,這有可能引起全系統(tǒng)功能的失效。所以,安全是要從最高層的全局來分析的。例如對(duì)一輛汽車,剎車系統(tǒng)整體不能用故障-靜默來達(dá)到安全,而應(yīng)該是故障后仍能工作(failoperatiONal,故障-仍工作模式),或至少是性能下降一點(diǎn)仍能工作(faildegraded,故障-降格工作模式)。

  單一部件的架構(gòu)(包括硬件與軟件)有故障而失效時(shí)就無法繼續(xù)提供服務(wù)了,它不能滿足故障-仍工作模式或故障-降格工作模式的要求。這就必須采用有備份的冗余架構(gòu),每一個(gè)備份都能完成出故障的原來部件的大部分或全部服務(wù)工作,維持系統(tǒng)正常運(yùn)行。備份工作的交替就要求它們對(duì)工作狀態(tài)(系統(tǒng)的輸入、應(yīng)該的輸出和誰不該輸出)有相同的看法。這種相同的看法要通過信息交換并通過協(xié)議才能建立,并稱為交互一致性(interactive consiSTency)。

  有一部分控制對(duì)象存在功能上互為冗余的可能性,例如汽車的4個(gè)輪子的剎車,當(dāng)一個(gè)輪子的子剎車系統(tǒng)(設(shè)備或控制裝置)有故障時(shí),修正其他輪子的剎車力便可以實(shí)現(xiàn)總體剎車系統(tǒng)的故障-仍工作模式或故障-降格工作模式。此時(shí)對(duì)單個(gè)輪子而言,它只要能實(shí)現(xiàn)故障-靜默即可。顯然,單個(gè)輪子的可信賴性要求被降低,會(huì)造成成本的大大降低。在這種情況下,輪子的控制器之間就存在交互一致性問題。

  來自汽車電子大佬Infineon和Delphi的研究報(bào)告[1]比較了基于這種互為冗余的分布式冗余剎車系統(tǒng)與集中式僅控制器冗余的硬件成本,指出成本可大為下降,并稱集中式有控制器冗余的剎車系統(tǒng)將會(huì)廢止,這對(duì)我國(guó)汽車電子業(yè)者有警示意義。不過,該文并未提到用硬件集中方案也可實(shí)現(xiàn)對(duì)象互為冗余的剎車系統(tǒng)(這二種方案成本差別將不會(huì)太大)。此時(shí)由于通信有較大不同,交互一致性問題會(huì)不一樣,加上其他因素,它們的優(yōu)劣有待研究。但至少分布式互為冗余剎車系統(tǒng)是一個(gè)備選方案。參考文獻(xiàn)[1]非常概述地提及了控制方案,并未談及技術(shù)細(xì)節(jié)以及采用的協(xié)議。本文將根據(jù)交互一致性的理論,對(duì)實(shí)施這類應(yīng)用中可能遇到的問題進(jìn)行分析。

  1  SM算法

  對(duì)交互一致性的研究已經(jīng)有30年了,它被稱為拜占庭將軍問題算法(Byzentine Generals Problem)。原始文獻(xiàn)有2個(gè)版本[23],1980年的文章引用很多,但是公認(rèn)很難讀懂[4]。原來的討論是針對(duì)點(diǎn)對(duì)點(diǎn)通信進(jìn)行的,本文根據(jù)對(duì)參考文獻(xiàn)[3]的理解,針對(duì)總線方式通信加以展開,這會(huì)引入作者的看法。參考文獻(xiàn)[3]提出:一個(gè)冗余系統(tǒng)的“所有無錯(cuò)節(jié)點(diǎn)應(yīng)該采用同樣的輸入(這樣才能產(chǎn)生同樣的輸出);如果輸入系統(tǒng)沒錯(cuò),就應(yīng)該采用輸入的值(這樣才能產(chǎn)生正確的輸出)”。參考文獻(xiàn)[3]提供了二種解決算法:一是口傳消息算法OM(Oral Message Algorithm),二是簽名消息算法SM(Signed Message Algorithm)。對(duì)容許m個(gè)錯(cuò)而言,OM算法需要3m+1個(gè)節(jié)點(diǎn)以及m+1輪消息傳送,SM需要m+2個(gè)節(jié)點(diǎn)和m+1輪消息傳送。這是2種原理與性能有很大差別的算法。OM算法依靠消息轉(zhuǎn)述與表決來確定從節(jié)點(diǎn)的輸入,當(dāng)無法進(jìn)行表決時(shí)要采取預(yù)定義的缺省輸入。當(dāng)主節(jié)點(diǎn)有拜占庭錯(cuò)且錯(cuò)值占多數(shù)時(shí),無錯(cuò)的從節(jié)點(diǎn)間看法雖是一致的,但是是不正確的。SM算法依靠逐級(jí)檢驗(yàn)與重復(fù)轉(zhuǎn)發(fā),可以發(fā)現(xiàn)各節(jié)點(diǎn)(包括主節(jié)點(diǎn))的錯(cuò),而且只要有一次正確收到就可以了。由于性能好且需要的從節(jié)點(diǎn)數(shù)較少,SM值得進(jìn)一步探究。下面以總線通信時(shí)的情況來介紹SM的做法。

  ① 對(duì)需要交換數(shù)據(jù)并保證一致的n=m+2個(gè)節(jié)點(diǎn)而言,可將問題作分解,每個(gè)節(jié)點(diǎn)可輪流作為主節(jié)點(diǎn)對(duì)其他節(jié)點(diǎn)傳送消息,實(shí)施SM算法。

 ?、?每個(gè)通信幀含有兩部分內(nèi)容:數(shù)據(jù)d和與d有關(guān)的簽名a。根據(jù)參考文獻(xiàn)[3],簽名要不被有錯(cuò)節(jié)點(diǎn)作偽,應(yīng)該各節(jié)點(diǎn)各不相同且每次都不同。筆者認(rèn)為根據(jù)工業(yè)應(yīng)用可以不這樣要求,詳見后文。

 ?、?通信各輪的幀內(nèi)容如下:

  第1輪,主節(jié)點(diǎn)發(fā)自己的數(shù)據(jù)與簽名(d:a0);

  第2輪,各從節(jié)點(diǎn)轉(zhuǎn)發(fā)由第1輪收到的幀再加自己的簽名((d:a0):aj),其中 (j=1,…,n-1);

  以后各輪,各從節(jié)點(diǎn)轉(zhuǎn)發(fā)由上一輪收到的幀再加自己的簽名((…((d:a0):aj)…):ar),其中 (j,…,r∈{1,…,n-1}; j≠…≠r),也就是說已經(jīng)經(jīng)過本從節(jié)點(diǎn)轉(zhuǎn)發(fā)的內(nèi)容不再轉(zhuǎn)發(fā)。

  由于是通過總線廣播而不是點(diǎn)到點(diǎn)通信,通信量只要計(jì)算不同的幀的個(gè)數(shù)就可以:N=1+(n-1)+(n-1)2+…??偟耐ㄐ泡啍?shù)為m+1。

  ④ 每個(gè)從節(jié)點(diǎn)保存一個(gè)供選擇的集choice,初始化時(shí)為空:choice{Φ}。choice的更新可在m+1輪通信結(jié)束之后進(jìn)行。更新時(shí)先檢驗(yàn)簽名的有效性,只有全為有效的才可把該幀的d添加到choice中,如果choice中已有,就不重復(fù)添加。點(diǎn)對(duì)點(diǎn)通信按參考文獻(xiàn)[3]的做法,出現(xiàn)主節(jié)點(diǎn)錯(cuò)時(shí)choice會(huì)有多個(gè)元素,總線通信時(shí)主節(jié)點(diǎn)的簽名計(jì)算只有一次,按本文做法(見下文)choice只會(huì)有一個(gè)元素(真值或空)。

  ⑤ 參考文獻(xiàn)[3]證明了在下列假設(shè)得到保證的條件下所有無故障從節(jié)點(diǎn)會(huì)得到相同的choice:

  A1發(fā)送的消息總能正確送達(dá);

  A2每個(gè)節(jié)點(diǎn)知道誰在發(fā)送;

  A3消息的缺失可以檢測(cè)出來;

  A4簽名不能被作偽,作偽時(shí)可檢測(cè)出來;

  任何從節(jié)點(diǎn)能檢測(cè)出簽名是否有錯(cuò)。

  SM算法的有效性與此有關(guān),通信時(shí)發(fā)生錯(cuò)幀漏檢的情況相當(dāng)于發(fā)生一次錯(cuò),要在容錯(cuò)的次數(shù)設(shè)計(jì)上加以考慮。

  參考文獻(xiàn)[3]建議了一個(gè)簽名的方法例子,即用密鑰ki對(duì)數(shù)據(jù)d求出簽名a: a=(ki·d)mod p,其中p是2的冪,ki是小于p的一個(gè)奇數(shù),接收節(jié)點(diǎn)用另一個(gè)密鑰ki-1驗(yàn)證:d=(ki-1·a)mod p。ki和ki-1有如下關(guān)系:(ki·ki-1)mod p=1。這樣,有錯(cuò)節(jié)點(diǎn)能作偽的概率為1/p。這種方案作偽者要不知道加密的辦法才行。參考文獻(xiàn)[3]認(rèn)為要求更嚴(yán)的場(chǎng)合要采用密碼學(xué)的方法。

  從工業(yè)應(yīng)用來看,有錯(cuò)節(jié)點(diǎn)的作偽的可能性來源乃是電磁干擾,對(duì)人為的黑客攻擊應(yīng)另外采用對(duì)抗措施,所以可以采用較為簡(jiǎn)單常用的CRC校驗(yàn)和作為簽名。注意,這個(gè)CRC校驗(yàn)和是應(yīng)用數(shù)據(jù)的校驗(yàn)和,不要混同于通信幀的校驗(yàn)和。在冗余系統(tǒng)里關(guān)心的是應(yīng)用數(shù)據(jù)的一致性,而應(yīng)用數(shù)據(jù)在MCU與通信控制器的傳遞過程中可能出錯(cuò),通信幀的CRC校驗(yàn)不能覆蓋這一錯(cuò)。例如,應(yīng)用通過FlexRay的二個(gè)通道傳送同一數(shù)據(jù)時(shí),由于寫入輸出緩沖器的過程是分時(shí)的,如果其中一次受到干擾,應(yīng)用數(shù)據(jù)與應(yīng)用CRC(簽名)不再匹配,那么接收方將能發(fā)現(xiàn)應(yīng)用數(shù)據(jù)的傳送錯(cuò)而加以丟棄。

  在總線廣播通信中,由于各節(jié)點(diǎn)受干擾請(qǐng)況的不同,它們可能接收到不同的幀,一旦又發(fā)生了錯(cuò)幀漏檢,那么就會(huì)發(fā)生一個(gè)節(jié)點(diǎn)給其他節(jié)點(diǎn)送不同值的情況,這與點(diǎn)到點(diǎn)通信的情況一樣,是一種拜占庭錯(cuò)。同時(shí),轉(zhuǎn)發(fā)過程又涉及MCU與通信控制器的傳遞過程,其中也會(huì)發(fā)生錯(cuò),所以轉(zhuǎn)發(fā)過程也用數(shù)據(jù)加簽名的方式。例如節(jié)點(diǎn)p在第3輪收到幀(((d:a0):aj):ai)時(shí),檢驗(yàn)ai的簽名是否正確,如果錯(cuò),那么在節(jié)點(diǎn)j到i的轉(zhuǎn)發(fā)通信中有錯(cuò)。如無錯(cuò),繼續(xù)對(duì)((d:a0):aj)作aj簽名的檢驗(yàn),如果錯(cuò),那么在節(jié)點(diǎn)0到j(luò)的轉(zhuǎn)發(fā)通信中有錯(cuò)。如無錯(cuò),再對(duì)(d:a0)作a0簽名的檢驗(yàn),如果錯(cuò),那么在節(jié)點(diǎn)0的MCU與節(jié)點(diǎn)0的通信控制器通信中發(fā)生了錯(cuò),或者它在計(jì)算簽名時(shí)發(fā)生了錯(cuò)。

  未通過簽名檢驗(yàn)的數(shù)據(jù)將不提交到choice,如果主節(jié)點(diǎn)無錯(cuò),從節(jié)點(diǎn)有m+1個(gè),那么在第一輪中至少有一個(gè)從節(jié)點(diǎn)正確收到,在以后各輪中其他有錯(cuò)節(jié)點(diǎn)的轉(zhuǎn)發(fā)將不會(huì)影響這個(gè)節(jié)點(diǎn)的choice?,F(xiàn)在可以發(fā)現(xiàn)SM算法的一個(gè)有趣的特性:如果某些從節(jié)點(diǎn)只是發(fā)生了瞬時(shí)故障,由于無錯(cuò)節(jié)點(diǎn)的轉(zhuǎn)發(fā),它仍然有機(jī)會(huì)得到相同的choice。

  由于采用總線廣播,主節(jié)點(diǎn)可以收到被轉(zhuǎn)發(fā)的自己的幀,因此可以進(jìn)行自檢。若全部轉(zhuǎn)發(fā)結(jié)束后自檢不通過,就可以采取進(jìn)一步的措施,例如本節(jié)點(diǎn)重算簽名并寫通信控制器,或者立即進(jìn)入故障-靜默模式。

  SM算法假設(shè)幀的丟失可以檢測(cè)出來,這要靠另加的超時(shí)報(bào)警單元。一旦時(shí)間窗口關(guān)閉,各節(jié)點(diǎn)就根據(jù)已收到的各幀進(jìn)行choice的更新工作。

  一次SM算法結(jié)束后就可認(rèn)為將開始新的一次SM算法,也就可以初始化choice。如果將每一個(gè)節(jié)點(diǎn)開始發(fā)本節(jié)點(diǎn)數(shù)據(jù)的次序固定下來,并將以前節(jié)點(diǎn)開始發(fā)轉(zhuǎn)發(fā)的時(shí)刻來預(yù)置本地定時(shí)器,那么在預(yù)定的時(shí)間窗口內(nèi)上一節(jié)點(diǎn)因故障而未轉(zhuǎn)發(fā)的錯(cuò)誤可以被發(fā)現(xiàn)。上一節(jié)點(diǎn)轉(zhuǎn)發(fā)結(jié)束的信號(hào)或時(shí)限到可用來觸發(fā)本節(jié)點(diǎn)開始轉(zhuǎn)發(fā)。

  2  互為冗余

  經(jīng)過執(zhí)行SM算法,所有無錯(cuò)節(jié)點(diǎn)和有瞬時(shí)故障的節(jié)點(diǎn)都可得到其他節(jié)點(diǎn)發(fā)送的一致的輸入值。有錯(cuò)節(jié)點(diǎn)發(fā)出的輸入值被所有節(jié)點(diǎn)(包括有錯(cuò)節(jié)點(diǎn)本身)識(shí)別,不被用來進(jìn)一步作計(jì)算,此時(shí)有錯(cuò)節(jié)點(diǎn)進(jìn)入故障-靜默模式,其余正確節(jié)點(diǎn)直接開始重新分配剎車力矩的算法。輸入值交換無錯(cuò)時(shí)每一個(gè)節(jié)點(diǎn)用相近的控制算法計(jì)算每個(gè)輪子的控制輸出(剎車力矩)。然后再用SM算法交換各自計(jì)算結(jié)果,每個(gè)節(jié)點(diǎn)將有一致的各節(jié)點(diǎn)的輸出值。

  在每個(gè)節(jié)點(diǎn)計(jì)算時(shí),會(huì)因干擾(如EMI或熱沖擊等)而出現(xiàn)錯(cuò)誤輸出值?;蛞蚱渌郊訔l件(例如剎車力矩傳感器的失效,MCU自檢錯(cuò))等因素,人為使該節(jié)點(diǎn)計(jì)算得的輸出值為非正常值。由于SM算法,這個(gè)錯(cuò)誤的輸出值一致地傳送到每個(gè)節(jié)點(diǎn)。

  這樣各輪子的剎車力矩就有4個(gè)來自各節(jié)點(diǎn)的冗余計(jì)算結(jié)果,這是一個(gè)二維的矩陣。在矩陣中找出有錯(cuò)的剎車力矩是哪一個(gè),以及有可能發(fā)生永久故障的節(jié)點(diǎn)是誰。由于計(jì)算結(jié)果是模擬量,冗余系統(tǒng)又為了避免共同錯(cuò)(common mode faults)強(qiáng)調(diào)各備份間的多樣性。同樣算法也可能會(huì)使結(jié)果有微小差別,所以與其他計(jì)算結(jié)果偏離大于預(yù)定限值時(shí)視為有錯(cuò)。

  有嚴(yán)重故障的節(jié)點(diǎn)的輸出值可能全是錯(cuò)的,有瞬時(shí)故障的節(jié)點(diǎn)可能只有一個(gè)計(jì)算結(jié)果是錯(cuò)的。由于所有正確的節(jié)點(diǎn)均采用同樣的判別原則,一致的輸入數(shù)據(jù),它們作出同樣的判別結(jié)論。

  如果有一個(gè)節(jié)點(diǎn)的一個(gè)剎車力矩計(jì)算是錯(cuò)的,那么可認(rèn)為這個(gè)節(jié)點(diǎn)遇到了瞬時(shí)干擾。此時(shí)仍可按多數(shù)或平均方法確定各輪子的剎車力矩,各節(jié)點(diǎn)按該輪子對(duì)應(yīng)的剎車力矩加以執(zhí)行。

  如果有一個(gè)節(jié)點(diǎn)的剎車力矩計(jì)算都是錯(cuò)的,那么確定這個(gè)節(jié)點(diǎn)發(fā)生了一個(gè)嚴(yán)重的也許是永久性的故障,此時(shí)所有正確的節(jié)點(diǎn)將按補(bǔ)償算法重新計(jì)算剎車力矩輸出,以使車子減少偏航,減少顛簸。

  嚴(yán)重的錯(cuò)誤是發(fā)生通信鏈路斷開,正確節(jié)點(diǎn)按SM算法用超時(shí)可以發(fā)現(xiàn)有錯(cuò)節(jié)點(diǎn)。斷開鏈路的節(jié)點(diǎn)按SM算法發(fā)現(xiàn)所有其他節(jié)點(diǎn)都錯(cuò)了,這時(shí)它應(yīng)該判為自己錯(cuò)了,對(duì)本輪子的剎車力矩應(yīng)取一個(gè)缺省值,這個(gè)缺省值也是在其他正確節(jié)點(diǎn)補(bǔ)償算法中采用的對(duì)該輪子的缺省值。

  由上可見,由于出故障后節(jié)點(diǎn)只須保證故障-靜默模式,剎車力矩的再分配保證了整車的故障-安全特性??刂破饔布⒋鬄楹?jiǎn)化,雖然初期軟件成本增加,其后可以分?jǐn)?,總體成本是下降的。

  3  CAN在這類應(yīng)用中的可能性

  3.1  帶寬

  對(duì)4個(gè)輪子節(jié)點(diǎn)和1個(gè)指令節(jié)點(diǎn)(由踏板或其他系統(tǒng)轉(zhuǎn)發(fā)剎車命令,轉(zhuǎn)發(fā)由輪子來的輪速信號(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ò)。如果從互為冗余剎車系統(tǒng)的性價(jià)比考慮,為了此帶寬問題,設(shè)立專用的CAN總線也是值得的。

  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é)議才能滿足高可信賴性要求。但這是片面的。在本例中,如果把所有互為冗余系統(tǒng)需要傳送的消息都設(shè)為較高優(yōu)先級(jí),那么在總線上它們將像一個(gè)長(zhǎng)幀不受阻擋延遲,只要帶寬容許,就能送達(dá)。至于這些消息內(nèi)部的到達(dá)先后,在SM算法中并無影響。更廣義地講,只要把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算法中簽名的存在,這一問題已免除或緩解。當(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ì)物理通道上的故障如斷線、短路等,需要用容錯(cuò)CAN協(xié)議ISO118983的收發(fā)器。此種收發(fā)器的帶寬更小,標(biāo)準(zhǔn)為125 kbps,較好的MAX3054可達(dá)250 kbps。如果互為冗余剎車系統(tǒng)的控制周期定為20 ms(即容許20 ms內(nèi)有一個(gè)錯(cuò))(參考文獻(xiàn)[5]中引述的線控轉(zhuǎn)向的容許失控時(shí)間為50 ms),那么CAN在滿足容許物理故障時(shí)還能滿足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è)計(jì)時(shí)就默認(rèn)了數(shù)據(jù)一定是一致的。如果發(fā)生了不一致,這些系統(tǒng)的交互影響就難以預(yù)測(cè)。因此SM算法有其現(xiàn)實(shí)意義。

  SM算法可以發(fā)現(xiàn)節(jié)點(diǎn)MCU與通信控制器的傳遞過程中的錯(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)易性。一般地說,拜占庭錯(cuò)難以發(fā)現(xiàn),當(dāng)雙互備份架構(gòu)輸入有拜占庭錯(cuò)時(shí),無法確定誰錯(cuò)而無法實(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ù)總線通信分析了SM算法的實(shí)施方法以及CAN在用于SM算法時(shí)的一些問題。CAN是成熟的技術(shù),成本較低,盡量擴(kuò)展其應(yīng)用是理所當(dāng)然的事。就互為冗余剎車系統(tǒng)而言,CAN仍然是可以應(yīng)用的。參考文獻(xiàn)[3]提到了一種在2002年還是研制中的時(shí)間觸發(fā)協(xié)議,現(xiàn)在看來,可能是FlexRay協(xié)議。毫無疑問,F(xiàn)lexRay的帶寬優(yōu)勢(shì)很大,但是對(duì)其的研究還有待深入,例如它的時(shí)鐘同步依賴于傳送電纜上的模擬電平跳變,毛刺可能改變跳變位置,從而破壞整個(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)與受干擾可能性,總之效率不高,并不理想,最好是用專門的硬件實(shí)現(xiàn),這是值得探討的事。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。