什么才是状态机?什么又是状态?

一关于状态机的认识     

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

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

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

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

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


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

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

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

   

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

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

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

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

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值