张 舒 安占新 赵 芊
北京航天自动控制研究所,北京100854
一种满足实时性需求的测发控软件改进技术
张 舒 安占新 赵 芊
北京航天自动控制研究所,北京100854
针对基于Windows操作系统框架的测发控软件无法满足大多数型号实时性需求的情况,分析了现有框架不满足实时性需求而导致任务失效的具体机理。提出了基于异步协作机制简化和并行实时性任务串行化的框架改进方法,并对改进前后框架的性能进行了仿真分析。试验结果表明,基于改进框架的测发控软件处理实时性线程的周期循环间隔时间稳定性由247ms改进至20ms,平均超时失效概率由0.6改进至无失效。
w框架;实时性;异步协作机制简化;并行实时性任务串行化
测试发射控制软件和硬件设备一起组成测发控系统,向弹、箭发送控制和测试指令;并接收、判别、存储及显示弹、箭回送的测试结果,从而完成等效器检查、弹箭系统综合测试及发射控制[1]。
由于多类型弹、箭的测发控系统有一定通用性,为提高软件开发效率,测发控软件开发方常常采用建立通用软件框架的方法,按照功能特性将软件模块分类整合,降低模块耦合程度,使软件结构精简、易开发和维护。目前唯一成熟的通用框架是基于Windows MFC实现的(以下简称w框架),可用于实现较为复杂的测试控制功能和交互界面。鉴于Windows为非实时性操作系统,且其任务调度和管理对程序设计人员透明,不能满足测发控系统一项重要性能,即实时性需求[2],本文通过系统地分析现有w框架不满足实时性需求的任务特征和机理,提出一种基于异步协作机制化简和并行实时性任务串行化的改进框架,并仿真对比分析了基于改进前后框架的测发控软件实时性线程的周期循环间隔时间和超时失效概率。
1.1 测发控系统实时性需求与满足情况分析
在某些型号软件研制和系统试验过程中发现,某些测发控任务具有强实时性,特征如下:
1)与弹、箭的高频率周期性交互,要求周期稳定无波动;
2)向弹、箭发送数据或命令后,要求及时回复,等待周期短;
3)多个具有以上2条特征的测发控任务并行进行;
4)为避免由于人工操作不及时导致故障处理不及时,在某些功能中可由软件直接根据自身状态和接收到的反馈信息决策下一步需要进行的动作或流程[3-4]。
基于上述实时性测发控任务,采用现有非实时性的w框架进行测发控软件开发时,会产生以下现象:
1)对于频率较高的周期性任务,检查任务开始执行的间隔时间,发现间隔无规律变化,个别间隔时间倍数超出任务要求;
2)收到反馈数据后,测发控软件延迟进行处理和判别,导致自身逻辑认定反馈数据接收超时;
3)多个周期性任务同时进行时,测发控任务超时失效的概率明显增加;
4)基于现有的w框架开发的测发控软件运行时较多依赖人工参与,导致故障处理不及时。
1.2 现有w框架机理分析
当前w框架的功能模块包括: UI界面模块;负责流程控制和功能调用的MainTask模块;负责描述测发控逻辑的StepWidgt模块;负责与外部设备进行指令和数据交互的InterfaceWidget模块,各模块之间的联系如图1所示。
图1 w框架架构
由于Windows为非实时性操作系统,若没有特殊的设定,其线程调度对程序设计者是透明的;且Windows操作系统本身具备的UI(如鼠标、键盘操作及屏幕刷新)等非实时性系统功能也随时可能抢占内核资源。因此,w框架架构特征导致1.1节中不满足实时性现象的主要原因如下:
1)程序中存在多个并行任务,多个任务线程会同时抢占同一计算机资源,造成阻塞,导致实时性任务执行间隔出现较大波动(多个实时性测发控任务同时并行存在时,这种情况更明显);
2)软件接口的数据接收InterfaceWidget 模块和测发控系统的数据处理模块间交互方式为异步协作模式,存在一定的依赖关系,如图2(a)所示。当收到外系统的数据后,通过消息传递进行回调,接收到的数据先传给MainTask,再由MainTask调用相应的数据处理模块。该工作方式时间开销较大,导致实时性任务自身定时器判定数据接收超时;
3)w框架中具有的大量测试流程选择和异常处理分支,需要呈现在界面上等待人工决策。
2.1 异步协作机制简化
针对第1节所述,InterfaceWidget模块和StepWidgt模块进行异步通信带来额外时间开销,造成因实时性任务实际完成时间长于预期而不满足实时性要求的问题,可通过精简数据传递的参与者来避免消息传递和异步通信,简化前后软件框架如图 2所示。简化后的框架要求StepWidgt模块在需要处理测试数据时知晓与它协作的特定的InterfaceWidget模块,并设计专用内部接口协议,可将该软件内部接口定义为一片公共内存区域,使数据处理功能与数据接收功能紧耦合。
由图2可知,简化后的w框架中,MainTask不再参与消息传递,而是直接通过数据处理线程和接口线程协作实现数据交互。同时,数据处理线程在等待测试数据时,无需再创建一个由信号量终止的超时计时器,而是在每次尝试读取测试数据失败后由自身的时标判断是否超时,未超时则再次尝试读取数据,循环往复直至读取数据成功或判断已超时。
图2 基于简化异步协作和通信机制的w框架
2.2 并行实时性任务串行化
第1节中并行任务抢占资源会导致实时性任务的执行间隔时间波动,造成超时失效的问题,如图3并行化部分所示。目前的w框架中添加新任务线程时,直接调用AfxBeginThread系统函数创建线程,仅对多个并行线程访问的公共数据区进行保护,而不同线程间的调度工作则交付Windows系统自行处理。
针对该问题,首先可在程序初始化时,调用AfxBeginThread创建一个用于处理实时性测试任务的专用线程。该线程将所有并行且相互独立的实时性任务串行排列,在测发控程序生命周期中无限循环,循环周期为所有实时性任务理论周期的最小公约数。同时在各实时性任务前加入适当的约束条件,使各项实时性任务在合适的时机按照自身的周期运行。并行实时性任务串行化如图 3中串行化部分所示。
其次,为减少或消除第1节中实时性任务资源被UI等非实时性任务抢占的情况,可为实时性线程指定单独的内核资源(目前运行测发控软件的计算机至少具备2个内核,故内核资源较为充足),且在每个周期的空闲时间内,通过不断计算当前周期经过的时间来避免实时性线程主动放弃内核资源,从而保证下一次循环周期可按时开始。若实时性线程单独占领1个内核资源时,则还需满足下述条件:
其中,ti为单个实时性任务花费的时间,Ti为单个实时性任务的周期,T0为所有实时性任务周期的最小公约数。
再次,设置实时性线程相对优先级和优先级微调等级为最高,即REALTIME_PRIORITY_CLASS和THREAD_PRIORITY_TIME_CRITICAL,从而实现其他非实时性任务线程与实时性任务线程的内核资源合理分配。
图3 多测试任务串行化规划原理释义
最后,在StepWidgt模块中加入超时容错机制以防止任务超时失效。即当软件测试流程的某一步异常终止时,软件可根据自身错误状态来判断,若当前的异常是由超时导致,则自动退回至该测试步骤的开始阶段重新执行。同时为避免由于系统故障而造成死循环的情况,当连续出现3次超时导致的异常后,软件报错,转由人工进行错误处理。该措施能够减少人工参与程度,增强软件的应激反应能力。
首先验证改进后w框架中实时性任务间隔时间是否满足要求。仿真环境为:测发控软件同时产生2个实时性任务线程Task_A和Task_B,周期分别为50ms和100ms,2个实时性线程各自并行运行1000和500个周期(理论用时50s)。此外,程序整个生命周期中伴随UI任务等非实时性线程。在程序50ms周期的实时性任务TaskA进入处获得系统时间,并打印2次循环的实际间隔时间。基于原w框架和改进后的w框架的测发控软件的实际周期循环间隔时间的仿真结果分别如图4(a)和4(b)所示。
图4 设置线程优先级前后效果对比图
由图4可知,基于原w框架的测发控软件运行过程中,实时性线程实际的循环间隔时间经常出现较大的时间波动,最大可至287ms;而基于改进后w框架的测发控软件的实时性线程周期循环的间隔时间稳定在50ms±10ms,该结果表明:
1)w框架的改进方法解决了多个任务并行抢占公共资源的问题;
2)改进后的w框架实时性任务资源不再被其它非实时性任务抢占;
3)化简后的数据处理功能耗费的时间满足实时性要求。
统计基于改进前后w框架的测发控软件对传递对准、上传文件等实时性任务的失效概率,以每10次为单位,共5遍,统计结果见表 1。在试验中,基于原w框架的测发控软件出现超时失效较频繁且无规律,由于超时失效而报错的情况随机出现2~8次。而基于改进后w框架的测发控软件在试验中不再出现因超时失效而报错的情况。
表1 测发控软件超时报错次数统计
系统地分析了现w框架不满足实时性需求导致任务失效的特征和机理,针对数据处理响应时间较长的问题提出异步协作机制简化方法。针对并行任务抢占内核资源的问题提出并行实时性任务串行化方案。最后仿真对比分析了基于改进前后框架的测发控软件实时性线程的周期循环间隔时间和超时失效概率。结果表明,改进后的w框架实时性线程周期循环间隔时间稳定性由247ms改进至20ms,平均超时失效概率由0.6改进至无失效。
[1] 张学英,易航,汪洋,韩亮.运载火箭测发控系统通用化设计[J].导弹与航天运载技术,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].武汉:华中科技大学出版社,2001.
[3] 李必信.面向对象软件耦合的度量和验证[J].东南大学学报,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] 徐峰.抽象工厂设计模式在数据访问中的应用[J].电脑知识与技术,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平台的测控系统的实时性优化方法[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的弱实时多任务的实现[D].武汉:武汉科技大学,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