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

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

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

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

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

  1  SM算法

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

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

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

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

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

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

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

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

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

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

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

  A2每個節(jié)點知道誰在發(fā)送,;

  A3消息的缺失可以檢測出來,;

  A4簽名不能被作偽,作偽時可檢測出來,;

  任何從節(jié)點能檢測出簽名是否有錯,。

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

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

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

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

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

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

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

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

  2  互為冗余

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

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

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

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

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

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

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

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

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

  3.1  帶寬

  對4個輪子節(jié)點和1個指令節(jié)點(由踏板或其他系統(tǒng)轉(zhuǎn)發(fā)剎車命令,,轉(zhuǎn)發(fā)由輪子來的輪速信號)構(gòu)成的互為冗余系統(tǒng),,要容許1個錯時,,采用SM算法需要2輪通信,,對5個節(jié)點需要交換輸入數(shù)據(jù)1次,共25種幀,4個節(jié)點交換輸出數(shù)據(jù)1次,,共16種幀,。如果要求每5 ms進行一次協(xié)調(diào),傳送41幀,,對CAN而言將非常吃緊,,這就是經(jīng)常提到的CAN的帶寬局限。這里假設(shè)了冗余后的系統(tǒng)只容許5 ms內(nèi)有1個錯,。如果從互為冗余剎車系統(tǒng)的性價比考慮,,為了此帶寬問題,設(shè)立專用的CAN總線也是值得的,。

  SM算法實際上對數(shù)據(jù)的傳送有很大的重復(fù),,在本例中對一個從節(jié)點而言它收到了5次。如果從節(jié)點只是瞬時有故障,,它一定會收到正確值,。按照SM算法,為了對付m個錯,,需要m+1個從節(jié)點,,因此雖然互為冗余系統(tǒng)有5個節(jié)點,并不需要每個從節(jié)點都進行轉(zhuǎn)發(fā),。例如取3個從節(jié)點轉(zhuǎn)發(fā)輸入,,那么每5 ms就傳送36幀,可以緩解帶寬瓶頸,。如取2個從節(jié)點轉(zhuǎn)發(fā),,帶寬變?yōu)槊? ms傳送27幀。

  3.2  確定性

  有一種觀點認為只有時間觸發(fā)的通信協(xié)議才能滿足高可信賴性要求,。但這是片面的,。在本例中,如果把所有互為冗余系統(tǒng)需要傳送的消息都設(shè)為較高優(yōu)先級,,那么在總線上它們將像一個長幀不受阻擋延遲,,只要帶寬容許,就能送達,。至于這些消息內(nèi)部的到達先后,,在SM算法中并無影響。更廣義地講,,只要把CAN的觸發(fā)事件與時間一一對應(yīng),,它也可實現(xiàn)時間觸發(fā)的功能。利用CAN的竟爭發(fā)送,,有錯未發(fā)節(jié)點的帶寬可被其他節(jié)點盡早利用,,SM算法所需的時限計時器只要一個就夠了。

  3.3  錯幀漏檢

  由于CAN中位填充規(guī)則對CRC的影響,,根據(jù)筆者的研究,,它的錯幀漏檢率較大,遠大于Bosch CAN2.0規(guī)范的數(shù)據(jù),。但是由于SM算法中簽名的存在,,這一問題已免除或緩解。當簽名也用本文建議的CRC方法,,那么簽名錯而漏檢的情況可以用CAN錯幀漏檢率同樣的方法分析與改進,。

  3.4  容錯

  SM算法假設(shè)發(fā)送的消息總能正確送達,通信中可檢出錯要排除在外,。這就需要某種糾錯或冗余,。CAN的出錯自動重發(fā)是很好的糾錯措施,但它只能應(yīng)對瞬時干擾,,對物理通道上的故障如斷線,、短路等,需要用容錯CAN協(xié)議ISO118983的收發(fā)器,。此種收發(fā)器的帶寬更小,,標準為125 kbps,較好的MAX3054可達250 kbps,。如果互為冗余剎車系統(tǒng)的控制周期定為20 ms(即容許20 ms內(nèi)有一個錯)(參考文獻[5]中引述的線控轉(zhuǎn)向的容許失控時間為50 ms),,那么CAN在滿足容許物理故障時還能滿足SM算法的帶寬要求的。從概率上講,,由于重發(fā)而占用的帶寬增量并不大,。

  4  小結(jié)

  分布式互為冗余系統(tǒng)的特點是用重新分配的原理實現(xiàn)故障-安全。并不是所有系統(tǒng)都能采用這種方法,。但是在分布式系統(tǒng)中保證數(shù)據(jù)的一致性是很重要的,,例如同一數(shù)據(jù)可能應(yīng)用于不同目的的控制系統(tǒng)中,這些系統(tǒng)在分開設(shè)計時就默認了數(shù)據(jù)一定是一致的,。如果發(fā)生了不一致,,這些系統(tǒng)的交互影響就難以預(yù)測。因此SM算法有其現(xiàn)實意義,。

  SM算法可以發(fā)現(xiàn)節(jié)點MCU與通信控制器的傳遞過程中的錯,,以及通信中的拜占庭錯,這是一個非常重要的特性,。由于本文發(fā)現(xiàn)了SM算法的簽名轉(zhuǎn)述同時具備的二個功能─重復(fù)發(fā)送和接收認可,,使主節(jié)點也能與其他節(jié)點達到一致,這大大提高了容錯實現(xiàn)的簡易性,。一般地說,,拜占庭錯難以發(fā)現(xiàn),,當雙互備份架構(gòu)輸入有拜占庭錯時,無法確定誰錯而無法實現(xiàn)故障-靜默,,甚至可能出現(xiàn)互相沖突的輸出,。采用SM算法,可實現(xiàn)雙互備份架構(gòu)輸入的一致性,,再借用其他系統(tǒng)的節(jié)點的部分計算能力,,可用使雙互備份架構(gòu)實現(xiàn)等效的三重備份輸出的一致性。這在經(jīng)濟上有巨大意義,。

  本文根據(jù)總線通信分析了SM算法的實施方法以及CAN在用于SM算法時的一些問題,。CAN是成熟的技術(shù),成本較低,,盡量擴展其應(yīng)用是理所當然的事,。就互為冗余剎車系統(tǒng)而言,CAN仍然是可以應(yīng)用的,。參考文獻[3]提到了一種在2002年還是研制中的時間觸發(fā)協(xié)議,,現(xiàn)在看來,可能是FlexRay協(xié)議,。毫無疑問,,F(xiàn)lexRay的帶寬優(yōu)勢很大,但是對其的研究還有待深入,,例如它的時鐘同步依賴于傳送電纜上的模擬電平跳變,,毛刺可能改變跳變位置,從而破壞整個協(xié)議的基礎(chǔ)時鐘,。

  SM算法需要的消息簽名轉(zhuǎn)發(fā),,均需要MCU的參與,對FlexRay或CAN而言,,要高層協(xié)議或軟件中間件實現(xiàn),,耗費時間,增加中間環(huán)節(jié),,增加了時間抖動與受干擾可能性,,總之效率不高,并不理想,,最好是用專門的硬件實現(xiàn),,這是值得探討的事。

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