当前位置:首页 > 芯闻号 > 充电吧
[导读]Atitit  fsm有限状态机概念与最佳实践 目录1. 概念组成与原理成分 11.1. 1、状态机的要素 4个要素,即现态、条件、动作、次态 21.2. 状态表 22. 性状 22.1. 一般一个c

Atitit  fsm有限状态机概念与最佳实践

 

目录

1. 概念组成与原理成分 1

1.1. 1、状态机的要素 4个要素,即现态、条件、动作、次态 2

1.2. 状态表 2

2. 性状 2

2.1. 一般一个class即可 2

2.2. 而言有fsm模式就复杂些了 2

3. 适用场景 主治 适应症 2

3.1. 所有场景(较简单)。 2

4. Bp 最佳实践 用法 2

5. 缺点 不良反应 3

5.1. 有限的应用领域(由 于不可确定性); 3

5.2. 对于大量的 I/O 服务的应用,不容易实现; 3

5.3. 大的程序不便于调试 3

5.4. Fsm是专用自动机,不是通用自动机 3

5.5. 2、 因为其状态有限,当所要描述的系统的状态太多时,可能确定的有限状态机无能为力; 3

5.6. 有限状态机的可扩展性差(或者对比计算机而言是无可编程性) 3

5.7. 3、 有一些任务是有限状态机无法完成的 3

6. 禁忌 不适应场合 4

7. 注意事项 4

8. 相互作用与其他类库模式 5

9. 过量与滥用后果 5

10. 原理 5

11. 理解曲线 5

11.1. 学习曲线最简单的,比起pda,turing   5

12. 储藏 5

13. 包装与api接口 5

14. 执行标准 5

15. 生产组织与个人  attilax 5

16. Ref 5

 

1. 概念组成与原理成分1.1. 1、状态机的要素 4个要素,即现态、条件、动作、次态

状态机可归纳为4个要素,即现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。详解如下:

①现态:是指当前所处的状态。

②条件:又称为“事件”。当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。

③动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。

④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。

 

1.2. 状态表

我们可以用状态表了表示整个过程,如下图所示。

2. 性状2.1. 一般一个class即可2.2. 而言有fsm模式就复杂些了3. 适用场景 主治 适应症3.1. 所有场景(较简单)。

复杂场景使用pda和turing机

4. Bp 最佳实践 用法

 

5、处理事件输入,实现状态跳转逻辑。 双case

这里有两种写法,一种是在状态中判断事件:一种是事件中判断状态:

 

本人观点:一般业务场景来说,状态的数量是确定的切数目较少,不同状态下需要处理的事件也不一样。而触发的事件数量则比较多,采用上面第二种方式在事件中判断状态也有利于把里面一层的switch/case剥离出来当成单独的函数,做一些代码模块结构的优化,故推荐使用第二种方式,事件中判断状态。

5. 缺点 不良反应5.1. 有限的应用领域(由 于不可确定性);5.2. 对于大量的 I/O 服务的应用,不容易实现;5.3. 大的程序不便于调试5.4. Fsm是专用自动机,不是通用自动机

有限状态机的弱点

1、 每一种有限状态机均功能唯一,即设计好之后无法完成其他原理不同的工作;

5.5. 2、 因为其状态有限,当所要描述的系统的状态太多时,可能确定的有限状态机无能为力;5.6. 有限状态机的可扩展性差(或者对比计算机而言是无可编程性)5.7. 3、 有一些任务是有限状态机无法完成的

,比如它可以判断输入的0、1数列中0或1的个数是否为奇数或偶数,但是无法判断0是否比1多或者相反。

前两个问题表示有限状态机的可扩展性差(或者对比计算机而言是无可编程性),而后者是因为有限状态机状态有限而且不能记下自己需要记录的东西(或者对比图灵机理论是不能写)。

于是我们发现有限状态机不但状态有限,功能也有限(根据计算理论,这是因为它只能接受正则语言,而正则语言是最低级的语言,所以能够解决的问题是有限的)。

事实上,最初的计算“机”(其实更应该说是计算器)都是功能单一的,虽然人们不断地试图在一台机器上集成更多的功能,但是相对于下面要讲到通用计算理论,这些行为还是“盲目”的。

6. 禁忌 不适应场合

 

7. 注意事项



这里需要注意的两个问题:

1、避免把某个“程序动作”当作是一种“状态”来处理。那么如何区分“动作”和“状态”?“动作”是不稳定的,即使没有条件的触发,“动作”一旦执行完毕就结束了;而“状态”是相对稳定的,如果没有外部条件的触发,一个状态会一直持续下去。

2、状态划分时漏掉一些状态,导致跳转逻辑不完整。

所以维护上述一张状态表就非常必要,而且有意义了。从表中可以直观看出那些状态直接存在跳转路径,那些状态直接不存在。如果不存在,就把对应的单元格置灰。 每次写代码之前先把表格填写好,并且对置灰的部分重点review,看看是否有“漏态”,然后才是写代码。QA拿到这张表格之后,写测试用例也是手到擒来。

8. 相互作用与其他类库模式9. 过量与滥用后果10. 原理11. 理解曲线11.1. 学习曲线最简单的,比起pda,turing

12. 储藏 13. 包装与api接口14. 执行标准15. 生产组织与个人  attilax

 

16. Ref

Atiitt fsm有限状态机优缺点

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

星标「嵌入式大杂烩」,一起进步!来源:https://gitee.com/simpost/EFSM/tree/master/一、介绍EFSM(eventfinitestatemachine,事件驱动型有限状态机),是一个...

关键字: 有限状态机 事件驱动

摘要:随着物联网技术的发展,硬件间的相互通信速度要求越来越快。文中给出了采用VerilogHDL语言以有限状态机的形式,在FPGA中实现对带寄存器寻址的SPI接口控制的方法;同时介绍了通过SPI接口的结构和工作原理,提出...

关键字: 物联网 VerilogHDL FPGA 有限状态机 SPI

摘要:针对传统的条形码识别管理系统数据实时性差,自动化程度低,以及单一的RFID管理系统因为与服务器的有线通信而受到的诸多限制缺点,提出了一种将搜集电子设备健康信息的RFID射频识别系统整合到ZigBee无线网络中的无线...

关键字: 关键词 Zigbee CC2430 有限状态机 混合组网

关注、星标公众号,直达精彩内容来源:https://www.cnblogs.com/skyfsm/p/7071386.html作者:Madcola有限状态机(finitestatemachine)简称FSM,表示有限个状...

关键字: 有限状态机 编程

关注、星标公众号,直达精彩内容来源:https://www.cnblogs.com/skyfsm/p/7071386.html作者:Madcola有限状态机(finitestatemachine)简称FSM,表示有限个状...

关键字: 有限状态机 编程

基于有限状态机在LIN总线开发中的应用      引言   随着汽车智能化程度的提高和迅速升级换代的需要,汽车电子网络正在由集中式控制向分布式控制发展。L

关键字: lin总 有限状态机

有限自动机(Finite Automata Machine)是计算机科学的重要基石,它在软件开发领域内通常被称作有限状态机(Finite State Machine),是一种应用非常广泛的软件设计模式(Design Pa...

关键字: 有限状态机

笔者能力有限,如果文中出现错误的地方,欢迎大家给我指出来,我将不胜感激,谢谢~同时如果各位朋友对于状态机还有不同的想法,笔者也很希望能够互相交流,微信二维码在公众号底部获取。 状态机的概念 有限状态机又称有限状态自动机,...

关键字: 有限状态机 面向对象

在单片机编程中,如果在不使用操作系统的情况下同时执行多个任务,可能会遇到下面这些情况:一个任务的执行时间过长,导致其他任务无法及时执行在一些任务中大量使用 delay() 等函数进行软件延时,这些延时函数占用过

关键字: Arduino 单片机 编程 有限状态机

对于面向控制的系统,可以采用有限状态机(FSM)定义需求和设计,这是一种得到广泛认可的抽象表示方法。当然,光靠FSM并不能对复杂的实际工业系统进行建模。我们还需要:1. 能将需求模块化并区分需求等级;2. 能合并各组成部...

关键字: 嵌入式开发 嵌入式系统 有限状态机 模型校验
关闭
关闭