石鑫华视觉论坛

 找回密码
 注册会员
查看: 3744|回复: 1

[共享] labview的深入探索-----状态机的基本概念(陈树学)

[复制链接]
  • TA的每日心情

    12 小时前
  • 签到天数: 3384 天

    连续签到: 6 天

    [LV.Master]2000FPS

    发表于 2013-9-24 15:31:37 | 显示全部楼层 |阅读模式 来自:广东省东莞市 联通

    注册登陆后可查看附件和大图,以及购买相关内容

    您需要 登录 才可以下载或查看,没有账号?注册会员

    x
    状态机不是LABVIEW独有的概念,早在LABVIEW诞生之前,就有了状态机(STATE MACHINE)的概念,只所以在LABVIEW编程中经常强调状态机是因为LABVIEW特有的图形编程方式特别适合于采用状态机模式编程,在PLC中有流程图的编程方式,从本质上说,那是一种特殊的状态机。

    STATE MACHINE包括三个基本要件,STATE、EVENT 、ACTION,状态、事件和动作

    状态:是一个抽象的概念在一定条件下或者一定时间内保持不变,等待一个或几个事件的发生,命名状态时,往往可以用等待--来定义。

    事件:是一个瞬时的概念,表示某件事情发生了,一旦有关的事件发生了,势必要采取某种动作。

    动作:表示一旦事件发生,采取何种处理方式,处理的结果就是另一个稳定的状态。

    状态(等待事件)---》事件发生----》采取动作----》另一个状态。

    状态机的概念是非常简单的,越是简单的东西越不容易处理,原因是简单则限制少,则灵活,状态机设计的好坏完全取决于编程者的水平,这不仅仅指LABVIEW编程的水平,更重要的是编程者的逻辑思维,一个好的状态机的设计,关键是如何定义状态,状态少了,则意味着每一个状态中要处理的事务多了,状态多了,则整个状态机就变的复杂了。

    以一个简单的红绿灯控制来说,简单地说有两个状态,红色状态和绿色状态,事件是绿灯时间到和红灯时间到,绿色时间到触发的动作是,绿色灯灭,红色灯量,红色时间到触发的动作是红色灭,绿灯量。

    我过去的文章中多次提到ACTION ENGINE的概念,它与状态机的区别是,它仅仅定义了ACTION,而没有定义STATE和EVENT,因此,它的ACTION完全取决于编程者,而状态机自己本身就可以根据内部或者外部条件的变化,自动采取相应的动作,转入其它的状态,实现控制自动化。

    有多种形式的STATE MACHINE,我将在后续的文章中陆续介绍,先看一下红绿灯的实现过程,假如绿灯亮20秒,红灯亮10秒。

    先定义三个基本状态:初始化(仅在第一次调用时发生),等待绿灯结束和等待红灯结束。
    LABVIEW的严格枚举数据类型是LABVIEW状态机定义状态的最好工具,使用状态机时,必须要使用这种数据类型,好处是增加或者减少状态,程序可以自动更新。

    950df047.jpg
    8ee9abaf.jpg
    1216610103a63509e0.jpg
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-8-9 12:52
  • 签到天数: 307 天

    连续签到: 1 天

    [LV.8]800PFS

    发表于 2015-6-4 06:08:06 | 显示全部楼层 来自:甘肃省天水市 电信
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    LabVIEW HALCON图像处理入门教程(24.09)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解2020-2024》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24

    QQ|石鑫华视觉论坛 |网站地图

    GMT+8, 2024-11-22 20:26

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表