吳成富,侯曉梅,段曉軍
(西北工業(yè)大學(xué) 無人機(jī)特種技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710065)
機(jī)載計(jì)算機(jī)為提高可靠性和容錯(cuò)能力,普遍采用余度技術(shù),通過為系統(tǒng)增加多重資源,實(shí)現(xiàn)對(duì)多重資源的合理管理,從而提高產(chǎn)品和系統(tǒng)的可靠性[1]。余度飛控計(jì)算機(jī)系統(tǒng)由多臺(tái)飛控計(jì)算機(jī)組成,可降低由于某一通道飛控計(jì)算機(jī)失效而導(dǎo)致的系統(tǒng)故障。
目前余度管理軟件普遍采用手工編碼,可靠性和效率較低,開發(fā)周期長(zhǎng)[2],單元測(cè)試及代碼覆蓋率分析一般需要借助復(fù)雜的專業(yè)工具軟件,驗(yàn)證工作量大,難度高,而且無法對(duì)驗(yàn)證工作進(jìn)行定量評(píng)價(jià),軟件投入市場(chǎng)使用的周期長(zhǎng),成本高。
基于此,文中以三余度飛控計(jì)算機(jī)機(jī)載軟件為例,采用SCADE (Safety-Critical Application Development Environment)圖形化開發(fā)方法實(shí)現(xiàn)系統(tǒng)的開發(fā),同時(shí)采用SCADE代碼生成器KCG6.1自動(dòng)生成滿足DO-178B國(guó)際標(biāo)準(zhǔn)的A級(jí)質(zhì)量認(rèn)證的ANSI C語言的嵌入式產(chǎn)品代碼[3],并采用專業(yè)的軟件測(cè)試工具LRDA Testbed對(duì)生成的代碼進(jìn)行質(zhì)量評(píng)價(jià),在某機(jī)載余度管理軟件開發(fā)項(xiàng)目中應(yīng)用,縮短了開發(fā)周期,節(jié)省開發(fā)成本。
余度設(shè)計(jì)與余度管理是提高飛行控制系統(tǒng)容錯(cuò)能力、可靠性和安全性的手段[5]。通過在線信號(hào)監(jiān)控可以及時(shí)發(fā)現(xiàn)系統(tǒng)故障模塊;通過故障的隔離、切換和重構(gòu)來實(shí)現(xiàn)故障的處理;通過監(jiān)控、表決輸入輸出信號(hào)來選擇信號(hào)[6]。這些都是實(shí)現(xiàn)容錯(cuò)與高可靠性的手段。
余度管理主要研究的內(nèi)容包括以下幾個(gè)方面:
1)同步、交叉?zhèn)鬏敿夹g(shù);
2)監(jiān)控、表決(信號(hào)選擇技術(shù));
3)故障監(jiān)控、隔離技術(shù);
4)故障重構(gòu)技術(shù)。
文中以三余度數(shù)字量信號(hào)的監(jiān)控、表決為例介紹基于SCADE的余度管理軟件的開發(fā)。根據(jù)在線監(jiān)控檢查數(shù)據(jù)有效性,可能的有效數(shù)據(jù)分別為3個(gè)、2個(gè)、1個(gè)、0個(gè),對(duì)應(yīng)的監(jiān)控算法也就分以下幾種情況來討論。
3個(gè)信號(hào)有效時(shí)將有效數(shù)字量輸入信號(hào)按照大小值進(jìn)行排序處理,可得到最大值、次大值和最小值。設(shè)最大值為R3,中間值為R2,最小值為R1,并求取相鄰兩個(gè)值之間的差值,分別記為:ΔR12(R2減去 R1的差)、ΔR23(R3減去 R2的差)和 ΔR13(R3減去R1的差)。根據(jù)上述偏差的檢測(cè)結(jié)果與閾值ε做比較,確定各余度信號(hào)的狀態(tài)。由此,三余度數(shù)字量監(jiān)控、表決具體算法流程如圖1所示。
圖1 數(shù)字量監(jiān)控/表決算法Fig.1 Digital valuable monitor/vote algorithm
圖形化編程工具SCADE建立在嚴(yán)格的數(shù)學(xué)模型基礎(chǔ)之上,具有嚴(yán)格的數(shù)學(xué)語義,可以實(shí)現(xiàn)為不同項(xiàng)目組、制造商與供應(yīng)商之間提供可靠的通用的平臺(tái)實(shí)現(xiàn)系統(tǒng)需求的交流,且與硬件無關(guān),可配合不同的硬件平臺(tái)使用。SCADE界面采用類Visual Studio風(fēng)格,直觀友好,易學(xué)易用,提供了建立在嚴(yán)格的數(shù)學(xué)模型基礎(chǔ)之上的數(shù)據(jù)流圖(block diagrams)和安全狀態(tài)機(jī)(safe state machines)兩套圖形化建模機(jī)制,其中數(shù)據(jù)流圖適用于連續(xù)系統(tǒng)的建模,安全狀態(tài)機(jī)適用于離散系統(tǒng)建模,兩套機(jī)制融合在一起,能夠滿足不同類型的系統(tǒng)尤其是混合系統(tǒng)的開發(fā)。SCADE提供的形式驗(yàn)證彌補(bǔ)了測(cè)試中存在的不能保證系統(tǒng)安全性的局限,SCADE代碼生成器KCG通過了DO-178B國(guó)際標(biāo)準(zhǔn)的A級(jí)質(zhì)量認(rèn)證,保證了代碼的正確性。
基于上述算法流程,對(duì)三余度數(shù)字量信號(hào)監(jiān)控、表決算法進(jìn)行SCADE建模,采用狀態(tài)機(jī)(State Machine)來搭建有效數(shù)據(jù)為3/2/1時(shí)的數(shù)據(jù)流圖,具體模型如圖2所示。
其中子模塊3個(gè)數(shù)據(jù)有效時(shí)監(jiān)控表決模塊DIGIMonitor3具體模型圖3所示。
圖3 3個(gè)信號(hào)有效時(shí)監(jiān)控/表決模型Fig.3 The monitor/vote model of 3 active signal
Order為對(duì)3個(gè)數(shù)據(jù)進(jìn)行排序的子模塊,Abs為取絕對(duì)值子模塊。
開發(fā)過程中關(guān)鍵技術(shù)難點(diǎn):1)對(duì)多個(gè)同類型的操作進(jìn)行處理時(shí),SCADE不支持循環(huán)操作,使搭建模型的工作量復(fù)雜。2)對(duì)內(nèi)存等底層進(jìn)行操作時(shí),需要進(jìn)行手工代碼導(dǎo)入來協(xié)助完成軟件開發(fā)。
SCADE所生成的代碼是完全面向工程的產(chǎn)品代碼,可以直接嵌入到產(chǎn)品中去而不需做任何修改,且代碼的運(yùn)行結(jié)果和仿真的結(jié)果完全一致。采用KCG6.1代碼生成器,數(shù)字量表決監(jiān)控3個(gè)輸入有效模型自動(dòng)生成代碼部分截圖如圖4所示。
在LDRA Testbed測(cè)試環(huán)境下,依據(jù)Testbed收集的數(shù)據(jù),使用一定的評(píng)價(jià)模型對(duì)被評(píng)價(jià)軟件進(jìn)行評(píng)價(jià)。評(píng)價(jià)模型使用因數(shù)——特性——度量的三級(jí)結(jié)構(gòu)。根據(jù)公式評(píng)價(jià)軟件質(zhì)量特性:
對(duì)自動(dòng)生成的代碼進(jìn)行質(zhì)量分析評(píng)價(jià),測(cè)試結(jié)果如圖5所示。
圖4 KCG6.1.2生成代碼Fig.4 Code generated by KCG 6.1.2
其代碼生成器生成的嵌入式代碼子程序質(zhì)量及軟件的可測(cè)試性、可維護(hù)性及清晰性都嚴(yán)格遵照DO-178B國(guó)際標(biāo)準(zhǔn)達(dá)到 Excellent,手寫代碼分別為 Good,Middle,Middle.子程序質(zhì)量分類圖顯示手寫代碼子程序質(zhì)量為Middle,而自動(dòng)生成代碼為Good,軟件質(zhì)量相對(duì)手寫代碼有很大程度的提高。
圖5 代碼測(cè)試結(jié)果Fig.5 Codes test rusult
飛控計(jì)算機(jī)仿真機(jī)為3×1非相似硬件結(jié)構(gòu)(CPU不同),系統(tǒng)分為3個(gè)通道,每個(gè)通道含一臺(tái)飛控仿真計(jì)算機(jī),飛控計(jì)算機(jī)實(shí)時(shí)仿真機(jī)內(nèi)各板卡均基于VME背板總線,三臺(tái)飛控計(jì)算機(jī)采用非相似的處理器板卡 (處理器板支持JTAG接口和VxWorks6.8),并具有AFDX總線接口、ARINC429總線接口、CAN總線接口和DIO離散量接口,完成余度任務(wù)管理及在線監(jiān)控功能。該模塊另配備有飛控仿真機(jī)上位機(jī)一臺(tái),用于余度故障模擬及調(diào)試管理。其實(shí)物圖如圖6所示。
圖6 三余度飛控計(jì)算機(jī)實(shí)物圖Fig.6 Triple-redundant flight control computer
將SCADE代碼生成器KCG自動(dòng)生成的函數(shù)嵌入到VxWorks6.8開發(fā)環(huán)境中,大大降低了由手寫代碼造成的語法錯(cuò)誤和邏輯錯(cuò)誤,縮短了開發(fā)調(diào)試周期,節(jié)省了開發(fā)成本,很好的保證了三余度管理軟件的功能實(shí)現(xiàn),且代碼的可讀性良好,大大提高了機(jī)載三余度管理軟件的開發(fā)效率并保證了軟件代碼質(zhì)量,有很好的工程應(yīng)用價(jià)值。
[1]劉小雄,章衛(wèi)國(guó),李廣文.電傳飛行控制系統(tǒng)的余度設(shè)計(jì)技術(shù)[J].飛機(jī)設(shè)計(jì),2006,1(1):35-38.
LIU Xiao-xiong,ZHANG Wei-guo,LI Guang-wen.Redundancy techniques for fly-by-wire flight control systems[J].Aircraft Design,2006,1(1):35-38.
[2]林成文.機(jī)載軟件圖形化設(shè)計(jì)與自動(dòng)代碼生成研究[D].西安:西北工業(yè)大學(xué),2007.
[3]Esterel Technologies.SCADE Training Course[S].2009.
[4]吳成富,王睿,陳懷民,等.基于SCADE實(shí)現(xiàn)的三余度飛控計(jì)算機(jī)系統(tǒng)任務(wù)同步[J].航空計(jì)算技術(shù),2009,1(1):107-110.
WU Cheng-fu,WANG Rui,CHEN Huai-min,et al.Task synchronization oftriplex Hot-redundancy flightcontrol computerbased on SCADE[J].AeronauticalComputer Technioue,2009,1(1):107-110.
[5]宋祥貴,張新國(guó).電傳飛行控制系統(tǒng)[M].北京:國(guó)防工業(yè)出版社,2003.
[6]《飛機(jī)設(shè)計(jì)手冊(cè)》總編委會(huì).飛機(jī)設(shè)計(jì)手冊(cè)[M].北京:航空工業(yè)出版社,2010.