应用有限状态机的实时操作系统平台流程控制软件实现技术
2017-04-28李向阳刘显勤张向文
李向阳,刘显勤,张向文
(北京航天发射技术研究所,北京,100076)
应用有限状态机的实时操作系统平台流程控制软件实现技术
李向阳,刘显勤,张向文
(北京航天发射技术研究所,北京,100076)
在分析嵌入式实时操作系统(Real-Time Operating System,RTOS)平台与嵌入式无操作系统平台流程控制软件架构不统一、无法实现代码重用的基础上,提出一种应用有限状态机的实时操作系统流程控制软件架构,解决了架构不统一导致代码无法重用的问题,并经过实际应用验证,证明架构可行。
实时操作系统;有限状态机;软件架构;代码重用
0 引 言
流程控制软件是武器发射平台的重要组成部分,用于实现武器发射平台的展开、撤收等流程动作的控制;同时通过串口、CAN总线、以太网等通信方式实现与其他系统的通信;通过串口、CAN总线、以太网等接口实现参数的配置查询等功能。
流程控制软件要求具有实时性、确定性。因此,运行的平台一般采用嵌入式无操作系统平台或嵌入式实时操作系统平台,比如 VxWorks。为了实现多个任务并行工作,嵌入式无操作系统平台的流程控制软件一般采用有限状态机的架构方式实现,而实时操作系统平台具有特有的多任务并行工作的优势,一般通过采用多线程的架构方式实现。
随着武器型号的发展,型号软件的研制周期越来越短,而流程控制软件需要充分的测试验证才能确保软件的可靠性。因此,对软件的通用化、代码的重用率要求越来越高。目前,现有型号采用嵌入无操作系统平台实现的流程控制软件数量多,已经实现架构统一,并形成了一定数量的重用代码,使得采用嵌入式无操作系统平台的流程控制软件在开发效率、可靠性、后期维护性等方面得到了较大提高,同时也大大减少了软件调试和试验的时间,降低了研制成本。而采用嵌入式实时操作系统平台实现的流程控制软件数量少,可重用代码相应也少。
采用有限状态机架构方式实现的流程控制模块与采用多线程架构方式实现的流程控制模块一般无法实现通用,这给软件重用带来困难,增加了流程控制软件研制投入,降低了流程控制软件的可靠性。同时,流程控制软件中需要流程急停及流程急停继续、流程急停退出操作,采用有限状态机的架构方式实现时已经将各个工作任务进行了一定粒度的划分,只要控制状态跳转即可;而采用多线程的架构方式实现流程急停操作时需要采用线程挂起的方式,流程急停继续操作需要采用线程恢复的方式,流程急停退出操作需要采用线程重启的方式。这种在软件正常工作中对线程挂起、恢复及重启操作属于非常规的使用方式,有可能对软件系统造成不可预知的影响。
本文在对有限状态机架构方式及多线程架构方式的流程控制软件分析的基础上,提出了一种有限状态机和实时操作系统相结合的流程控制软件实现技术。
1 有限状态机架构方式的流程控制软件分析
嵌入式无操作系统平台的有限状态机方式的流程控制软件采用主循环和一到多个中断组成的前后台系统,主循环和中断之间通过共享资源实现通信。嵌入式无操作系统平台应用层结构示意如图1所示。
中断用于实现硬件处理、定时处理等工作,其他流程控制模块(或配置查询功能模块、故障处理功能模块)、通信处理功能模块、数据处理功能模块、硬件处理功能模块、网关处理功能模块的并行处理工作采用有限状态机的方式实现,由主循环负责调度。
采用有限状态机架构方式实现的流程控制软件是将各功能模块的功能进行一定粒度的划分,即划分出来的工作片段占用毫秒级及以下(不超过1 ms)的处理时间,多个工作片段共同完成该功能,并且每个工作片段完成后能够回到主循环,不影响其他功能模块工作的实时性。有限状态机以“事件驱动”方式工作[1,2],在确定转移条件发生时,做出相应动作,变更工作状态。以流程控制为例的状态转移如图2所示。流程控制共分为8个状态。软件上电后首先进入初始状态,接收到启动流程指令后转入流程进行处理状态,如果流程正常执行结束则转入流程正常结束状态;如果流程中产生故障则转入流程急停处理状态,在流程急停处理完成后进入流程暂停状态,在流程暂停状态接收到急停退出指令则转入流程退出处理状态,处理完成进入流程非正常结束状态;在流程暂停状态接收到忽略故障指令则转入流程继续处理状态,处理完成进入流程进行处理状态,流程结束转入流程正常结束状态;在流程正常结束状态或流出非正常结束状态接收到启动流程指令都可继续进行流程控制。
主循环的调度方式如图 3所示。主循环负责循环 调用所有外部模块和软件自身的功能模块。
采用有限状态机的方式实现的流程控制软件通过有限状态机来代替操作系统对多个并行工作进行调度,能够满足流程控制软件实时性和确定性的要求。
2 多线程架构方式的流程控制软件分析
嵌入式实时操作系统平台应用层软件采用多线程的架构方式实现,线程间采用消息队列、信号量、共享资源等实现通信[3]。嵌入式实时操作系统平台应用层结构示意如图4所示。
流程控制功能模块、配置查询功能模块、故障处理功能模块、通信处理功能模块、数据处理功能模块、硬件处理功能模块、网关处理功能模块等每个模块采用一个或多个线程实现。以某流程控制软件为例,其通过流程处理主线程、流程处理从线程、硬急停线程、急停处理线程、故障处理线程、配置查询线程、CAN数据处理线程、CAN数据发送线程、以太网接收线程、以太网发送线程[4~8]共同实现,流程处理软件启动及线程工作方式如图5所示。
线程之间通过信号量、消息队列及共享资源实现信息交换。其中流程处理主线程实现流程控制的主任务,流程处理从线程实现与流程控制主任务并行的任务,如果有多于2个并行的流程控制任务还要增加更多的流程处理线程。当硬急停线程采集到急停命令后挂起流程处理主线程、从线程,并执行相应的急停处理工作。当急停处理线程通过CAN总线数据处理线程接收到流程急停转移指令后恢复流程处理主、从线程,接收到流程急停退出指令后重启流程处理主、从线程。嵌入式实时操作系统平台流程控制软件实现如图6所示。
采用上述架构实现的流程控制软件,一个线程负责连续完成一个工作,不完成一个固定工作相关函数不退出。因此,在嵌入式无操作系统平台上实现的流程控制软件无法完全应用在多线程架构下的流程控制软件;同样,采用这种方式实现的流程控制软件也无法应用在嵌入式无操作系统平台上。如果能将在嵌入式无操作系统平台上采用的有限状态机架构方式实现的流程控制软件的方法也应用在实时操作系统平台上,则能解决软件重用的问题,并能够避免采用线程挂起、线程恢复及线程重启等操作,确保软件运行的可靠性。
3 应用有限状态机的实时操作系统平台流程控制软件实现及应用验证
3.1 控制软件实现
将原有的嵌入式实时操作系统平台流程控制软件直接与外设交互的工作采用单独的线程实现,其他流程处理主线程、流程处理从线程、急停处理线程、故障处理线程、配置查询线程合并为一个工作处理线程,如图7、图8所示。工作处理线程采用有限状态机的方式工作,按嵌入式无操作系统平台方式实现流程控制、配置查询、故障处理、数据处理等工作。工作处理线程工作方式与嵌入式无操作系统平台的工作方式相同,如图8所示。
3.2 控制软件验证
某型号的流程控制软件需要运行在龙芯+VxWorks操作系统平台(嵌入式实时操作系统平台),其实现的流程控制、配置查询等功能与另外一个型号运行在XC164处理器平台(嵌入式无操作系统平台)的流程控制软件基本一致。
因此,该软件研制时通过采用有限状态机的嵌入式实时操作系统平台架构方式,将另外一个型号的嵌入式无操作系统平台流程控制软件移植到嵌入式实时操作系统平台,其研制周期由原来的3~4个月缩短为1.5个月。代码重用情况如表1所示。除网关处理功能模块原有的软件不涉及,硬件处理功能模块由于运行平台不同而导致与硬件处理部分差异较大外,其他功能模块重用率平均达到89.2%。
表1 代码重用情况统计
采用有限状态机的嵌入式实时操作系统平台架构方式加重用嵌入式无操作系统平台流程控制软件实现的流程控制软件,经过了各项试验考核,软件运行可靠。
4 结 论
本文提出的应用有限状态机的实时操作系统平台流程控制软件架构通过应用具体型号流程控制软件研制,证明此种架构的可行性。采用此种架构实现的流程控制软件提高了软件的可重用程度及开发效率,降低了研制成本,提高了软件的可验证程度。同时,采用此种架构实现的流程控制软件规避了线程挂起、线程恢复及线程重启等对操作系统线程的非常规操作,进一步提高了软件的可靠性。
[1] 单茂华. 基于有限状态机的绝缘在线监测装置软件模型与实现[J]. 测控技术, 2007, 26(9): 79-81.
[2] 魏丙楠. 有限状态机在嵌入式软件中的应用[J]. 计算机与信息技术, 2005(10): 59-60.
[3] 王金刚. VxWorks程序员指南[M]. 北京: 清华大学出版社, 2003.
[4] 孙健. VxWorks下几种任务设计模型的分析与实现[J]. 数字技术与应用2015(1): 2-3.
[5] 李勇华. 嵌入式操作系统 VxWorks的实时性能测试分析[J]. 电子技术与软件工程, 2014(2): 1-2.
[6] 饶冬. 基于 Linux的航天地面站测控软件架构设计[J]. 遥测遥控, 2015(4): 31-36.
[7] 吴慧婷. 一种高可靠性嵌入式软件架构设计[J]. 软件导刊, 2015(10): 1-2.
[8] 刘玉宝. 基于嵌入式软件架构的可靠性分析方法. 科技资讯, 2014 (8):1-2.
Software Realization of Flow-control Software on RTOS Base on FSM
Li Xiang-yang,Liu Xian-qin,Zhang Xiang-wen
(Beijing Institue of Space Lauch Technology, Beijing, 100076)
Software code can not reuse because difference of software architecture between embendded RTOS and embendded without OS. This article presents a software architecture of RTOS base on Finite State Machine(FSM). This method resolves problem of code reuse, practical application proves this architecture.
Real-time operating system; Finite state machine; Software architecture; Code reuse
TP311.1
A
1004-7182(2017)02-0080-07
10.7654/j.issn.1004-7182.20170218
2016-07-31;
2016-11-03
李向阳(1977-),男,高级工程师,主要研究方向为电液系统控制