張 舒 安占新 趙 芊
北京航天自動(dòng)控制研究所,北京100854
?
一種滿足實(shí)時(shí)性需求的測(cè)發(fā)控軟件改進(jìn)技術(shù)
張 舒 安占新 趙 芊
北京航天自動(dòng)控制研究所,北京100854
針對(duì)基于Windows操作系統(tǒng)框架的測(cè)發(fā)控軟件無(wú)法滿足大多數(shù)型號(hào)實(shí)時(shí)性需求的情況,分析了現(xiàn)有框架不滿足實(shí)時(shí)性需求而導(dǎo)致任務(wù)失效的具體機(jī)理。提出了基于異步協(xié)作機(jī)制簡(jiǎn)化和并行實(shí)時(shí)性任務(wù)串行化的框架改進(jìn)方法,并對(duì)改進(jìn)前后框架的性能進(jìn)行了仿真分析。試驗(yàn)結(jié)果表明,基于改進(jìn)框架的測(cè)發(fā)控軟件處理實(shí)時(shí)性線程的周期循環(huán)間隔時(shí)間穩(wěn)定性由247ms改進(jìn)至20ms,平均超時(shí)失效概率由0.6改進(jìn)至無(wú)失效。
w框架;實(shí)時(shí)性;異步協(xié)作機(jī)制簡(jiǎn)化;并行實(shí)時(shí)性任務(wù)串行化
測(cè)試發(fā)射控制軟件和硬件設(shè)備一起組成測(cè)發(fā)控系統(tǒng),向彈、箭發(fā)送控制和測(cè)試指令;并接收、判別、存儲(chǔ)及顯示彈、箭回送的測(cè)試結(jié)果,從而完成等效器檢查、彈箭系統(tǒng)綜合測(cè)試及發(fā)射控制[1]。
由于多類型彈、箭的測(cè)發(fā)控系統(tǒng)有一定通用性,為提高軟件開(kāi)發(fā)效率,測(cè)發(fā)控軟件開(kāi)發(fā)方常常采用建立通用軟件框架的方法,按照功能特性將軟件模塊分類整合,降低模塊耦合程度,使軟件結(jié)構(gòu)精簡(jiǎn)、易開(kāi)發(fā)和維護(hù)。目前唯一成熟的通用框架是基于Windows MFC實(shí)現(xiàn)的(以下簡(jiǎn)稱w框架),可用于實(shí)現(xiàn)較為復(fù)雜的測(cè)試控制功能和交互界面。鑒于Windows為非實(shí)時(shí)性操作系統(tǒng),且其任務(wù)調(diào)度和管理對(duì)程序設(shè)計(jì)人員透明,不能滿足測(cè)發(fā)控系統(tǒng)一項(xiàng)重要性能,即實(shí)時(shí)性需求[2],本文通過(guò)系統(tǒng)地分析現(xiàn)有w框架不滿足實(shí)時(shí)性需求的任務(wù)特征和機(jī)理,提出一種基于異步協(xié)作機(jī)制化簡(jiǎn)和并行實(shí)時(shí)性任務(wù)串行化的改進(jìn)框架,并仿真對(duì)比分析了基于改進(jìn)前后框架的測(cè)發(fā)控軟件實(shí)時(shí)性線程的周期循環(huán)間隔時(shí)間和超時(shí)失效概率。
1.1 測(cè)發(fā)控系統(tǒng)實(shí)時(shí)性需求與滿足情況分析
在某些型號(hào)軟件研制和系統(tǒng)試驗(yàn)過(guò)程中發(fā)現(xiàn),某些測(cè)發(fā)控任務(wù)具有強(qiáng)實(shí)時(shí)性,特征如下:
1)與彈、箭的高頻率周期性交互,要求周期穩(wěn)定無(wú)波動(dòng);
2)向彈、箭發(fā)送數(shù)據(jù)或命令后,要求及時(shí)回復(fù),等待周期短;
3)多個(gè)具有以上2條特征的測(cè)發(fā)控任務(wù)并行進(jìn)行;
4)為避免由于人工操作不及時(shí)導(dǎo)致故障處理不及時(shí),在某些功能中可由軟件直接根據(jù)自身狀態(tài)和接收到的反饋信息決策下一步需要進(jìn)行的動(dòng)作或流程[3-4]。
基于上述實(shí)時(shí)性測(cè)發(fā)控任務(wù),采用現(xiàn)有非實(shí)時(shí)性的w框架進(jìn)行測(cè)發(fā)控軟件開(kāi)發(fā)時(shí),會(huì)產(chǎn)生以下現(xiàn)象:
1)對(duì)于頻率較高的周期性任務(wù),檢查任務(wù)開(kāi)始執(zhí)行的間隔時(shí)間,發(fā)現(xiàn)間隔無(wú)規(guī)律變化,個(gè)別間隔時(shí)間倍數(shù)超出任務(wù)要求;
2)收到反饋數(shù)據(jù)后,測(cè)發(fā)控軟件延遲進(jìn)行處理和判別,導(dǎo)致自身邏輯認(rèn)定反饋數(shù)據(jù)接收超時(shí);
3)多個(gè)周期性任務(wù)同時(shí)進(jìn)行時(shí),測(cè)發(fā)控任務(wù)超時(shí)失效的概率明顯增加;
4)基于現(xiàn)有的w框架開(kāi)發(fā)的測(cè)發(fā)控軟件運(yùn)行時(shí)較多依賴人工參與,導(dǎo)致故障處理不及時(shí)。
1.2 現(xiàn)有w框架機(jī)理分析
當(dāng)前w框架的功能模塊包括: UI界面模塊;負(fù)責(zé)流程控制和功能調(diào)用的MainTask模塊;負(fù)責(zé)描述測(cè)發(fā)控邏輯的StepWidgt模塊;負(fù)責(zé)與外部設(shè)備進(jìn)行指令和數(shù)據(jù)交互的InterfaceWidget模塊,各模塊之間的聯(lián)系如圖1所示。
圖1 w框架架構(gòu)
由于Windows為非實(shí)時(shí)性操作系統(tǒng),若沒(méi)有特殊的設(shè)定,其線程調(diào)度對(duì)程序設(shè)計(jì)者是透明的;且Windows操作系統(tǒng)本身具備的UI(如鼠標(biāo)、鍵盤(pán)操作及屏幕刷新)等非實(shí)時(shí)性系統(tǒng)功能也隨時(shí)可能搶占內(nèi)核資源。因此,w框架架構(gòu)特征導(dǎo)致1.1節(jié)中不滿足實(shí)時(shí)性現(xiàn)象的主要原因如下:
1)程序中存在多個(gè)并行任務(wù),多個(gè)任務(wù)線程會(huì)同時(shí)搶占同一計(jì)算機(jī)資源,造成阻塞,導(dǎo)致實(shí)時(shí)性任務(wù)執(zhí)行間隔出現(xiàn)較大波動(dòng)(多個(gè)實(shí)時(shí)性測(cè)發(fā)控任務(wù)同時(shí)并行存在時(shí),這種情況更明顯);
2)軟件接口的數(shù)據(jù)接收InterfaceWidget 模塊和測(cè)發(fā)控系統(tǒng)的數(shù)據(jù)處理模塊間交互方式為異步協(xié)作模式,存在一定的依賴關(guān)系,如圖2(a)所示。當(dāng)收到外系統(tǒng)的數(shù)據(jù)后,通過(guò)消息傳遞進(jìn)行回調(diào),接收到的數(shù)據(jù)先傳給MainTask,再由MainTask調(diào)用相應(yīng)的數(shù)據(jù)處理模塊。該工作方式時(shí)間開(kāi)銷較大,導(dǎo)致實(shí)時(shí)性任務(wù)自身定時(shí)器判定數(shù)據(jù)接收超時(shí);
3)w框架中具有的大量測(cè)試流程選擇和異常處理分支,需要呈現(xiàn)在界面上等待人工決策。
2.1 異步協(xié)作機(jī)制簡(jiǎn)化
針對(duì)第1節(jié)所述,InterfaceWidget模塊和StepWidgt模塊進(jìn)行異步通信帶來(lái)額外時(shí)間開(kāi)銷,造成因?qū)崟r(shí)性任務(wù)實(shí)際完成時(shí)間長(zhǎng)于預(yù)期而不滿足實(shí)時(shí)性要求的問(wèn)題,可通過(guò)精簡(jiǎn)數(shù)據(jù)傳遞的參與者來(lái)避免消息傳遞和異步通信,簡(jiǎn)化前后軟件框架如圖 2所示。簡(jiǎn)化后的框架要求StepWidgt模塊在需要處理測(cè)試數(shù)據(jù)時(shí)知曉與它協(xié)作的特定的InterfaceWidget模塊,并設(shè)計(jì)專用內(nèi)部接口協(xié)議,可將該軟件內(nèi)部接口定義為一片公共內(nèi)存區(qū)域,使數(shù)據(jù)處理功能與數(shù)據(jù)接收功能緊耦合。
由圖2可知,簡(jiǎn)化后的w框架中,MainTask不再參與消息傳遞,而是直接通過(guò)數(shù)據(jù)處理線程和接口線程協(xié)作實(shí)現(xiàn)數(shù)據(jù)交互。同時(shí),數(shù)據(jù)處理線程在等待測(cè)試數(shù)據(jù)時(shí),無(wú)需再創(chuàng)建一個(gè)由信號(hào)量終止的超時(shí)計(jì)時(shí)器,而是在每次嘗試讀取測(cè)試數(shù)據(jù)失敗后由自身的時(shí)標(biāo)判斷是否超時(shí),未超時(shí)則再次嘗試讀取數(shù)據(jù),循環(huán)往復(fù)直至讀取數(shù)據(jù)成功或判斷已超時(shí)。
圖2 基于簡(jiǎn)化異步協(xié)作和通信機(jī)制的w框架
2.2 并行實(shí)時(shí)性任務(wù)串行化
第1節(jié)中并行任務(wù)搶占資源會(huì)導(dǎo)致實(shí)時(shí)性任務(wù)的執(zhí)行間隔時(shí)間波動(dòng),造成超時(shí)失效的問(wèn)題,如圖3并行化部分所示。目前的w框架中添加新任務(wù)線程時(shí),直接調(diào)用AfxBeginThread系統(tǒng)函數(shù)創(chuàng)建線程,僅對(duì)多個(gè)并行線程訪問(wèn)的公共數(shù)據(jù)區(qū)進(jìn)行保護(hù),而不同線程間的調(diào)度工作則交付Windows系統(tǒng)自行處理。
針對(duì)該問(wèn)題,首先可在程序初始化時(shí),調(diào)用AfxBeginThread創(chuàng)建一個(gè)用于處理實(shí)時(shí)性測(cè)試任務(wù)的專用線程。該線程將所有并行且相互獨(dú)立的實(shí)時(shí)性任務(wù)串行排列,在測(cè)發(fā)控程序生命周期中無(wú)限循環(huán),循環(huán)周期為所有實(shí)時(shí)性任務(wù)理論周期的最小公約數(shù)。同時(shí)在各實(shí)時(shí)性任務(wù)前加入適當(dāng)?shù)募s束條件,使各項(xiàng)實(shí)時(shí)性任務(wù)在合適的時(shí)機(jī)按照自身的周期運(yùn)行。并行實(shí)時(shí)性任務(wù)串行化如圖 3中串行化部分所示。
其次,為減少或消除第1節(jié)中實(shí)時(shí)性任務(wù)資源被UI等非實(shí)時(shí)性任務(wù)搶占的情況,可為實(shí)時(shí)性線程指定單獨(dú)的內(nèi)核資源(目前運(yùn)行測(cè)發(fā)控軟件的計(jì)算機(jī)至少具備2個(gè)內(nèi)核,故內(nèi)核資源較為充足),且在每個(gè)周期的空閑時(shí)間內(nèi),通過(guò)不斷計(jì)算當(dāng)前周期經(jīng)過(guò)的時(shí)間來(lái)避免實(shí)時(shí)性線程主動(dòng)放棄內(nèi)核資源,從而保證下一次循環(huán)周期可按時(shí)開(kāi)始。若實(shí)時(shí)性線程單獨(dú)占領(lǐng)1個(gè)內(nèi)核資源時(shí),則還需滿足下述條件:
其中,ti為單個(gè)實(shí)時(shí)性任務(wù)花費(fèi)的時(shí)間,Ti為單個(gè)實(shí)時(shí)性任務(wù)的周期,T0為所有實(shí)時(shí)性任務(wù)周期的最小公約數(shù)。
再次,設(shè)置實(shí)時(shí)性線程相對(duì)優(yōu)先級(jí)和優(yōu)先級(jí)微調(diào)等級(jí)為最高,即REALTIME_PRIORITY_CLASS和THREAD_PRIORITY_TIME_CRITICAL,從而實(shí)現(xiàn)其他非實(shí)時(shí)性任務(wù)線程與實(shí)時(shí)性任務(wù)線程的內(nèi)核資源合理分配。
圖3 多測(cè)試任務(wù)串行化規(guī)劃原理釋義
最后,在StepWidgt模塊中加入超時(shí)容錯(cuò)機(jī)制以防止任務(wù)超時(shí)失效。即當(dāng)軟件測(cè)試流程的某一步異常終止時(shí),軟件可根據(jù)自身錯(cuò)誤狀態(tài)來(lái)判斷,若當(dāng)前的異常是由超時(shí)導(dǎo)致,則自動(dòng)退回至該測(cè)試步驟的開(kāi)始階段重新執(zhí)行。同時(shí)為避免由于系統(tǒng)故障而造成死循環(huán)的情況,當(dāng)連續(xù)出現(xiàn)3次超時(shí)導(dǎo)致的異常后,軟件報(bào)錯(cuò),轉(zhuǎn)由人工進(jìn)行錯(cuò)誤處理。該措施能夠減少人工參與程度,增強(qiáng)軟件的應(yīng)激反應(yīng)能力。
首先驗(yàn)證改進(jìn)后w框架中實(shí)時(shí)性任務(wù)間隔時(shí)間是否滿足要求。仿真環(huán)境為:測(cè)發(fā)控軟件同時(shí)產(chǎn)生2個(gè)實(shí)時(shí)性任務(wù)線程Task_A和Task_B,周期分別為50ms和100ms,2個(gè)實(shí)時(shí)性線程各自并行運(yùn)行1000和500個(gè)周期(理論用時(shí)50s)。此外,程序整個(gè)生命周期中伴隨UI任務(wù)等非實(shí)時(shí)性線程。在程序50ms周期的實(shí)時(shí)性任務(wù)TaskA進(jìn)入處獲得系統(tǒng)時(shí)間,并打印2次循環(huán)的實(shí)際間隔時(shí)間?;谠瓀框架和改進(jìn)后的w框架的測(cè)發(fā)控軟件的實(shí)際周期循環(huán)間隔時(shí)間的仿真結(jié)果分別如圖4(a)和4(b)所示。
圖4 設(shè)置線程優(yōu)先級(jí)前后效果對(duì)比圖
由圖4可知,基于原w框架的測(cè)發(fā)控軟件運(yùn)行過(guò)程中,實(shí)時(shí)性線程實(shí)際的循環(huán)間隔時(shí)間經(jīng)常出現(xiàn)較大的時(shí)間波動(dòng),最大可至287ms;而基于改進(jìn)后w框架的測(cè)發(fā)控軟件的實(shí)時(shí)性線程周期循環(huán)的間隔時(shí)間穩(wěn)定在50ms±10ms,該結(jié)果表明:
1)w框架的改進(jìn)方法解決了多個(gè)任務(wù)并行搶占公共資源的問(wèn)題;
2)改進(jìn)后的w框架實(shí)時(shí)性任務(wù)資源不再被其它非實(shí)時(shí)性任務(wù)搶占;
3)化簡(jiǎn)后的數(shù)據(jù)處理功能耗費(fèi)的時(shí)間滿足實(shí)時(shí)性要求。
統(tǒng)計(jì)基于改進(jìn)前后w框架的測(cè)發(fā)控軟件對(duì)傳遞對(duì)準(zhǔn)、上傳文件等實(shí)時(shí)性任務(wù)的失效概率,以每10次為單位,共5遍,統(tǒng)計(jì)結(jié)果見(jiàn)表 1。在試驗(yàn)中,基于原w框架的測(cè)發(fā)控軟件出現(xiàn)超時(shí)失效較頻繁且無(wú)規(guī)律,由于超時(shí)失效而報(bào)錯(cuò)的情況隨機(jī)出現(xiàn)2~8次。而基于改進(jìn)后w框架的測(cè)發(fā)控軟件在試驗(yàn)中不再出現(xiàn)因超時(shí)失效而報(bào)錯(cuò)的情況。
表1 測(cè)發(fā)控軟件超時(shí)報(bào)錯(cuò)次數(shù)統(tǒng)計(jì)
系統(tǒng)地分析了現(xiàn)w框架不滿足實(shí)時(shí)性需求導(dǎo)致任務(wù)失效的特征和機(jī)理,針對(duì)數(shù)據(jù)處理響應(yīng)時(shí)間較長(zhǎng)的問(wèn)題提出異步協(xié)作機(jī)制簡(jiǎn)化方法。針對(duì)并行任務(wù)搶占內(nèi)核資源的問(wèn)題提出并行實(shí)時(shí)性任務(wù)串行化方案。最后仿真對(duì)比分析了基于改進(jìn)前后框架的測(cè)發(fā)控軟件實(shí)時(shí)性線程的周期循環(huán)間隔時(shí)間和超時(shí)失效概率。結(jié)果表明,改進(jìn)后的w框架實(shí)時(shí)性線程周期循環(huán)間隔時(shí)間穩(wěn)定性由247ms改進(jìn)至20ms,平均超時(shí)失效概率由0.6改進(jìn)至無(wú)失效。
[1] 張學(xué)英,易航,汪洋,韓亮.運(yùn)載火箭測(cè)發(fā)控系統(tǒng)通用化設(shè)計(jì)[J].導(dǎo)彈與航天運(yùn)載技術(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ū)ο筌浖詈系亩攘亢万?yàn)證[J].東南大學(xué)學(xué)報(bào),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è)計(jì)模式在數(shù)據(jù)訪問(wèn)中的應(yīng)用[J].電腦知識(shí)與技術(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ái)的測(cè)控系統(tǒng)的實(shí)時(shí)性優(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的弱實(shí)時(shí)多任務(wù)的實(shí)現(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-),男,北京人,碩士,助理工程師,主要研究方向?yàn)檐浖こ蹋话舱夹?1978-),男,河北衡水人,碩士,高級(jí)工程師,主要研究方向?yàn)檐浖こ?;趙 芊(1991-),男,北京人,碩士研究生,主要研究方向?yàn)檐浖こ獭?/p>
TP319
A
1006-3242(2016)06-0068-04