CN113986814B - 一种基于微处理器的状态机通用表示及执行方法 - Google Patents
一种基于微处理器的状态机通用表示及执行方法 Download PDFInfo
- Publication number
- CN113986814B CN113986814B CN202111204639.8A CN202111204639A CN113986814B CN 113986814 B CN113986814 B CN 113986814B CN 202111204639 A CN202111204639 A CN 202111204639A CN 113986814 B CN113986814 B CN 113986814B
- Authority
- CN
- China
- Prior art keywords
- state
- state machine
- microprocessor
- input
- output
- 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
- 238000000034 method Methods 0.000 title claims abstract description 21
- 239000011159 matrix material Substances 0.000 claims abstract description 48
- 238000012546 transfer Methods 0.000 claims abstract description 4
- 230000007704 transition Effects 0.000 claims description 24
- 238000004891 communication Methods 0.000 claims description 4
- 230000000630 rising effect Effects 0.000 claims description 3
- 230000009471 action Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 238000013508 migration Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 230000009191 jumping Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7814—Specially adapted for real time processing, e.g. comprising hardware timers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于微处理器的状态机通用表示及执行方法,包括如下步骤:(1)构建状态机的各个状态;(2)指定状态机的初始状态和结束状态;(3)构建状态机的输入矩阵;(4)构建状态机的输出矩阵;5)设置微处理器的定时器为连续触发模式,在定时器中断函数中根据输入矩阵和输出矩阵,执行输入事件的检测、状态的转移和状态输出等步骤。本发明将状态机概括为输入矩阵和输出矩阵,利用微处理器定时精准的特性,以高精度的时间分辨率执行了状态的转移,可应用于对实时性要求较高的逻辑流程控制中。
Description
技术领域
本发明涉及有限状态机技术领域,尤其是涉及一种基于微处理器的状态机通用表示及执行方法。
背景技术
状态机是有限状态机(英语:finite-state machine,缩写:FSM)的简称,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。状态机是一个对真实世界的抽象,而且是逻辑严谨的数学抽象,广泛应用行为建模、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究等需要逻辑流程控制的领域。
如公开号为CN112540809A的中国专利文献公开了一种基于状态机的事件状态控制方法,包括:接收客户端针对目标对象的事件处理请求;解析事件处理请求,获取目标对象的当前状态和目标状态;根据目标对象的当前状态和目标状态,获取目标事件动作端标签;从事件动作端数据库中获取目标事件动作端标签对应的目标事件动作端;将事件处理请求发送给目标事件动作端,以使目标事件动作端处理事件处理请求对应的状态管理任务;接收并向客户端转发目标事件动作端返回的处理结果。
公开号为CN102467414A的中国专利文献公开了一种状态机控制方法包括:A.将状态机的当前活跃状态更新为所述状态机的初态;B.获得输入所述状态机的基础事件,将所述基础事件与当前活跃状态的各个迁移条件分别进行匹配;C.根据匹配成功的迁移条件,对所述状态机执行状态迁移,并根据迁移结果对当前活跃状态进行更新;D.判断当前活跃状态是否为所述状态机的终态,如果是,则结束所述状态机的运行,否则返回步骤B。
通常,状态机的实现需要针对不同的应用分别编程,当状态很多的时候,维护起来非常麻烦,容易出错,且不容易定位错误。另外,有限状态机中需要解耦状态和具体事件动作,在一般编程中很难将二者隔离。其次,状态机的执行一般运行在通用计算机上,由于通用计算机的多任务特性,其有效性和实时性不能保证。在一些实时性要求较高的场合,需要毫秒甚至微秒级别的状态转移,这在通用计算机上很难保证。
因此,需要一套通用的状态机表示方法,及其相应的实时执行方法,以满足不同需求的实时流程控制。
发明内容
本发明提供了一种基于微处理器的状态机通用表示及执行方法,可以解决目前状态机编程繁复、执行不够实时的问题。
一种基于微处理器的状态机通用表示及执行方法,包括以下步骤:
(1)构建状态机的各个状态:每个状态包含状态名称、状态持续时间、本状态到其他状态的转移条件以及该状态的输出;
(2)指定状态机的初始状态和结束状态,并将状态机初始化为初始状态;
(3)构建状态机的输入矩阵:输入矩阵为M行N列,M为所有状态的数量,N为所有可能的输入事件的数量,输入矩阵的元素为该状态下如果有该输入事件发生时应该转移的状态;
(4)构建状态机的输出矩阵:输出矩阵为M行K列,M为所有状态的数量,K为所有可能的输出的数量,输出矩阵的元素为该状态下该输出的值;
(5)设置微处理器的定时器为连续触发模式,在定时器中断函数中执行如下步骤:
检查所有可能的输入事件;
对于已经发生的事件,逐个遍历,并根据输入矩阵对应坐标的元素,确定是否转移到新的状态;
如果转移到新的状态,根据输出矩阵中对应的元素,设置新状态下的输出;
如果转移到第M+1个状态时,结束定时器;
记录所有输入事件、所有遍历过的状态及相应的发生时间。
本发明将状态机概括为输入矩阵和输出矩阵,利用微处理器定时精准的特性,以高精度的时间分辨率执行了状态的转移,可应用于对实时性要求较高的逻辑流程控制中。
进一步地,步骤(1)中,所述本状态到其他状态的转移条件包含成对的输入事件和该输入事件下的所要转移的状态。
步骤(2)中,所述初始状态的数量为1。所述结束状态的数量为1个或多个;其标志为:在某个输入事件下其状态会转移到第M+1个状态。
步骤(3)中,所述所有可能的输入事件包含数字输入上升沿、数字输入下降沿、模拟输入过阈值、串口及其他通讯接口输入、状态持续时间到时、全局定时器到时和全局计数器过阈值等输入事件。
所述输入矩阵的元素取值范围为(1~M+1),其中,M+1表示状态机结束。
步骤(4)中,所述所有可能的输出包含数字输出、脉宽调制输出、频率调制输出、串口及其他通讯接口输出、全局定时器开始、全局定时器结束和全局计数器重置等输出。
步骤(4)中,所述输出矩阵的元素为0时表示没有该输出,其他值时表示为该输出值的大小。
步骤(5)中,所述微处理器的定时器所定时长为毫秒或亚毫秒级。
与现有技术相比,本发明具有以下有益效果:
1、本发明仅用两个通用矩阵来概括表示状态机;
2、本发明从硬件上保证了状态机执行的实时性;
3、本发明状态机的表示和执行方法可以方便的部署在同一个微处理器上,节省成本。
附图说明
图1为本发明状态机中单个状态的组成要素;
图2为本发明实施例中状态机的输入矩阵和输出矩阵的示例;
图3为本发明微处理器中断函数的执行流程图。
具体实施方式
下面结合附图和实施例对本发明做进一步详细描述,需要指出的是,以下所述实施例旨在便于对本发明的理解,而对其不起任何限定作用。
如图1所示,状态机中单个状态的组成要素主要包括状态名称、状态持续时间、状态转移条件和状态输出。
状态名称为全局唯一的字符串名字;持续时间为该状态在没有任何输入的情况下自然转移到其他状态的时间,当持续时间设置为0时,该状态将一直持续下去直到任何因输入事件导致的状态转移;状态转移条件为成对的输入事件和该输入事件下所要转移的状态,可以有多个;状态的输出为第一次进入该状态时执行的输出,如在某个数字口输出高电平。状态机中的状态总数是有限的,在任一时刻,只处于一种状态之中,在某种条件下,会从一种状态转移到另一种状态。
如图2所示,状态机被抽象概括为两个矩阵,以方便在微处理器上实现。其中输入矩阵表示状态转移的关系,输出矩阵表示各个状态的输出变量。输入矩阵为M行N列,M为所有状态的数量,N为所有可能的输入事件的数量,输入矩阵的元素为该状态下如果有该输入事件发生时应该转移的状态(1~M)以及状态M+1。状态M+1表示状态机已经完成所有状态的转移。输出矩阵为M行K列,M为所有状态的数量,K为所有可能输出的数量,输出矩阵的元素为该状态下该输出的值。该值为0时,表示该状态下没有该输出,为其他值时为输出值的大小,如为1是表示输出高电平,为128时输出50%占空比的方波等。
本发明的一个应用实例采用基于Atmel SAM3X8E的微处理器。它是一款基于32位ARM核心的处理器,片上资源丰富,拥有512KB的Flash存储器,以及96KB的SRAM。有54个数字IO口(其中12个可用于PWM输出),12个模拟输入口,4路UART硬件串口,一个USB OTG接口,两路DAC(模数转换),两路TWI,和一个SPI接口。SAM3X8E同时拥有9个定时器,采用的时钟晶振频率为84MHz,完全能够满足本发明精准定时的需求。具体实施步骤如下:
首先,构建状态机的各个状态。构建一个状态的结构体,该结构体包含状态的名称,状态的持续时间,状态转移的数量,状态转移的结构体,输出的数量,以及输出的结构体。其中状态转移的结构体包含输入事件的名称和目标状态的名称,输出的结构体包含输出的类型和输出的值。本应用实例中,输入事件总数量为25个,包括8路数字输入口的上升沿、下降沿、4个软事件、1个状态持续时间到时、2个全局定时器到时、以及2个全局计数器过阈值;输出类型的总数量为21个,包括8路数字输出口、4路脉宽调制、4路频率脉宽调制、2个串口输出、1个全局定时器触发、1个全局定时器取消、以及1个全局计数器重置。状态机中的每个状态都用该结构体表示。
其次,指定状态机的初始状态和结束状态,并将状态机初始化为初始状态。加入到状态矩阵中的第一个状态默认为初始状态,有且只有一个;结束状态可以有多个,其标记为在某个输入事件中该状态会转移到第M+1个状态。
再次,构建状态机的输入、输出矩阵:构建一个状态矩阵的结构体,包含所有状态的数量,状态名字数组,状态持续时间数组,输入矩阵数组,输出矩阵数组。其中,状态名字数组,状态持续时间数组为M个元素的一维数组,输入矩阵为M行N列,输出矩阵为M行K列,其中M为所有状态的数量,N为所有可能的输入事件的数量,K为所有输出的数量。构建一个函数将各个状态结构体中的信息逐个加入到状态矩阵的结构体中。
最后,如图3所示,设置微处理器的定时器为连续触发模式,定时时长为100微秒(0.1毫秒),在定时器中断函数中执行以下步骤:首先检查所有可能的输入事件,如果本次中断中没有发生任何输入事件,则直接跳出中断函数,等待下一次中断;如果本次中断中有输入事件发生,则逐个遍历所发生的输入事件,对照状态矩阵结构体中的输入矩阵,检查是否发生状态转移:如果所有输入事件都没有发生状态转移,即输入矩阵中对应元素仍然为该状态自己,则直接跳出中断函数,等待下次中断;如果某个输入事件导致新状态的转移,则根据输出矩阵,设置新状态下的输出变量,然后跳出中断函数,等待下一次中断。如果新状态为第M+1个状态,说明已经到了状态机结束的时候,则记录状态机期间所有的输入事件、所有遍历过的状态、以及他们发生的时间,然后结束定时器,完成一次状态机的执行。
以上所述的实施例对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的具体实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于微处理器的状态机通用表示及执行方法,其特征在于,包括以下步骤:
(1)构建状态机的各个状态:每个状态包含状态名称、状态持续时间、本状态到其他状态的转移条件以及该状态的输出;
(2)指定状态机的初始状态和结束状态,并将状态机初始化为初始状态;
(3)构建状态机的输入矩阵:输入矩阵为M行N列,M为所有状态的数量,N为所有可能的输入事件的数量,输入矩阵的元素为该状态下如果有该输入事件发生时应该转移的状态;
(4)构建状态机的输出矩阵:输出矩阵为M行K列,M为所有状态的数量,K为所有可能的输出的数量,输出矩阵的元素为该状态下该输出的值;
(5)设置微处理器的定时器为连续触发模式,在定时器中断函数中执行如下步骤:
检查所有可能的输入事件;
对于已经发生的事件,逐个遍历,并根据输入矩阵对应坐标的元素,确定是否转移到新的状态;
如果转移到新的状态,根据输出矩阵中对应的元素,设置新状态下的输出;
如果转移到第M+1个状态时,结束定时器;
记录所有输入事件、所有遍历过的状态及相应的发生时间。
2.根据权利要求1所述的基于微处理器的状态机通用表示及执行方法,其特征在于,步骤(1)中,所述本状态到其他状态的转移条件包含成对的输入事件和该输入事件下的所要转移的状态。
3.根据权利要求1所述的基于微处理器的状态机通用表示及执行方法,其特征在于,步骤(2)中,所述初始状态的数量为1。
4.根据权利要求1所述的基于微处理器的状态机通用表示及执行方法,其特征在于,步骤(2)中,所述结束状态的数量为1个或多个;其标志为:在某个输入事件下其状态会转移到第M+1个状态。
5.根据权利要求1所述的基于微处理器的状态机通用表示及执行方法,其特征在于,步骤(3)中,所述所有可能的输入事件包含数字输入上升沿、数字输入下降沿、模拟输入过阈值、串口及其他通讯接口输入、状态持续时间到时、全局定时器到时和全局计数器过阈值。
6.根据权利要求1所述的基于微处理器的状态机通用表示及执行方法,其特征在于,步骤(3)中,所述输入矩阵的元素取值范围为(1~M+1),其中,M+1表示状态机结束。
7.根据权利要求1所述的基于微处理器的状态机通用表示及执行方法,其特征在于,步骤(4)中,所述所有可能的输出包含数字输出、脉宽调制输出、频率调制输出、串口及其他通讯接口输出、全局定时器开始、全局定时器结束和全局计数器重置。
8.根据权利要求1所述的基于微处理器的状态机通用表示及执行方法,其特征在于,步骤(4)中,所述输出矩阵的元素为0时表示没有该输出,其他值时表示为该输出值的大小。
9.根据权利要求1所述的基于微处理器的状态机通用表示及执行方法,其特征在于,步骤(5)中,所述微处理器的定时器所定时长为毫秒或亚毫秒级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111204639.8A CN113986814B (zh) | 2021-10-15 | 2021-10-15 | 一种基于微处理器的状态机通用表示及执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111204639.8A CN113986814B (zh) | 2021-10-15 | 2021-10-15 | 一种基于微处理器的状态机通用表示及执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113986814A CN113986814A (zh) | 2022-01-28 |
CN113986814B true CN113986814B (zh) | 2023-12-01 |
Family
ID=79738857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111204639.8A Active CN113986814B (zh) | 2021-10-15 | 2021-10-15 | 一种基于微处理器的状态机通用表示及执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986814B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006338391A (ja) * | 2005-06-02 | 2006-12-14 | Nec Electronics Corp | ステートマシンおよびステートマシンの動作方法 |
CN102122273A (zh) * | 2010-01-08 | 2011-07-13 | 洛克威尔自动控制技术股份有限公司 | 基于硬件的具有内置定时器的连接状态机 |
CN106502770A (zh) * | 2015-09-07 | 2017-03-15 | 上海畅星软件有限公司 | 一种基于有限状态机的hmi状态迁移方法 |
CN109254763A (zh) * | 2018-09-13 | 2019-01-22 | 中国核动力研究设计院 | 一种基于有限状态机的核电厂控制软件设计方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472101B2 (en) * | 2005-07-12 | 2008-12-30 | Tibco Software Inc. | Inferential state machines |
-
2021
- 2021-10-15 CN CN202111204639.8A patent/CN113986814B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006338391A (ja) * | 2005-06-02 | 2006-12-14 | Nec Electronics Corp | ステートマシンおよびステートマシンの動作方法 |
CN102122273A (zh) * | 2010-01-08 | 2011-07-13 | 洛克威尔自动控制技术股份有限公司 | 基于硬件的具有内置定时器的连接状态机 |
CN106502770A (zh) * | 2015-09-07 | 2017-03-15 | 上海畅星软件有限公司 | 一种基于有限状态机的hmi状态迁移方法 |
CN109254763A (zh) * | 2018-09-13 | 2019-01-22 | 中国核动力研究设计院 | 一种基于有限状态机的核电厂控制软件设计方法 |
Non-Patent Citations (1)
Title |
---|
嵌入式软件层次模型的研究与FSM数学模型;李俊;;中国高新技术企业(第19期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113986814A (zh) | 2022-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rostedt et al. | Internals of the RT Patch | |
Ghosal et al. | Event-driven programming with logical execution times | |
US20060268967A1 (en) | Supplying instruction to operational stations | |
CN115390809A (zh) | 一种仿真调度方法及系统 | |
CN114625108A (zh) | 一种仿真测试方法及装置 | |
CN113986814B (zh) | 一种基于微处理器的状态机通用表示及执行方法 | |
EP2278454B1 (en) | Method for correct-by-construction development of real-time-systems | |
Nicolescu et al. | Methodology for efficient design of continuous/discrete-events co-simulation tools | |
Rodriguez et al. | Formal specification for building robust real-time microkernels | |
US7630875B2 (en) | Automatic time warp for electronic system simulation | |
Madsen et al. | Modeling and analysis framework for embedded systems | |
Acquaviva et al. | Semi-automatic generation of device drivers for rapid embedded platform development | |
Gilles et al. | Applying WCET analysis at architectural level | |
Lantreibecq et al. | Model checking and co-simulation of a dynamic task dispatcher circuit using CADP | |
Seyyedi et al. | Functional test environment for time-triggered control systems in complex MPSoCs using GALI | |
CN111258782B (zh) | 任务队列的处理方法和装置 | |
Magureanu et al. | Generating OMNeT++ specifications from UML models for PSoC distributed applications | |
Derler et al. | Specification of precise timing in synchronous dataflow models | |
de Miguel et al. | Object-oriented design of real-time systems with stereotypes | |
US6397371B1 (en) | Procedure for worst-case analysis of discrete systems | |
Kluge et al. | A generic timing model for cyber-physical systems | |
Strnadel | Statistical model checking of processor systems in various interrupt scenarios | |
Petrellis et al. | Simulating hardware, software and electromechanical parts using communicating simulators | |
Mutzke et al. | Stochastic model-based analysis of timing errors for mechatronic systems with user-defined general discrete-time distributions | |
Baranov | A Forth-Simulator of Real-Time Multi-Task Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |