空間機(jī)器人中央計算機(jī)的雙機(jī)熱備份
考慮到空間機(jī)器人中央控制計算機(jī)的雙機(jī)熱備份系統(tǒng)的特殊性,所構(gòu)建的硬件平臺如圖1所示。
互為備份的中央控制計算機(jī)采用完全相同的設(shè)計,通過內(nèi)部和外部的CAN總線與控制模塊和指令系統(tǒng)分別相連。熱備份時,主、備機(jī)從CAN總線上同時接收數(shù)據(jù),但只有主機(jī)可以通過CAN總線向外部輸出指令及控制數(shù)據(jù)。
主備機(jī)之間通過RS485總線相連,實現(xiàn)雙機(jī)之間數(shù)據(jù)監(jiān)測和同步等功能。在主機(jī)和備機(jī)的PIO口分別引出一條心跳線,定時發(fā)出脈沖信號,用來檢查判斷對方機(jī)是否具備基本運行能力。雙機(jī)進(jìn)行切換時,通過仲裁邏輯電路改變雙機(jī)系統(tǒng)的當(dāng)班權(quán),完成系統(tǒng)的切換操作。
2 雙機(jī)熱備份策略
為保證空間機(jī)器人系統(tǒng)正常、穩(wěn)定地運行,根據(jù)空間機(jī)器人中央控制計算機(jī)雙機(jī)熱備份系統(tǒng)的特點,主備雙機(jī)需要根據(jù)系統(tǒng)的同步數(shù)據(jù)和心跳信號對對方機(jī)的運行情況進(jìn)行監(jiān)測,保持主備雙機(jī)同步運行。當(dāng)系統(tǒng)發(fā)生故障時利用系統(tǒng)同步數(shù)據(jù)和心跳信號,定位系統(tǒng)發(fā)生的故障,并對故障源進(jìn)行判斷,完成切換。在切換后,系統(tǒng)將嘗試恢復(fù)故障,整個策略示意如圖2所示。
2.1 心跳信號
心跳信號是該中央控制計算機(jī)運行時發(fā)送的周期性脈沖信號,是中央控制計算機(jī)正常運行的判斷依據(jù)。
主備雙機(jī)可以通過對對方機(jī)心跳信號的監(jiān)測,來判斷對方機(jī)是否正常運行,同時心跳信號也是裁決故障時的一種輔助判據(jù)。當(dāng)發(fā)現(xiàn)備機(jī)無心跳信號時,主機(jī)切換到單機(jī)模式,備機(jī)由外部指令系統(tǒng)進(jìn)行處理;當(dāng)發(fā)現(xiàn)主機(jī)無心跳信號時,備機(jī)獲得當(dāng)班權(quán)變?yōu)橹鳈C(jī)并進(jìn)行輸出,主機(jī)交由外部指令系統(tǒng)處理。
2.2 同步監(jiān)測
雙機(jī)同步是雙機(jī)熱備份系統(tǒng)能夠正常進(jìn)行系統(tǒng)監(jiān)測,對故障進(jìn)行正確判斷的基礎(chǔ)。正確的同步策略是雙機(jī)系統(tǒng)能夠及時檢測出軟件故障并執(zhí)行正確切換動作的前提,也是保證系統(tǒng)在故障發(fā)生之后成功恢復(fù)的關(guān)鍵要素。
為了保證雙機(jī)能夠長期、穩(wěn)定地處于同步之中,維持系統(tǒng)正常運行,制定4項關(guān)鍵同步方法。
①雙機(jī)時鐘周期同步。當(dāng)主備雙機(jī)上電后,在主機(jī)啟動周期定時器的同時,應(yīng)同時向備機(jī)發(fā)出消息,通知備機(jī)啟動周期定時器。由于空間機(jī)器人系統(tǒng)以生命周期為單位執(zhí)行任務(wù),所以生命周期的同步是整個系統(tǒng)保持同步的基礎(chǔ)。若該操作失敗,必須重新進(jìn)行周期定時器的同步。
②雙機(jī)任務(wù)初始化同步。為保證主備雙機(jī)任務(wù)在同一時間啟動,應(yīng)在任務(wù)啟動指令傳遞到主機(jī)時,由主機(jī)向備機(jī)發(fā)出指令,啟動備機(jī)任務(wù),使備機(jī)進(jìn)人工作模式,其具體步驟如圖3所示。
③雙機(jī)同步數(shù)據(jù)的實時監(jiān)測。機(jī)器人執(zhí)行任務(wù)期間,主備雙機(jī)將在每個系統(tǒng)生命周期的開始向?qū)Ψ綑C(jī)發(fā)送同步數(shù)據(jù),并將收到的數(shù)據(jù)與自身數(shù)據(jù)進(jìn)行比對,完成對系統(tǒng)同步數(shù)據(jù)的實時監(jiān)測。
為保證對系統(tǒng)監(jiān)測的全面性和判斷故障的準(zhǔn)確性,提取任務(wù)號、任務(wù)階段號、系統(tǒng)周期、實際關(guān)節(jié)角度以及一個隨機(jī)碼作為系統(tǒng)的同步數(shù)據(jù),如表1所列。
④雙機(jī)再同步。當(dāng)發(fā)現(xiàn)雙機(jī)系統(tǒng)的數(shù)據(jù)出現(xiàn)兩個周期以內(nèi)的超前或滯后現(xiàn)象時,不認(rèn)為發(fā)生系統(tǒng)故障而進(jìn)行切換,而是直接更新備機(jī)同步數(shù)據(jù),使備機(jī)重新與主機(jī)同步。
2.3 裁決邏輯
裁決是雙機(jī)熱備份系統(tǒng)中至關(guān)重要的一個環(huán)節(jié)。誘發(fā)空間機(jī)器人系統(tǒng)出現(xiàn)故障的原因很多,在其工作的空間環(huán)境中存在著大量高能粒子,極易使中央控制計算機(jī)電位發(fā)生反轉(zhuǎn)造成系統(tǒng)失常。通信線路的故障和隨機(jī)產(chǎn)生的誤碼率也很容易造成系統(tǒng)失常。通過分析總結(jié),空間機(jī)器人系統(tǒng)最易出現(xiàn)3種故障類型,即雙機(jī)通信線路故障、系統(tǒng)任務(wù)流程故障和系統(tǒng)控制數(shù)據(jù)故障。為保證雙機(jī)熱備份系統(tǒng)及時、準(zhǔn)確地檢測故障,判斷故障源,做出正確的切換動作,分別為3種故障制定相應(yīng)的故障裁決邏輯。
(1)雙機(jī)通信線路故障
裁決邏輯:當(dāng)RS485接收模塊連續(xù)3周期沒有接收到對方的同步數(shù)據(jù)時,給出故障信號。為避免計算機(jī)重復(fù)進(jìn)行裁決判斷,停止同步數(shù)據(jù)發(fā)送,同時檢測備機(jī)心跳信號。若備機(jī)心跳信號停止,則由主機(jī)主動停止備機(jī)電源;若對方心跳信號正常,則由外部指令決定備機(jī)狀態(tài)。其實現(xiàn)流程如圖4所示。
(2)雙機(jī)任務(wù)流程故障
為有效、準(zhǔn)確地判斷雙機(jī)任務(wù)流程故障,借助隨機(jī)碼表來對其進(jìn)行輔助判斷。隨機(jī)碼表是一個32×16的二維short型數(shù)組,數(shù)組中的各個元素互不相同,查詢生成同步數(shù)據(jù)隨機(jī)碼的公式如下:
式中X為隨機(jī)碼表行號,Y為隨機(jī)碼表列號,TaskID為任務(wù)號,PhaseNum為任務(wù)階段號,ClcNum為任務(wù)周期號。
主備雙機(jī)存儲同一份隨機(jī)碼表,利用上述公式確定每周期的隨機(jī)碼作為同步數(shù)據(jù),發(fā)送給對方機(jī)。這樣做大大簡化了裁決邏輯,也可檢測出CPU邏輯運算單元的錯誤。
裁決邏輯:主備機(jī)首先比較同步數(shù)據(jù)中隨機(jī)碼,若隨機(jī)碼不同,則進(jìn)一步比較任務(wù)號、階段號、周期號。若比較結(jié)果相同,則給出計算機(jī)邏輯運算故障信號;若不同,將對方同步數(shù)據(jù)與己方前后兩周期數(shù)據(jù)比較。若發(fā)現(xiàn)匹配數(shù)據(jù),進(jìn)行備機(jī)與主機(jī)再同步;若失敗,給出任務(wù)流程故障信號。其實現(xiàn)程序流程如圖5所示。
故障源判斷:
情況1,若系統(tǒng)出現(xiàn)計算機(jī)邏輯運算故障,則查詢上一周期同步數(shù)據(jù)隨機(jī)碼,且與上一周期保存的歷史數(shù)據(jù)隨機(jī)碼相比較,并根據(jù)比較結(jié)果進(jìn)行切換。
情況2,若系統(tǒng)出現(xiàn)流程故障,則將當(dāng)前系統(tǒng)同步數(shù)據(jù)中的任務(wù)號、階段號和周期號與自身歷史數(shù)據(jù)進(jìn)行比較。根據(jù)任務(wù)號、階段號、周期號是遞增并且不會發(fā)生突變這一原則進(jìn)行判斷,確定故障源,如圖6所示。
(3)雙機(jī)控制數(shù)據(jù)故障
裁決邏輯:空間機(jī)器人的運動一般分為兩種模式,一種是預(yù)先規(guī)劃固定軌跡的運動,另一種是相對于目標(biāo)的自主運動。主備雙機(jī)根據(jù)機(jī)器人不同的運動狀態(tài),比較同步數(shù)據(jù)中的控制關(guān)節(jié)角度,配合誤差容忍度給出系統(tǒng)控制數(shù)據(jù)故障信號。
故障源判斷:在固定規(guī)劃軌跡的模式下,控制數(shù)據(jù)預(yù)先給定,可以將雙機(jī)數(shù)據(jù)與正確數(shù)據(jù)對比,確定故障源;在自主運動模式下,關(guān)節(jié)的速度和位移是平滑變化的,不可能發(fā)生突變,可以利用關(guān)節(jié)的最大角速度、最大角加速度、末端的最大速度和最大加速度等邊界值對當(dāng)前數(shù)據(jù)進(jìn)行邊界檢測,從而判斷出故障源,如圖7所示。
另外,當(dāng)雙機(jī)系統(tǒng)對故障源的判斷發(fā)生矛盾時,將交由外部指令系統(tǒng)對其進(jìn)行處理。
2.4 系統(tǒng)恢復(fù)
為保證空間機(jī)器人中央控制計算機(jī)能夠長期、穩(wěn)定地運行,就需要使其具有從故障狀態(tài)恢復(fù)的能力。根據(jù)其故障原因,分3種情況進(jìn)行制定:
①系統(tǒng)裁定備機(jī)故障,主機(jī)正常,此時主機(jī)切換為單機(jī)模式繼續(xù)正常執(zhí)行任務(wù),備機(jī)復(fù)位重啟并通知主機(jī),主機(jī)切換到雙機(jī)同步模式,備機(jī)重新與主機(jī)同步,恢復(fù)系統(tǒng)正常運行。
②系統(tǒng)裁定主機(jī)故障,備機(jī)正常,此時主機(jī)讓權(quán),進(jìn)行切換,備機(jī)得權(quán)后變?yōu)橹鳈C(jī),并切換到單機(jī)模式繼續(xù)執(zhí)行系統(tǒng)任務(wù);而主機(jī)讓權(quán)后變?yōu)閭錂C(jī),復(fù)位重啟后與主機(jī)重新進(jìn)行同步,恢復(fù)系統(tǒng)的正常運行。
③系統(tǒng)失步,即備機(jī)周期超前或滯后于主機(jī),這種情況并不是造成系統(tǒng)故障,不進(jìn)行切換動作。此時主機(jī)依然正常執(zhí)行系統(tǒng)任務(wù),備機(jī)利用主機(jī)的同步數(shù)據(jù)更新自身狀態(tài),與主機(jī)進(jìn)行再同步。
3 雙機(jī)熱備份系統(tǒng)軟件設(shè)計
基于中央控制計算機(jī)雙機(jī)熱備份系統(tǒng)的硬件環(huán)境和策略的制定,將其軟件設(shè)計為6個模塊,并基于強(qiáng)實時性操作系統(tǒng)VxWorks進(jìn)行實現(xiàn)。該操作系統(tǒng)提供的分布消息隊列機(jī)制支持系統(tǒng)軟件的容錯設(shè)計,其強(qiáng)實時性也滿足空間機(jī)器人任務(wù)的要求。首先,根據(jù)策略的制定,設(shè)計心跳任務(wù)、同步任務(wù)、故障裁決任務(wù)和系統(tǒng)恢復(fù)任務(wù),另外根據(jù)雙機(jī)通信的需要設(shè)計RS485總線發(fā)送任務(wù)和RS485總線接收任務(wù)。它們的功能如下:
①心跳任務(wù),任務(wù)名HeartBeat。周期性地檢測對方機(jī)發(fā)送的心跳信號,若發(fā)現(xiàn)無心跳信號,則通知故障裁決任務(wù)進(jìn)行故障裁決。
②同步任務(wù),任務(wù)名Synchronize。根據(jù)同步策略中的初始化同步過程進(jìn)行系統(tǒng)時鐘和任務(wù)的初始化同步,并周期性地監(jiān)視系統(tǒng)同步數(shù)據(jù)。若發(fā)現(xiàn)系統(tǒng)同步數(shù)據(jù)異常,則通知故障裁決任務(wù)進(jìn)行系統(tǒng)故障的裁決。
③故障裁決任務(wù),任務(wù)名ExecSwitch。根據(jù)不同的故障情況,依據(jù)前面敘述的裁決過程對系統(tǒng)故障源進(jìn)行判斷,并根據(jù)結(jié)果進(jìn)行切換操作,保障系統(tǒng)正常運行。另外,通知系統(tǒng)恢復(fù)任務(wù)并嘗試對系統(tǒng)進(jìn)行恢復(fù)。
④系統(tǒng)恢復(fù)任務(wù),任務(wù)名Reconfigure。根據(jù)系統(tǒng)恢復(fù)策略嘗試對故障機(jī)進(jìn)行恢復(fù),出現(xiàn)“失步”現(xiàn)象時,依據(jù)再同步過程對備機(jī)進(jìn)行再同步。
它們之間的協(xié)作關(guān)系如圖8所示。
⑤RS485總線接收及發(fā)送任務(wù),任務(wù)名Receive485、Send485。負(fù)責(zé)雙機(jī)的通信,主要包括控制消息的解析,同步數(shù)據(jù)的接收與發(fā)送。
在RS485總線通信任務(wù)中,通信數(shù)據(jù)格式定義如下:
其中,為RS485通信數(shù)據(jù)加入起始Start和結(jié)尾End位,保證RS485通信任務(wù)傳遞數(shù)據(jù)的正確性;Command為雙機(jī)熱備份系統(tǒng)的控制命令,如同步系統(tǒng)時鐘指令、任務(wù)同步指令等;Syn_data為雙機(jī)同步數(shù)據(jù),它的數(shù)據(jù)結(jié)構(gòu)定義如下:
其中,關(guān)節(jié)數(shù)據(jù)以double類型計算,但在雙機(jī)通信中轉(zhuǎn)化為16位整數(shù)進(jìn)行傳遞,節(jié)省數(shù)據(jù)流量;Result為裁決結(jié)果,雙機(jī)將比較裁決結(jié)果。如果一致則進(jìn)行相應(yīng)處理,如果矛盾將由指令系統(tǒng)進(jìn)行處理。
雙機(jī)熱備份系統(tǒng)的軟件由以上6個模塊組成,對系統(tǒng)進(jìn)行監(jiān)測、裁決、恢復(fù),保證中央控制計算機(jī)長期、穩(wěn)定地運行。
4 雙機(jī)熱備份系統(tǒng)驗證
當(dāng)中央控制計算機(jī)啟動后,主機(jī)將向備機(jī)發(fā)出同步系統(tǒng)周期指令,同步系統(tǒng)周期時間;在外部指令系統(tǒng)啟動主機(jī)任務(wù)的同時,主機(jī)將發(fā)出指令啟動備機(jī)任務(wù)。主機(jī)從接收指令到備機(jī)同步啟動任務(wù)所需時間為1 420 ms,備機(jī)從接收指令到啟動任務(wù)所需時間為1180 ms。該雙機(jī)系統(tǒng)可以快速啟動并進(jìn)行同步。
在運行過程中,利用錯誤注入的測試方法,預(yù)先在程序中注入錯誤,系統(tǒng)檢測到錯誤后,能夠快速的切換,并且備機(jī)可以及時更新系統(tǒng)數(shù)據(jù),與主機(jī)進(jìn)行再同步,從切換完成到重新同步的平均時間為592 ms內(nèi),滿足空間機(jī)器人任務(wù)的強(qiáng)實時性要求。
結(jié) 語
本研究在綜合考慮空間環(huán)境及機(jī)器人任務(wù)特殊性的基礎(chǔ)上,實現(xiàn)了一種獨特的雙機(jī)熱備份系統(tǒng)。依據(jù)可能出現(xiàn)的故障類型,設(shè)計了心跳策略、同步策略、裁決切換策略和恢復(fù)策略,并基于VxWorks操作系統(tǒng)實現(xiàn)了雙機(jī)熱備份系統(tǒng)的軟件。經(jīng)驗證,該系統(tǒng)具有較好容錯能力,可增強(qiáng)空間機(jī)器人系統(tǒng)在復(fù)雜空間環(huán)境下執(zhí)行任務(wù)的可靠性,適合在空間機(jī)器人系統(tǒng)中應(yīng)用。