一关于状态机的认识

最近我正在重新认识状态机的一些内容,这个东西很重要至少目前我知道无论是在硬件和软件上面都有状态机这个东西,而在控制上现代控制理论里也有状态方程的概念,并且几乎是现代控制理论的基石,另外运动控制理论里运动群的概念其本质上也是状态机。

对于软件还有控制方面我多多少少都知道一些,可是非常可惜的是到底什么是状态机,硬件,软件及控制上侧重点都不一样,做运动控制软件理解状态机甚至比理解面向对象还要重要,为什么要这样说,做过运动控制的估计都见过PLC的梯形图程序,有多少人意识到这个横行运动控制领域几十年的东西是个状态机,呵呵又多少人能意识到,状态机曾被很多软件人员看成比较玄奥的东西,中国竟然有那么多人在天天从事着基于状态机的开发工作,呵呵又有多少人曾经想过,很多人都认为比较简单的PLC梯形图程序,为什么能完成运动控制里大部分的应用(认为梯形图程序简单的不包括我),估计意识到那是基于状态机编程的人不多。

很多人都认为状态机是理论上的东西,离我们比较远,其实我想说的是,不是那样的。我们几乎每个人天天都在用状态机,生活当中你有取舍嘛!呵呵如果你有的话,有可能你就通过状态机进行选择呢。或许我认为这句话并不过分,这个世界有可能是基于对象的,但是这个世界的运动绝对是基于状态的,我们做了这么多年的程序。世界是由模块构成的,而描述模块的变化应当是状态。状态机不但能做算法,还能做框架。我最近正在看LUA的源码,可惜我几乎就LUA一提出状态机,大家就认为和词法分析有关。其实不是这样的。

我所找到的状态机的定义是下面这个(有限状态机):

我的第一个问题:什么是状态机?

  FSM 定义:总的来说,有限状态机系统,是指在不同阶段会呈现出不同的运行状态的系统,这些状态是有限的、不重叠的。这样的系统在某一时刻一定会处于其所有状态中的一个状态,此时它接收一部分允许的输入,产生一部分可能的响应,并且迁移到一部分可能的状态。

五个要素:状态,事件,条件,动作,迁移

这个是纯软件的定义,或者我认为这个概念太笼统,控制上状态并不是离散的,所以有限状态机并不能和控制上的状态机进行统一,至于无限状态机,我还没有清楚的弄懂它的概念。

我的第二个问题:什么是状态? 上面的概念其实太笼统。

二怎么基于状态机去做程序架构

我总结了一下过去我所见过的一些程序架构,其中LUA和OPENGL的程序架构,我确信他们是基于状态机的程序架构,PLC的后台肯定也是,还有就是我所见过的我所在行业内的一些软件也是基于状态机的程序架构,另外很多协议的解析及生成原理,包括其设计也都是基于状态机的,不单单只有TCP/IP。诚然国内和国外在就状态机的认识上,国外比我们深刻的多。

有兴趣的希望大家能一起学,多多交流,目前我主要是在看LUA的源码,希望能通过它的源码获得一些启示。至于运动控制上的状态机,是我必须要搞明白的,希望感兴趣的大家能多多交流。目前就运动控制方面的状态机设计,倒是总结了一些东西但是很不成熟。

什么才是状态机?什么又是状态?相关推荐

  1. java状态机(订单状态控制)

    一.状态机 状态机是状态模式的一种应用,相当于上下文角色的一个升级版.在工作流或游戏等各种系统中有大量使用,如各种工作流引擎,它几乎是状态机的子集和实现,封装状态的变化规则.状态机可以帮助开发者简化状 ...

  2. 刚刚好,才是最理想的状态

    本文 Github/javamap 已收录,有Java程序员进阶技术知识地图以及我的系列文章,欢迎大家Star. 雷架有一个小师妹,聪明可爱又努力,把她的成长经历发出来,一定会给正在迷茫的你一些启发, ...

  3. (五十三) Android O wifi 状态机消息处理及状态切换流程分析-以WifiController为例

    前言:最近写了几篇wifi状态机相关的博客,但是状态转换方面一直是囫囵吞枣,感觉代码对的上流程就开始梳理了,没有真正关注过状态切换和消息处理流程,现在梳理一下. 1. wifi 状态机消息处理及状态切 ...

  4. 迎难而上才是人生该有的状态,中国人民大学与加拿大女王大学金融硕士给予你前行的力量

    做一件事,如果觉得难那就对了.容易达成的事,没有经过努力获取到的是没有成就感的.人生就像上坡,更高处的风景更值得期待.中国人民大学与加拿大女王大学金融硕士项目给予你前行的力量. 我们每个人的一生中,都 ...

  5. 如何画UML状态机图与状态表

    为什么要画状态机图? 状态机图,能够对一个对象在它整个生命周期中所经历的状态进行建模.相较于流程图通过活动的先后顺序来展示流程(常人的线性思维方式):状态机图从某个事物的状态变化角度来展示流程(面向对 ...

  6. EtherCAT状态机控制和状态

    主机和从站状态转化规律如下: (1).主机控制从机状态转换,将目的状态写入从站AL控制位(0x0120.0~3): (2).从机读取新状态请求后,检查自身状态:         a:如果可以转化,则将 ...

  7. 有个好心情才会有好的状态

    这段时间事情比较多,自己一个人出来跟项目,第一次跟项目,虽然不做太多技术上的工作,但是还是有点郁闷的,毕竟没有自己单位的一个人,也没人玩.呵呵,其实都已经习惯了,估计 郁闷是因为玩的事情吧.因为第一个 ...

  8. 状态机、混沌状态、机器学习和智能设备

    1.机器和状态机 机器,英文名字为machine,是指具有某种功能和结构的系统(这是我个人基于系统论和结构-功能主义的定义).机器的外部属性是具有某种功能,机器的内部属性是具有一定结构,从而帮助一定功 ...

  9. 【Modelsim仿真让状态机波形显示状态名字】

      我们再用modelsim进行状态机仿真时,状态机state显示通常是以进制数字表示,我们更喜欢的是需要用当前状态表示(例如S0.S1等),这样以文本形式表示更利于调试.   下面用一个实例来说明 ...

最新文章

  1. 在机器学习分类中如何处理训练集中不平衡问题
  2. Linux中增加软路由的两种方法,Linux中增加软路由的三种方法
  3. menisa mysql_实例详细说明linux下去除重复行命令uniq
  4. mysql数据库系统配置文件_MySQL数据库(6)----配置文件 my.cnf 的使用
  5. 我在51CTO的第一篇博文!
  6. shell脚本获取系统的前一天日期,格式为yyyymmdd
  7. 英语口语 week11 Friday
  8. java 迭代器的原理_java里Iterator的原理
  9. 工作展望简短_元旦祝福语大全简短
  10. 荣耀电视鸿蒙系统的,荣耀智慧屏首发抢先体验:电视只是小功能,鸿蒙系统才是真亮点...
  11. ubuntu终端浏览文件夹
  12. 2016项目经验总结
  13. 【分享】VMOS Pro1.4.2最新会员版
  14. APP推送消息测试点分析
  15. Android简单的编写一个txt阅读器(没有处理字符编码),适用于新手学习
  16. 厉害了我的琴!钢琴教育竟然用上了AI+云计算?
  17. chia绘图时间参考
  18. 统计项目工程文件总行数
  19. 计算机基础及ms office应用题库,2020年9月计算机等级考试[计算机基础及MS Office应用]综合训练题库/网页版...
  20. java对接快递100追踪物流信息

热门文章

  1. js 前端时间选择器
  2. 苹果申请屏幕防指纹专利 互联网信用体系跨越一大步
  3. 【笔记】CMake构建C++工程
  4. PHP 获取网页内容的三种方法
  5. echarts设置坐标轴标题的样式
  6. Win10添加右键菜单以管理员方式打开cmd命令行
  7. 杰里之电流声/杂音【篇】
  8. 小波自适应阈值选取python_小波去噪阈值如何选取_小波阈值分析 - 全文
  9. vue系列教程之微商城项目|主页
  10. 单片机、ARM、MUC、DSP、FPGA、嵌入式