【LabVIEW学习篇 - 23】:简单状态机

文章目录

简单状态机

一个优秀的应用程序离不开好的程序框架,不仅要很好满足用户的功能需求,还要考虑到系统的稳定性、实时性、可扩展性、可维护性,执行效率等方面。借用一些成熟的设计框架,可以帮助开发人员很容易地完成一些复杂系统的设计和开发,并且在满足需求的同时还保证程序的性能。

有限状态机(FSM-Finite State Machine),即用有限确定数量的状态来描述一个系统的运行,统称称此为状态机。状态机的概念很早就有了,它不是LabVIEW特有的概念,而是LabVIEW比较适合设计框架之一。

状态机包括三个基本要件:状态、事件(转换条件)、动作。

状态机简单灵活,状态机设计的好坏取决于设计者的编程水平和逻辑思维。太少,会使得每个状态中要处理的任务太多;太多,又会使得状态机太复杂,不便于维护。

状态机的创建和了解

  1. 创建项目-简单状态机Main.vi中就是简单状态机的模板。

  2. 简单状态机。

  3. 状态机的执行过程:
    程序框图中最外层是一个while循环,内层是一个条件结构。条件结构主要根据移位寄存器也就是状态寄存器,用来保存当前系统的一个状态,从而在下次循环的时候将系统跳转到对应的状态去执行。
    Step1:首先,系统最初始的状态就是Initialize,进入循环后其状态存入移位寄存器中,然后进入条件分支结构,执行对应的操作,操作执行完之后就会跳转到下一个状态Wait for EventWait for Event就会赋值给移位寄存器。

    Step2:当进入下一次循环,就会从移位寄存器中拿到Wait for Event的状态,Wait for Event中有一个事件结构,分别有三个事件分支,其中有两个事件分支有按钮,按下对应的按钮可触发该事件。



    Step3:当在Wait for Event分支中触发事件,将User State 1存入移位寄存器中,在下一次循环时切换到移位寄存器中,将字符串以对话框的形式显示,然后又切换到Wait for Event分支中。同理,其余的状态切换也相同。


  4. 运行结果:


状态机实现红绿灯

  1. 在前面板中分别创建三个圆形指示灯,三个数值输入控件,数值输入控件用来设置红、绿、黄灯亮的时间。然后在自定义枚举框中添加RedYellowGreen
  2. 设置好的各分支如下图所示:





  1. 修改自定的簇,先给各圆形指示灯创建其引用 ,然后选其引用,创建常量。将其引用常量复制粘贴到自定义簇中。

  2. 创建一个颜色簇

  3. Initialize中对三个圆型指示灯导入簇中并进行初始化操作。

  4. Red分支:在该分支中点亮红灯,熄灭黄灯,因为最后点亮的灯为黄灯,在Yellow分支中切到Red分支,需要熄灭黄灯,保证只有一盏灯亮。最后加上延时即可。

  5. Green分支的设置同理。

  6. Yellow分支中设置黄灯闪烁,闪烁的间隔为1s。

  7. 运行结果:

相关推荐
zhangrelay7 分钟前
如何让手机电脑流畅飞起低碳节能性能拉满-软件安装篇-ESR-Extended Support Release-延长支持版-LTS
linux·运维·笔记·学习
岳轩子11 分钟前
jvm学习 引入 第一晚
jvm·学习
胡西风_foxww23 分钟前
学习python人工智能路径及资源
人工智能·python·学习·路径·资源·书籍·路线
好奇龙猫33 分钟前
【大学院-筆記試験練習:线性代数和数据结构(17)】
数据结构·学习·线性代数
承渊政道44 分钟前
C++学习之旅【C++拓展学习之反向迭代器实现、计算器实现以及逆波兰表达式】
c语言·开发语言·c++·学习·visual studio
爱吃泡芙的小白白1 小时前
使用Cursor来进行连接SSH远程主机中出现的问题(自用)
服务器·学习·ssh·cursor
●VON1 小时前
Flutter for OpenHarmony:基于选择模式状态机与原子批量更新的 TodoList 批量操作子系统实现
学习·flutter·ui·openharmony·von
川西胖墩墩1 小时前
教育智能化:自适应学习与知识图谱构建
人工智能·学习·知识图谱
OAoffice1 小时前
学习培训考试平台选型指南:青蓝阁、魔学院及其他优选方案深度对比
学习·企业学习考试·学习培训考试·ai智能学练考
Lonely 净土1 小时前
第5-10天学习笔记
笔记·学习