韓芝俠
(寶雞文理學(xué)院電子電氣工程系,陜西 寶雞721016)
多余度飛控計算機軟件的容錯特性導(dǎo)致其復(fù)雜度遠非單余度可比擬,軟件任何一個微小錯誤都會帶來災(zāi)難性的后果。因此,對多余度飛控計算機系統(tǒng)的軟件仿真測試就顯得尤為重要[1]。
傳統(tǒng)的多余度飛控系統(tǒng)的軟件測試可以在一定程度上實現(xiàn)真實物理系統(tǒng)的功能,驗證系統(tǒng)性能是否合乎設(shè)計要求[2]。同時,它的實時性更逼真地接近真實的飛控軟件運行環(huán)境。但是它也存在一些問題。國內(nèi)外廣泛使用的余度等級一般是帶自監(jiān)控的三余度或四余度。這樣,就需要多個計算機組來實現(xiàn)測試,且在測試過程中,需要幾臺計算機聯(lián)調(diào),使得測試過程較為復(fù)雜、測試周期很長且聯(lián)調(diào)困難[3]。參考文獻[4]提出了一種基于單PC的余度飛控軟件仿真測試方法。使用單PC技術(shù)可以在飛控系統(tǒng)的設(shè)計開發(fā)過程中實現(xiàn)真正的并行工程開發(fā),調(diào)試便捷,能極大提高產(chǎn)品開發(fā)效率。但是,單PC測試下支路同步性、多任務(wù)調(diào)度、通道通訊的實時性和實際系統(tǒng)運行情況還有一定的差異,無法得到保證,在多余度軟件應(yīng)用到真實飛控系統(tǒng)之前,必須進行一定的半物理仿真測試實驗進一步來驗證軟件的可靠性?;诖?,提出一種基于多核技術(shù)的單PC余度飛控軟件仿真測試方法[5-7],能在余度管理軟件開發(fā)初期進入測試,極大地縮短了開發(fā)周期,且能利用核間通訊機制方便地模擬多余度通道之間的交叉?zhèn)鬏敗⑼ǖ篱g同步等流程,所以,其實時性已經(jīng)可以非常接近真實飛控軟件的運行環(huán)境,在繼承了參考文獻[4]的簡易可測的基礎(chǔ)上解決了參考文獻[4]在實時性方面的不足。下面,以4×1余度管理軟件為例來介紹該方法。
多余度飛控軟件結(jié)構(gòu)如圖1所示。實時執(zhí)行模塊包括了故障注入、余度管理模塊和數(shù)據(jù)記錄模塊等,是整個余度管理軟件的核心部分,也是余度軟件測試的核心內(nèi)容,它實現(xiàn)了多余度容錯的多通道同步、數(shù)據(jù)監(jiān)控表決和數(shù)據(jù)交叉?zhèn)鬏數(shù)葍?nèi)容。
圖1 多余度飛控軟件結(jié)構(gòu)
飛控計算機系統(tǒng)大多使用了國內(nèi)外主流的VxWorks多核操作系統(tǒng)[8-9]。其應(yīng)用方式有兩種:AMP和SMP。選擇兩者的主要依據(jù)是為多核處理器中各核之間是否存在主次之分,是否存在專用核的特點[10]。作為飛控計算機,其多余度通道之間是相互獨立的。為了最大限度的逼近真實飛控軟件多核運行環(huán)境,選用AMP結(jié)構(gòu),各核都有獨立的OS。
目標飛機是虛擬飛機,用一臺飛行仿真計算機來模擬[11]。飛行仿真機基于RTX實時擴展操作系統(tǒng),實現(xiàn)了Windows環(huán)境下的實時仿真。飛控計算機仿真機組由一臺具有PowerPC處理器的多核計算機組成,該計算機運行VxWorks實時操作系統(tǒng)。采用1主核帶4個副核的CPU來進行余度軟件仿真測試。為了仿真多余度通道的任務(wù)調(diào)度過程,對多核進行功能劃分,分為調(diào)度管理和通道模擬功能。其中,主核實現(xiàn)調(diào)度管理功能,4個副核分別運行4個通道模擬通道任務(wù)。在軟件邏輯調(diào)試中,主核可實現(xiàn)故障注入的功能。各通道之間的通訊采用核間通訊實現(xiàn)。仿真系統(tǒng)組成如圖2所示。
圖2 仿真系統(tǒng)組成
余度軟件測試是為了驗證軟件編碼是否有誤,信號時序性及邏輯跳轉(zhuǎn)是否正確。因此,有必要對軟件中的每個分支進行驗證和測試。測試余度管理軟件,最重要的一點就是模擬多個余度通道同時工作,仿真出多個余度管理軟件同時運行的狀況。另外,還要仿真通道間通訊、數(shù)據(jù)處理與記錄和故障處理等環(huán)節(jié)。只有軟件運行狀況十分接近真實飛控軟件運行狀況的情況下,才能根據(jù)條件進入軟件的每個邏輯分支,驗證其結(jié)果是否與余度管理算法一致。
余度計算機周期任務(wù)每幀為30ms,分為2個階段。前20ms必須完成:同步、信號采集、輸入數(shù)據(jù)表決監(jiān)控、系統(tǒng)狀態(tài)控制、控制率計算和輸出數(shù)據(jù)表決監(jiān)控。后10ms完成:輸出、故障綜合。將以上這些任務(wù)進行分解,需要利用多核機制實現(xiàn)仿真的動作有:任務(wù)調(diào)度、同步和交叉?zhèn)鬏敗?/p>
飛控計算機的實時性要求非常高,這就要求采用非搶占式任務(wù)調(diào)度來實現(xiàn)[12-13]。主核運行故障注入模塊及用戶界面,4個副核各自運行一個通道的余度管理軟件。根據(jù)核號和通道間的對應(yīng)關(guān)系,實現(xiàn)各通道數(shù)據(jù)本地化,逼真地模擬單通道余度計算機的運行。利用多核機制打通數(shù)據(jù)通道,完成多余度任務(wù)的處理流程。
同步是余度管理系統(tǒng)的重要部分。只有在每個周期的開始,各個通道開始步調(diào)一致的工作,后面的表決監(jiān)控數(shù)據(jù)才有意義。同步方法很多,廣泛使用的是基于硬件實現(xiàn)的“雙握手”法。即每個通道先通過DO口輸出邏輯“真”,等待其他通道通過DI口響應(yīng)邏輯“真”,第1次握手結(jié)束后,每個通道輸出邏輯“假”,等待第1次握手中響應(yīng)正確的通道也輸出邏輯“假”。“雙握手”正常的通道才參與后續(xù)的任務(wù)。
使用多核技術(shù)來仿真通道間同步,就是要仿真通道間的數(shù)字信號,反映在多核實現(xiàn)上,就是核間消息。多余度軟件的同步,由于其他核的任務(wù)執(zhí)行結(jié)果對本核后續(xù)操作有影響,則必須使用同步消息來實現(xiàn)。另外,考慮到核間消息存在時間延遲,在需要考慮時序的地方,如硬件操作等,這種場景也可以考慮使用核間同步消息來實現(xiàn)。如果核間同步消息發(fā)出后,由于任務(wù)異常,一直未能收到對方返回的消息,可以設(shè)置死等時間。超時后,任務(wù)自動返回執(zhí)行失敗,進行后續(xù)任務(wù),不再等待。核間異步消息常用于處理通知事件,某個核發(fā)出消息通知后,不去關(guān)注消息的執(zhí)行結(jié)果,繼續(xù)本核任務(wù)。收到消息的核根據(jù)消息內(nèi)容進行相關(guān)的處理。
根據(jù)以上分析,多核下任務(wù)同步使用封裝的核間同步消息接口來實現(xiàn)[14]。每個核遍歷除了自己外的所有副核,發(fā)送邏輯“真”信號,等待收到消息的核返回邏輯“真”后,再繼續(xù)發(fā)出邏輯“假”。考慮到系統(tǒng)的實時性要求,核間同步消息的同步等待時間一般不應(yīng)超過10ms。
副核1與其他副核進行同步的過程如圖3所示。首先由副核1向副核2發(fā)送邏輯“真”同步信號,等待副核2返回邏輯“真”消息,如果在10ms內(nèi)未返回,則邏輯“真”同步失敗,進入同步恢復(fù)程序,否則邏輯“真”同步成功。由副核1向副核2發(fā)送邏輯“假”同步信號,等待副核2返回邏輯“假”消息,如果在10ms內(nèi)未返回,則邏輯“假”同步失敗,進入同步恢復(fù)程序,否則副核2同步成功。接著進行副核3同步,直至遍歷所有其余副核,則同步完成。
余度管理任務(wù)通道之間的數(shù)據(jù)通信使用航空總線實現(xiàn)。在每一個周期通道計算機將各自的數(shù)據(jù)封存在自己的CCDL(交叉?zhèn)鬏敚?shù)據(jù)包中,通過總線發(fā)送出自己的數(shù)據(jù)包,同時通過總線接收另外3個通道的CCDL數(shù)據(jù)包,這樣,每個通道就能有一份完整的多通道數(shù)據(jù)用于多余度數(shù)據(jù)的監(jiān)控表決。
由于各通道的數(shù)據(jù)都是本地化存放。因此,使用多核技術(shù)的共享內(nèi)存機制來仿真交叉?zhèn)鬏斶^程。
圖3 副核1同步流程
共享內(nèi)存是將想共享的數(shù)據(jù)都定義成為全局變量,它最大的優(yōu)點是便利、高速,但也有很大的危險性。如果該內(nèi)存同時被不同的任務(wù)訪問和修改時,就很難保證數(shù)據(jù)的完整和一致性。因此,需要對共享內(nèi)存部分數(shù)據(jù)進行上鎖[15]。上鎖的辦法主要有中斷上鎖、搶占上鎖和信號量。中斷上鎖保證了任務(wù)對CPU的獨占,在上鎖期間,即使中斷產(chǎn)生也不會切換到中斷服務(wù)程序,它容易造成超時異常;搶占上鎖是基于任務(wù)級的,它禁止當(dāng)前執(zhí)行的任務(wù)被其他任務(wù)搶占,它同樣也會造成其他任務(wù)的延遲;信號量比較簡單,但是處理能力也有限。因此,核間鎖采用中斷上鎖或搶占上鎖來實現(xiàn)。
多核鎖對數(shù)據(jù)保護方式的有兩種。一種是多核數(shù)據(jù)鎖,在執(zhí)行寫入和讀取動作時進行保護;另一種是多核流程鎖,它是對整個數(shù)據(jù)操作流程進行鎖保護,以防其他任務(wù)改寫了該流程正在使用的數(shù)據(jù)。交叉?zhèn)鬏斒峭ǖ篱g的數(shù)據(jù)傳輸,沒有流程上的限制。因此,使用數(shù)據(jù)鎖來實現(xiàn)。
使用共享內(nèi)存實現(xiàn)時,首先需要主核在共享內(nèi)存區(qū)申請一塊共用內(nèi)存,該內(nèi)存是本地CCDL數(shù)據(jù)包的4倍大小,其他核需要注冊與該塊內(nèi)存的掛接關(guān)系。共享內(nèi)存鎖也需要在主核注冊,副核注冊掛接關(guān)系,并注冊讀、寫鎖。在使用數(shù)據(jù)的接口中分別封裝讀、寫鎖,實現(xiàn)對共享內(nèi)存的保護。由于各個核都能讀寫該塊共享內(nèi)存,如同方便地模擬了交叉?zhèn)鬏斄鞒?。需要注意的是,多核鎖的使用,必須要保證上鎖和解鎖配對使用,否則會出現(xiàn)死等問題引起核間握手異常,系統(tǒng)復(fù)位。
使用多核仿真技術(shù),在仿真測試平臺上對某四余度飛控計算機軟件進行了仿真測試。該平臺能夠記錄自仿真系統(tǒng)啟動以來的各種歷史數(shù)據(jù),并可以以多通道曲線對比的方式展示給用戶。通過測試及數(shù)據(jù)分析,及時發(fā)現(xiàn)一些邏輯錯誤和時序問題;通過故障注入,還能進一步發(fā)現(xiàn)一些深層次的問題,如資源重入等。通過這樣的仿真測試,飛控計算機軟件的可靠性得到了有力的保障,為后續(xù)在真實飛控環(huán)境下測試奠定了堅實的基礎(chǔ)。
基于多核的多余度軟件測試方法可以在軟件開發(fā)初期發(fā)現(xiàn)軟件Bug,保證算法邏輯的正確性。在VxWorks實時操作系統(tǒng)下,采用多核的核間同步消息機制進行通道間同步,使得測試的實時性非常接近實際運行情況;采用共享內(nèi)存機制來仿真交叉?zhèn)鬏斶^程,保證了交叉?zhèn)鬏數(shù)目焖傩院捅憬菪裕涣硗?,基于多核技術(shù)的余度飛控軟件仿真測試方法還可以克服單CPU測試的缺點,整個仿真流程非常逼近真實的實時環(huán)境,非常適合于多余度軟件仿真測試,具有較高的實用價值。
[1] 楊 飛.余度飛控計算機的設(shè)計和仿真技術(shù)研究[D].西安:西北工業(yè)大學(xué),2007.
[2] 宋 龍,張文山,靳 凌,等.空空導(dǎo)彈飛控軟件研制中的虛擬樣機應(yīng)用[J].計算機仿真,2005,22(5):19-24.
[3] 劉小雄,章衛(wèi)國,李廣文.電傳飛行控制系統(tǒng)的余度設(shè)計技術(shù)[J].飛機設(shè)計,2006,(1):35-38.
[4] 吳成富,張江霞,段曉軍,等.余度飛控軟件單PC仿真測試技術(shù)[J].測控技術(shù),2011,(8):91-94.
[5] 潘計輝,張小林.三余度飛控計算機關(guān)鍵技術(shù)研究及工程實現(xiàn)[J].計算機測量與控制,2010,18(2):440-442.
[6] 馬秋瑜.無人機飛控系統(tǒng)實時余度軟件設(shè)計[D].西安:西北工業(yè)大學(xué),2007.
[7] 齊勁松.余度飛行控制計算機系統(tǒng)研究與實現(xiàn)[D].西安:西北工業(yè)大學(xué),2007.
[8] 梁忠杰.基于VxWorks的飛控計算機軟件研究與實現(xiàn)[D].西安:西北工業(yè)大學(xué),2006.
[9] 劉小雄,陳懷民,章衛(wèi)國,等.飛控系統(tǒng)多余度管理算法在VxWorks中的實現(xiàn)[J].計算機工程與應(yīng)用,2006,(02):260-262.
[10] 肖學(xué)甲.基于AMP架構(gòu)的多核間任務(wù)同步與通信的設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2011.
[11] 陳宗基,孫曉哲,秦旭東.民機飛控計算機系統(tǒng)虛擬樣機驗證平臺研究[J].系統(tǒng)仿真學(xué)報,2008,20(15):4057-4063.
[12] 沈 俊.直升機飛行控制實時仿真研究[D].南京:南京航空航天大學(xué),2011.
[13] 邱宗江,劉慧霞,席慶彪,等.無人機PCA故障檢測與診斷技術(shù)研究[J].計算機工程與應(yīng)用,2013,49(4):262-266.
[14] 楊啟軍,魯士文.基于多核的入侵防御系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2010,31(21):4595-4598.
[15] 黃志鋼,盛肖煒.多核處理器結(jié)構(gòu)與核間通信的CMC總線設(shè)計[J].沈陽理工大學(xué)學(xué)報,2012,31(6):70-75.