張 舒 安占新 趙 芊
北京航天自動控制研究所,北京100854
?
一種滿足實時性需求的測發(fā)控軟件改進(jìn)技術(shù)
張 舒 安占新 趙 芊
北京航天自動控制研究所,北京100854
針對基于Windows操作系統(tǒng)框架的測發(fā)控軟件無法滿足大多數(shù)型號實時性需求的情況,分析了現(xiàn)有框架不滿足實時性需求而導(dǎo)致任務(wù)失效的具體機(jī)理。提出了基于異步協(xié)作機(jī)制簡化和并行實時性任務(wù)串行化的框架改進(jìn)方法,并對改進(jìn)前后框架的性能進(jìn)行了仿真分析。試驗結(jié)果表明,基于改進(jìn)框架的測發(fā)控軟件處理實時性線程的周期循環(huán)間隔時間穩(wěn)定性由247ms改進(jìn)至20ms,平均超時失效概率由0.6改進(jìn)至無失效。
w框架;實時性;異步協(xié)作機(jī)制簡化;并行實時性任務(wù)串行化
測試發(fā)射控制軟件和硬件設(shè)備一起組成測發(fā)控系統(tǒng),向彈、箭發(fā)送控制和測試指令;并接收、判別、存儲及顯示彈、箭回送的測試結(jié)果,從而完成等效器檢查、彈箭系統(tǒng)綜合測試及發(fā)射控制[1]。
由于多類型彈、箭的測發(fā)控系統(tǒng)有一定通用性,為提高軟件開發(fā)效率,測發(fā)控軟件開發(fā)方常常采用建立通用軟件框架的方法,按照功能特性將軟件模塊分類整合,降低模塊耦合程度,使軟件結(jié)構(gòu)精簡、易開發(fā)和維護(hù)。目前唯一成熟的通用框架是基于Windows MFC實現(xiàn)的(以下簡稱w框架),可用于實現(xiàn)較為復(fù)雜的測試控制功能和交互界面。鑒于Windows為非實時性操作系統(tǒng),且其任務(wù)調(diào)度和管理對程序設(shè)計人員透明,不能滿足測發(fā)控系統(tǒng)一項重要性能,即實時性需求[2],本文通過系統(tǒng)地分析現(xiàn)有w框架不滿足實時性需求的任務(wù)特征和機(jī)理,提出一種基于異步協(xié)作機(jī)制化簡和并行實時性任務(wù)串行化的改進(jìn)框架,并仿真對比分析了基于改進(jìn)前后框架的測發(fā)控軟件實時性線程的周期循環(huán)間隔時間和超時失效概率。
1.1 測發(fā)控系統(tǒng)實時性需求與滿足情況分析
在某些型號軟件研制和系統(tǒng)試驗過程中發(fā)現(xiàn),某些測發(fā)控任務(wù)具有強(qiáng)實時性,特征如下:
1)與彈、箭的高頻率周期性交互,要求周期穩(wěn)定無波動;
2)向彈、箭發(fā)送數(shù)據(jù)或命令后,要求及時回復(fù),等待周期短;
3)多個具有以上2條特征的測發(fā)控任務(wù)并行進(jìn)行;
4)為避免由于人工操作不及時導(dǎo)致故障處理不及時,在某些功能中可由軟件直接根據(jù)自身狀態(tài)和接收到的反饋信息決策下一步需要進(jìn)行的動作或流程[3-4]。
基于上述實時性測發(fā)控任務(wù),采用現(xiàn)有非實時性的w框架進(jìn)行測發(fā)控軟件開發(fā)時,會產(chǎn)生以下現(xiàn)象:
1)對于頻率較高的周期性任務(wù),檢查任務(wù)開始執(zhí)行的間隔時間,發(fā)現(xiàn)間隔無規(guī)律變化,個別間隔時間倍數(shù)超出任務(wù)要求;
2)收到反饋數(shù)據(jù)后,測發(fā)控軟件延遲進(jìn)行處理和判別,導(dǎo)致自身邏輯認(rèn)定反饋數(shù)據(jù)接收超時;
3)多個周期性任務(wù)同時進(jìn)行時,測發(fā)控任務(wù)超時失效的概率明顯增加;
4)基于現(xiàn)有的w框架開發(fā)的測發(fā)控軟件運行時較多依賴人工參與,導(dǎo)致故障處理不及時。
1.2 現(xiàn)有w框架機(jī)理分析
當(dāng)前w框架的功能模塊包括: UI界面模塊;負(fù)責(zé)流程控制和功能調(diào)用的MainTask模塊;負(fù)責(zé)描述測發(fā)控邏輯的StepWidgt模塊;負(fù)責(zé)與外部設(shè)備進(jìn)行指令和數(shù)據(jù)交互的InterfaceWidget模塊,各模塊之間的聯(lián)系如圖1所示。
圖1 w框架架構(gòu)
由于Windows為非實時性操作系統(tǒng),若沒有特殊的設(shè)定,其線程調(diào)度對程序設(shè)計者是透明的;且Windows操作系統(tǒng)本身具備的UI(如鼠標(biāo)、鍵盤操作及屏幕刷新)等非實時性系統(tǒng)功能也隨時可能搶占內(nèi)核資源。因此,w框架架構(gòu)特征導(dǎo)致1.1節(jié)中不滿足實時性現(xiàn)象的主要原因如下:
1)程序中存在多個并行任務(wù),多個任務(wù)線程會同時搶占同一計算機(jī)資源,造成阻塞,導(dǎo)致實時性任務(wù)執(zhí)行間隔出現(xiàn)較大波動(多個實時性測發(fā)控任務(wù)同時并行存在時,這種情況更明顯);
2)軟件接口的數(shù)據(jù)接收InterfaceWidget 模塊和測發(fā)控系統(tǒng)的數(shù)據(jù)處理模塊間交互方式為異步協(xié)作模式,存在一定的依賴關(guān)系,如圖2(a)所示。當(dāng)收到外系統(tǒng)的數(shù)據(jù)后,通過消息傳遞進(jìn)行回調(diào),接收到的數(shù)據(jù)先傳給MainTask,再由MainTask調(diào)用相應(yīng)的數(shù)據(jù)處理模塊。該工作方式時間開銷較大,導(dǎo)致實時性任務(wù)自身定時器判定數(shù)據(jù)接收超時;
3)w框架中具有的大量測試流程選擇和異常處理分支,需要呈現(xiàn)在界面上等待人工決策。
2.1 異步協(xié)作機(jī)制簡化
針對第1節(jié)所述,InterfaceWidget模塊和StepWidgt模塊進(jìn)行異步通信帶來額外時間開銷,造成因?qū)崟r性任務(wù)實際完成時間長于預(yù)期而不滿足實時性要求的問題,可通過精簡數(shù)據(jù)傳遞的參與者來避免消息傳遞和異步通信,簡化前后軟件框架如圖 2所示。簡化后的框架要求StepWidgt模塊在需要處理測試數(shù)據(jù)時知曉與它協(xié)作的特定的InterfaceWidget模塊,并設(shè)計專用內(nèi)部接口協(xié)議,可將該軟件內(nèi)部接口定義為一片公共內(nèi)存區(qū)域,使數(shù)據(jù)處理功能與數(shù)據(jù)接收功能緊耦合。
由圖2可知,簡化后的w框架中,MainTask不再參與消息傳遞,而是直接通過數(shù)據(jù)處理線程和接口線程協(xié)作實現(xiàn)數(shù)據(jù)交互。同時,數(shù)據(jù)處理線程在等待測試數(shù)據(jù)時,無需再創(chuàng)建一個由信號量終止的超時計時器,而是在每次嘗試讀取測試數(shù)據(jù)失敗后由自身的時標(biāo)判斷是否超時,未超時則再次嘗試讀取數(shù)據(jù),循環(huán)往復(fù)直至讀取數(shù)據(jù)成功或判斷已超時。
圖2 基于簡化異步協(xié)作和通信機(jī)制的w框架
2.2 并行實時性任務(wù)串行化
第1節(jié)中并行任務(wù)搶占資源會導(dǎo)致實時性任務(wù)的執(zhí)行間隔時間波動,造成超時失效的問題,如圖3并行化部分所示。目前的w框架中添加新任務(wù)線程時,直接調(diào)用AfxBeginThread系統(tǒng)函數(shù)創(chuàng)建線程,僅對多個并行線程訪問的公共數(shù)據(jù)區(qū)進(jìn)行保護(hù),而不同線程間的調(diào)度工作則交付Windows系統(tǒng)自行處理。
針對該問題,首先可在程序初始化時,調(diào)用AfxBeginThread創(chuàng)建一個用于處理實時性測試任務(wù)的專用線程。該線程將所有并行且相互獨立的實時性任務(wù)串行排列,在測發(fā)控程序生命周期中無限循環(huán),循環(huán)周期為所有實時性任務(wù)理論周期的最小公約數(shù)。同時在各實時性任務(wù)前加入適當(dāng)?shù)募s束條件,使各項實時性任務(wù)在合適的時機(jī)按照自身的周期運行。并行實時性任務(wù)串行化如圖 3中串行化部分所示。
其次,為減少或消除第1節(jié)中實時性任務(wù)資源被UI等非實時性任務(wù)搶占的情況,可為實時性線程指定單獨的內(nèi)核資源(目前運行測發(fā)控軟件的計算機(jī)至少具備2個內(nèi)核,故內(nèi)核資源較為充足),且在每個周期的空閑時間內(nèi),通過不斷計算當(dāng)前周期經(jīng)過的時間來避免實時性線程主動放棄內(nèi)核資源,從而保證下一次循環(huán)周期可按時開始。若實時性線程單獨占領(lǐng)1個內(nèi)核資源時,則還需滿足下述條件:
其中,ti為單個實時性任務(wù)花費的時間,Ti為單個實時性任務(wù)的周期,T0為所有實時性任務(wù)周期的最小公約數(shù)。
再次,設(shè)置實時性線程相對優(yōu)先級和優(yōu)先級微調(diào)等級為最高,即REALTIME_PRIORITY_CLASS和THREAD_PRIORITY_TIME_CRITICAL,從而實現(xiàn)其他非實時性任務(wù)線程與實時性任務(wù)線程的內(nèi)核資源合理分配。
圖3 多測試任務(wù)串行化規(guī)劃原理釋義
最后,在StepWidgt模塊中加入超時容錯機(jī)制以防止任務(wù)超時失效。即當(dāng)軟件測試流程的某一步異常終止時,軟件可根據(jù)自身錯誤狀態(tài)來判斷,若當(dāng)前的異常是由超時導(dǎo)致,則自動退回至該測試步驟的開始階段重新執(zhí)行。同時為避免由于系統(tǒng)故障而造成死循環(huán)的情況,當(dāng)連續(xù)出現(xiàn)3次超時導(dǎo)致的異常后,軟件報錯,轉(zhuǎn)由人工進(jìn)行錯誤處理。該措施能夠減少人工參與程度,增強(qiáng)軟件的應(yīng)激反應(yīng)能力。
首先驗證改進(jìn)后w框架中實時性任務(wù)間隔時間是否滿足要求。仿真環(huán)境為:測發(fā)控軟件同時產(chǎn)生2個實時性任務(wù)線程Task_A和Task_B,周期分別為50ms和100ms,2個實時性線程各自并行運行1000和500個周期(理論用時50s)。此外,程序整個生命周期中伴隨UI任務(wù)等非實時性線程。在程序50ms周期的實時性任務(wù)TaskA進(jìn)入處獲得系統(tǒng)時間,并打印2次循環(huán)的實際間隔時間?;谠瓀框架和改進(jìn)后的w框架的測發(fā)控軟件的實際周期循環(huán)間隔時間的仿真結(jié)果分別如圖4(a)和4(b)所示。
圖4 設(shè)置線程優(yōu)先級前后效果對比圖
由圖4可知,基于原w框架的測發(fā)控軟件運行過程中,實時性線程實際的循環(huán)間隔時間經(jīng)常出現(xiàn)較大的時間波動,最大可至287ms;而基于改進(jìn)后w框架的測發(fā)控軟件的實時性線程周期循環(huán)的間隔時間穩(wěn)定在50ms±10ms,該結(jié)果表明:
1)w框架的改進(jìn)方法解決了多個任務(wù)并行搶占公共資源的問題;
2)改進(jìn)后的w框架實時性任務(wù)資源不再被其它非實時性任務(wù)搶占;
3)化簡后的數(shù)據(jù)處理功能耗費的時間滿足實時性要求。
統(tǒng)計基于改進(jìn)前后w框架的測發(fā)控軟件對傳遞對準(zhǔn)、上傳文件等實時性任務(wù)的失效概率,以每10次為單位,共5遍,統(tǒng)計結(jié)果見表 1。在試驗中,基于原w框架的測發(fā)控軟件出現(xiàn)超時失效較頻繁且無規(guī)律,由于超時失效而報錯的情況隨機(jī)出現(xiàn)2~8次。而基于改進(jìn)后w框架的測發(fā)控軟件在試驗中不再出現(xiàn)因超時失效而報錯的情況。
表1 測發(fā)控軟件超時報錯次數(shù)統(tǒng)計
系統(tǒng)地分析了現(xiàn)w框架不滿足實時性需求導(dǎo)致任務(wù)失效的特征和機(jī)理,針對數(shù)據(jù)處理響應(yīng)時間較長的問題提出異步協(xié)作機(jī)制簡化方法。針對并行任務(wù)搶占內(nèi)核資源的問題提出并行實時性任務(wù)串行化方案。最后仿真對比分析了基于改進(jìn)前后框架的測發(fā)控軟件實時性線程的周期循環(huán)間隔時間和超時失效概率。結(jié)果表明,改進(jìn)后的w框架實時性線程周期循環(huán)間隔時間穩(wěn)定性由247ms改進(jìn)至20ms,平均超時失效概率由0.6改進(jìn)至無失效。
[1] 張學(xué)英,易航,汪洋,韓亮.運載火箭測發(fā)控系統(tǒng)通用化設(shè)計[J].導(dǎo)彈與航天運載技術(shù),2012, (4): 15-19.(Zhang Xueying, Yi Hang, Wang Yang, Han Liang.General Design of Control System for Launch Vehicle[J].Missiles and Space Vehicles, 2012, (4): 15-19.)
[2] 侯俊杰.深入淺出MFC(第二版)[M].武漢:華中科技大學(xué)出版社,2001.
[3] 李必信.面向?qū)ο筌浖詈系亩攘亢万炞C[J].東南大學(xué)學(xué)報,2006, 36(3): 446-451.(Li Bixin, Measurement and Verification of Object Oriented Software Coupling[J]. Journal of Southeast University, 2006, 36(3):446-451.)
[4] 徐峰.抽象工廠設(shè)計模式在數(shù)據(jù)訪問中的應(yīng)用[J].電腦知識與技術(shù),2009, 5(18):4669-4670.(Xu Feng. Application of Abstract Factory Design Pattern in Data Access[J].Computer Knowledge and Technology, 2009, 5(18):4669-4670.)
[5] 劉振吉,底健.基于Windows平臺的測控系統(tǒng)的實時性優(yōu)化方法[J].信息與電子工程,2008, 6(5):383-386.(Li Zhenji, Di Jian.Real Time Optimization Method of Measurement and Control System Based on Windows Platform[J].Information and Electronic Engineering, 2008, 6(5):383-386.)
[6] 鐘洋.基于Windows NT的弱實時多任務(wù)的實現(xiàn)[D].武漢:武漢科技大學(xué),2002.(Zhong Yang. Implementation of a Weak Real Time Multi-Task Based on NT Windows[D]. Wuhan:Journal of Wuhan University of Science and Technology, 2002.)
An Improved Method of TLC System Software for the Real-Time Requirement
Zhang Shu,An Zhanxin,Zhao Qian
Beijing Aerospace Automatic Control Institute, Beijing 100854, China
Duetothetestlaunchandcontrolsystem(TLCsystem)softwarebasedonWindowsoperatingsystemframework,whichcannotfulfilltherealtimerequirementofmostoflaunchmission,thespecificmechanismofmissionsfailureisanalyzedasthepresentframeworkishardlytofulfillrealtimedemands.Amethodforrefiningtheframeworkisproposed,whichisbasedontheimprovedmethodwithasynchronouscooperativesimplificationandparalleltasksserializationinrealtime,andthesimulationisimplementedfortheperformanceanalysisofbothproposedframeworkimprovedandoriginalframework.TheresultsshowthatthestabilityofcycleintervaltimeofrealtimethreadsprocessedbyTLCsystemsoftwarebasedontheimprovedframeworkispromotedby20msachievedfrom247msandtheaveragefailureprobabilityisimprovedfrom0.6tonull.
wframework;Realtime;Asynchronouscooperativesimplification;Paralleltasksserializationinrealtime
2016-05-17
張 舒(1989-),男,北京人,碩士,助理工程師,主要研究方向為軟件工程;安占新(1978-),男,河北衡水人,碩士,高級工程師,主要研究方向為軟件工程;趙 芊(1991-),男,北京人,碩士研究生,主要研究方向為軟件工程。
TP319
A
1006-3242(2016)06-0068-04