CN106484385B - 一种大气测量装置软件中嵌入式软件状态机的实现方法 - Google Patents
一种大气测量装置软件中嵌入式软件状态机的实现方法 Download PDFInfo
- Publication number
- CN106484385B CN106484385B CN201510552673.2A CN201510552673A CN106484385B CN 106484385 B CN106484385 B CN 106484385B CN 201510552673 A CN201510552673 A CN 201510552673A CN 106484385 B CN106484385 B CN 106484385B
- Authority
- CN
- China
- Prior art keywords
- state
- software
- state machine
- aeromerric moasurenont
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明属于软件可靠性设计技术领域,具体涉及一种嵌入式软件状态机的实现方法,提高嵌入式软件容错能力的方法。大气测量装置软件采用状态机进行流程控制和任务触发,软件在正常工作模式、半实物仿真工作模式、地面测试模式、软件传输模式程序架构相同;添加状态机动作执行函数,用来执行状态机产生过程中的中间操作;根据型号的系统属性,对于中间存在的特定状态通过空信号来迁移。本方案中的状态机根据型号任务特点,将传统状态机进行部分改进,应用到嵌入式软件研制过程中,可使程序的判断语句至少减少一半,并且编程思路清晰、编写过程简单、可修改性强,同时也满足设计要求。
Description
技术领域
本发明属于软件可靠性设计技术领域,具体涉及一种嵌入式软件状态机的实现方法,提高嵌入式软件容错能力的方法。
背景技术
随着武器系统精确打击能力越来越强,信息化程度越来越高,各专业对弹上嵌入软件也有了更高的要求。传统嵌入式软件由于与制导机交互状态繁多,代码中包含大量的if…else…和switch…case…语句,软件的可维护性、安全性较差。在该情况下,如果总体对通讯协议进行一些修改,则软件需要进行大量的改动,大大增加了软件开发人员的工作量和工作难度,也给后续涉及到的软件文档的修改和评测带来了繁琐的工作量。
状态机是一种具有指定数目的状态的概念机。该概念机在某个指定的时刻仅处于一个状态,状态的改变是由输入信号的变化而引起的.作为对输入信号的响应,系统可能转变到相同或不同的状态,而输出事件可能是任意产生的。在程序设计中引入状态机的思想,可使复杂的程序更清晰,程序修改起来更容易。采用状态机思想来进行嵌入式软件的设计则可以大大提高软件的可维护性、安全性,降低总体对通讯协议修改后给软件改动所带来的工作量,涉及到的后续软件文档的修改和评测的工作量也大为降低。
在大气测量装置软件中还没有嵌入式软件状态机的实现方法,亟需针对其进行研制满足设计要求。
发明内容
本发明要解决的技术问题是提供一种大气测量装置软件中嵌入式软件状态机的实现方法,从而减少程序的判断语句,并提高可修改性。
为了实现这一目的,本发明采取的技术方案是:
一种大气测量装置软件中嵌入式软件状态机的实现方法,大气测量装置软件采用状态机进行流程控制和任务触发,软件在正常工作模式、半实物仿真工作模式、地面测试模式、软件传输模式程序架构相同;添加状态机动作执行函数,用来执行状态机产生过程中的中间操作;根据型号的系统属性,对于中间存在的特定状态通过空信号来迁移;具体包括如下步骤:
(1)确定大气测量装置状态机方程:
驱动方程:Z=G[X,Qn]
状态方程:(Qn+1,E)=H[Z,Qn]
状态方程中各元素说明如下:
X为输入信号,该信号为外部制导计算机或测试设备输入的指令、数据,大气测量装置软件根据通讯协议对其进行验证,如果满足通讯协议要求,则将其当作输入信号;
Qn为现态;Qn+1为次态;
大气测量装置软件涉及19种状态,分别为:
1.State_PowerOn
2.State_NormalOperation
3.State_Test
4.State_Simulation
5.State_SoftTrans
6.State_ParameterTrans
7.State_FileTransStart
8.State_FileIniStart
9.State_FileIniTrans
10.State_FileDataStart
11.State_FileDataTrans
12.State_FileVerify
13.State_FileProgram
14.State_FileTransEnd
15.State_FileReadStart
16.State_FileReadTrans
17.State_FileReadTransData
18.State_FileReadTransWait
19.State_Error
程序刚上电时,设置最初状态为State_PowerOn状态,表示大气测量装置上电状态;上述19个状态根据该型号通讯协议及程序的具体实现过程来命名和设定;根据该型号任务的特点,第16种状态State_FileReadTrans可通过空信号进行迁移,达到驱动整个程序流动的目的;
Z:驱动信号,大气测量装置软件对输入信号进行分类,得到19种驱动信号,分别为:
1.Sig0100
2.Sig0200.0
3.Sig0200.1
4.Sig0200.2
5.Sig0200.3
6.Sig0200.F
7.Sig1000
8.Sig1100
9.Sig1200.12
10.Sig1200.13
11.Sig1300
12.Sig1200.23
13.Sig1200.25
14.Sig1200.24
15.Sig1200.26
16.Sig1200.11
17.SigFileReadTransData
18.SigFileEnd
19.SigNull
各驱动信号的命名及驱动信号数量根据该型号的通讯协议来设定;
其中第19个信号SigNull为空信号,它的产生对应外界输入的错误信号或者是外界的空输入,在系统设定的状态下驱动该状态发生迁移;
G:驱动信号产生函数;在大气测量装置软件中定义如下:
Uint16 SignalGeneration(Uint16 *pRecvFrame,Uint16nLen,StateMachineSignal*psig);
函数功能:软件对接收到的制导计算机指令、数据进行验证处理后生成状态机的驱动信号;
H:大气机状态生成函数;在大气测量装置软件中的定义如下:
Uint16StateGeneration(Signal,StateOld,&StateNew,&nFunc);
函数功能:根据输入的驱动信号与上一拍状态一起生成状态机本拍的状态和动作执行函数;
E:状态机动作执行函数;在大气测量装置软件中有20个动作执行函数,分别为:
1,DoDevInfoQuery
2,DoNormalOperation
3,DoSimulation
4,DoTest
5,DoSoftTrans
6,DoParameterTrans
7,DoFaultQuery
8,DoMemQuery
9,DoFileTransStart
10,DoFileIniStart
11,DoFileIniTrans
12,DoFileDataStart
13,DoFileDataTrans
14,DoFileVerify
15,DoFileProgram
16,DoFileTransEnd
17,DoFileReadStart
18,DoFileReadTrans
19,DoFileReadTransData
20,DoFileReadTransWait
上述动作执行函数在程序运行过程中对系统设定的中间过程进行置位,辅助各状态进行函数操作;
(2)确定状态机操作步骤:
(2.1)驱动信号生成
大气测量装置软件对接收到的制导计算机指令、数据进行处理后生成状态机的驱动信号;
(2.2)状态发生
驱动信号与上一拍状态信号一起生成状态机本拍的状态信号和动作执行函数;
(2.3)动作执行
动作执行函数根据动作执行标志置位相应任务触发标志;
状态机操作在大气测量装置软件主循环中5ms定时标志未置位时进行,驱动信号生成时对输入信息按通讯协议规定进行校验;状态表中所有元素均进行定义,避免未定义操作对状态机造成的影响。
进一步的,如上所述的一种大气测量装置软件中嵌入式软件状态机的实现方法,其中:状态发生操作基于二维状态转换表实现。
本发明技术方案的有益效果在于:本方案中的状态机根据型号任务特点,将传统状态机进行部分改进,应用到嵌入式软件研制过程中,可使程序的判断语句至少减少一半,并且编程思路清晰、编写过程简单、可修改性强,同时也满足设计要求。
具体实施方式
下面结合具体实施例对本发明技术方案进行详细说明。
本发明一种大气测量装置软件中嵌入式软件状态机的实现方法,大气测量装置软件采用状态机进行流程控制和任务触发,软件在正常工作模式、半实物仿真工作模式、地面测试模式、软件传输模式程序架构相同;添加状态机动作执行函数,用来执行状态机产生过程中的中间操作;根据型号的系统属性,对于中间存在的特定状态通过空信号来迁移;具体包括如下步骤:
(1)确定大气测量装置状态机方程:
驱动方程:Z=G[X,Qn]
状态方程:(Qn+1,E)=H[Z,Qn]
状态方程中各元素说明如下:
X为输入信号,该信号为外部制导计算机或测试设备输入的指令、数据,大气测量装置软件根据通讯协议对其进行验证,如果满足通讯协议要求,则将其当作输入信号;
Qn为现态;Qn+1为次态;
大气测量装置软件涉及19种状态,分别为:
1.State_PowerOn
2.State_NormalOperation
3.State_Test
4.State_Simulation
5.State_SoftTrans
6.State_ParameterTrans
7.State_FileTransStart
8.State_FileIniStart
9.State_FileIniTrans
10.State_FileDataStart
11.State_FileDataTrans
12.State_FileVerify
13.State_FileProgram
14.State_FileTransEnd
15.State_FileReadStart
16.State_FileReadTrans
17.State_FileReadTransData
18.State_FileReadTransWait
19.State_Error
程序刚上电时,设置最初状态为State_PowerOn状态,表示大气测量装置上电状态;上述19个状态根据该型号通讯协议及程序的具体实现过程来命名和设定;根据该型号任务的特点,第16种状态State_FileReadTrans可通过空信号进行迁移,达到驱动整个程序流动的目的;
Z:驱动信号,大气测量装置软件对输入信号进行分类,得到19种驱动信号,分别为:
1.Sig0100
2.Sig0200.0
3.Sig0200.1
4.Sig0200.2
5.Sig0200.3
6.Sig0200.F
7.Sig1000
8.Sig1100
9.Sig1200.12
10.Sig1200.13
11.Sig1300
12.Sig1200.23
13.Sig1200.25
14.Sig1200.24
15.Sig1200.26
16.Sig1200.11
17.SigFileReadTransData
18.SigFileEnd
19.SigNull
各驱动信号的命名及驱动信号数量根据该型号的通讯协议来设定;
其中第19个信号SigNull为空信号,它的产生对应外界输入的错误信号或者是外界的空输入,在系统设定的状态下驱动该状态发生迁移;
G:驱动信号产生函数;在大气测量装置软件中定义如下:
Uint16 SignalGeneration(Uint16 *pRecvFrame,Uint16nLen,StateMachineSignal*psig);
函数功能:软件对接收到的制导计算机指令、数据进行验证处理后生成状态机的驱动信号;
H:大气机状态生成函数;在大气测量装置软件中的定义如下:
Uint16StateGeneration(Signal,StateOld,&StateNew,&nFunc);
函数功能:根据输入的驱动信号与上一拍状态一起生成状态机本拍的状态和动作执行函数;
E:状态机动作执行函数;在大气测量装置软件中有20个动作执行函数,分别为:
1,DoDevInfoQuery
2,DoNormalOperation
3,DoSimulation
4,DoTest
5,DoSoftTrans
6,DoParameterTrans
7,DoFaultQuery
8,DoMemQuery
9,DoFileTransStart
10,DoFileIniStart
11,DoFileIniTrans
12,DoFileDataStart
13,DoFileDataTrans
14,DoFileVerify
15,DoFileProgram
16,DoFileTransEnd
17,DoFileReadStart
18,DoFileReadTrans
19,DoFileReadTransData
20,DoFileReadTransWait
上述动作执行函数在程序运行过程中对系统设定的中间过程进行置位,辅助各状态进行函数操作;
(2)确定状态机操作步骤:
(2.1)驱动信号生成
大气测量装置软件对接收到的制导计算机指令、数据进行处理后生成状态机的驱动信号;
(2.2)状态发生
驱动信号与上一拍状态信号一起生成状态机本拍的状态信号和动作执行函数;状态发生操作基于二维状态转换表实现。
(2.3)动作执行
动作执行函数根据动作执行标志置位相应任务触发标志;
状态机操作在大气测量装置软件主循环中5ms定时标志未置位时进行,驱动信号生成时对输入信息按通讯协议规定进行校验;状态表中所有元素均进行定义,避免未定义操作对状态机造成的影响。
Claims (2)
1.一种大气测量装置软件中嵌入式软件状态机的实现方法,其特征在于:
大气测量装置软件采用状态机进行流程控制和任务触发,软件在正常工作模式、半实物仿真工作模式、地面测试模式、软件传输模式程序架构相同;添加状态机动作执行函数,用来执行状态机产生过程中的中间操作;根据型号的系统属性,对于中间存在的特定状态通过空信号来迁移;具体包括如下步骤:
(1)确定大气测量装置状态机方程:
驱动方程:Z=G[X,Qn]
状态方程:(Qn+1,E)=H[Z,Qn]
状态方程中各元素说明如下:
X为输入信号,该信号为外部制导计算机或测试设备输入的指令、数据,大气测量装置软件根据通讯协议对其进行验证,如果满足通讯协议要求,则将其当作输入信号;
Qn为现态;Qn+1为次态;
大气测量装置软件涉及19种状态,分别为:
1.State_PowerOn
2.State_NormalOperation
3.State_Test
4.State_Simulation
5.State_SoftTrans
6.State_ParameterTrans
7.State_FileTransStart
8.State_FileIniStart
9.State_FileIniTrans
10.State_FileDataStart
11.State_FileDataTrans
12.State_FileVerify
13.State_FileProgram
14.State_FileTransEnd
15.State_FileReadStart
16.State_FileReadTrans
17.State_FileReadTransData
18.State_FileReadTransWait
19.State_Error
程序刚上电时,设置最初状态为State_PowerOn状态,表示大气测量装置上电状态;上述19个状态根据该型号通讯协议及程序的具体实现过程来命名和设定;根据该型号任务的特点,第16种状态State_FileReadTrans可通过空信号进行迁移,达到驱动整个程序流动的目的;
Z:驱动信号,大气测量装置软件对输入信号进行分类,得到19种驱动信号,分别为:
1.Sig0100
2.Sig0200.0
3.Sig0200.1
4.Sig0200.2
5.Sig0200.3
6.Sig0200.F
7.Sig1000
8.Sig1100
9.Sig1200.12
10.Sig1200.13
11.Sig1300
12.Sig1200.23
13.Sig1200.25
14.Sig1200.24
15.Sig1200.26
16.Sig1200.11
17.SigFileReadTransData
18.SigFileEnd
19.SigNull
各驱动信号的命名及驱动信号数量根据该型号的通讯协议来设定;
其中第19个信号SigNull为空信号,它的产生对应外界输入的错误信号或者是外界的空输入,在系统设定的状态下驱动该状态发生迁移;
G:驱动信号产生函数;在大气测量装置软件中定义如下:
Uint16 SignalGeneration(Uint16 *pRecvFrame,Uint16 nLen,StateMachineSignal*psig);
函数功能:软件对接收到的制导计算机指令、数据进行验证处理后生成状态机的驱动信号;
H:大气机状态生成函数;在大气测量装置软件中的定义如下:
Uint16StateGeneration(Signal,StateOld,&StateNew,&nFunc);
函数功能:根据输入的驱动信号与上一拍状态一起生成状态机本拍的状态和动作执行函数;
E:状态机动作执行函数;在大气测量装置软件中有20个动作执行函数,分别为:
1,DoDevInfoQuery
2,DoNormalOperation
3,DoSimulation
4,DoTest
5,DoSoftTrans
6,DoParameterTrans
7,DoFaultQuery
8,DoMemQuery
9,DoFileTransStart
10,DoFileIniStart
11,DoFileIniTrans
12,DoFileDataStart
13,DoFileDataTrans
14,DoFileVerify
15,DoFileProgram
16,DoFileTransEnd
17,DoFileReadStart
18,DoFileReadTrans
19,DoFileReadTransData
20,DoFileReadTransWait
上述动作执行函数在程序运行过程中对系统设定的中间过程进行置位,辅助各状态进行函数操作;
(2)确定状态机操作步骤:
(2.1)驱动信号生成
大气测量装置软件对接收到的制导计算机指令、数据进行处理后生成状态机的驱动信号;
(2.2)状态发生
驱动信号与上一拍状态信号一起生成状态机本拍的状态信号和动作执行函数;
(2.3)动作执行
动作执行函数根据动作执行标志置位相应任务触发标志;
状态机操作在大气测量装置软件主循环中5ms定时标志未置位时进行,驱动信号生成时对输入信息按通讯协议规定进行校验;状态表中所有元素均进行定义,避免未定义操作对状态机造成的影响。
2.如权利要求1所述的一种大气测量装置软件中嵌入式软件状态机的实现方法,其特征在于:状态发生操作基于二维状态转换表实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510552673.2A CN106484385B (zh) | 2015-09-01 | 2015-09-01 | 一种大气测量装置软件中嵌入式软件状态机的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510552673.2A CN106484385B (zh) | 2015-09-01 | 2015-09-01 | 一种大气测量装置软件中嵌入式软件状态机的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106484385A CN106484385A (zh) | 2017-03-08 |
CN106484385B true CN106484385B (zh) | 2019-09-17 |
Family
ID=58237906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510552673.2A Active CN106484385B (zh) | 2015-09-01 | 2015-09-01 | 一种大气测量装置软件中嵌入式软件状态机的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106484385B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
CN102538651A (zh) * | 2011-12-30 | 2012-07-04 | 中国航天科技集团公司第六研究院第十一研究所 | 采用有限状态机实现的位移传感器宽度测量方法 |
CN102622314A (zh) * | 2011-01-27 | 2012-08-01 | 快捷半导体(苏州)有限公司 | 使用独立状态机进行移动设备外围检测 |
JP2012156614A (ja) * | 2011-01-24 | 2012-08-16 | Panasonic Corp | データ処理装置 |
-
2015
- 2015-09-01 CN CN201510552673.2A patent/CN106484385B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
JP2012156614A (ja) * | 2011-01-24 | 2012-08-16 | Panasonic Corp | データ処理装置 |
CN102622314A (zh) * | 2011-01-27 | 2012-08-01 | 快捷半导体(苏州)有限公司 | 使用独立状态机进行移动设备外围检测 |
CN102538651A (zh) * | 2011-12-30 | 2012-07-04 | 中国航天科技集团公司第六研究院第十一研究所 | 采用有限状态机实现的位移传感器宽度测量方法 |
Non-Patent Citations (1)
Title |
---|
嵌入式软件中状态机的抽象与实现;熊振云 等;《计算机应用》;20031031;第23卷(第10期);84~86页 |
Also Published As
Publication number | Publication date |
---|---|
CN106484385A (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104460646B (zh) | 用于对虚拟控制器进行实时测试的测试装置 | |
CN102522128B (zh) | 一种核电站dcs系统组态逻辑设计的测试方法和系统 | |
CN102968311B (zh) | 机载嵌入式软件开发平台 | |
CN102279766B (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
CN106897090B (zh) | 一种嵌入式设备程序升级方法及系统 | |
CN108897676A (zh) | 基于形式化规则的飞行引导控制软件可靠性分析系统与方法 | |
CN105676808B (zh) | 一种工业控制系统逻辑断点调试功能的实现方法 | |
CN103123598A (zh) | 一种编译型软plc的在线调试实现方法 | |
SI2825961T1 (en) | Sampling conducted by the instrumentation of the time of implementation | |
CN105740139B (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
CN106648615A (zh) | 一种基于VxWorks的BSP代码开发系统 | |
CN105137800A (zh) | 一种基于sopc技术的plc协同控制装置 | |
CN109298865A (zh) | 实现游戏技能可编程化的方法及装置 | |
CN110532167A (zh) | 一种基于模型转换的状态机模型时序性质验证方法 | |
CN108959058B (zh) | 一种虚拟控制器的组态调试器实现方法 | |
CN103473426A (zh) | 基于嵌入式系统框架的星载相控阵信号处理架构设计方法 | |
EP2672388B1 (en) | Multi-processor parallel simulation method, system and scheduler | |
CN102567556A (zh) | 一种面向调试的处理器验证方法及验证设备 | |
CN106484385B (zh) | 一种大气测量装置软件中嵌入式软件状态机的实现方法 | |
CN107015846B (zh) | 一种实现处理器仿真核的仿真方法及装置 | |
Chen et al. | Test generation for embedded executables via concolic execution in a real environment | |
CN104238438A (zh) | 一种plc通用平台及其设计方法 | |
Wang et al. | Modelling and verification of program logic controllers using timed automata | |
Caloini et al. | A technique for designing robotic control systems based on Petri nets | |
CN106775597A (zh) | 一种松耦合结构的并行多核全系统模拟器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |