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

news2024/11/24 17:53:29

文章目录

  • 简单状态机
    • 状态机的创建和了解
    • 状态机实现红绿灯

简单状态机

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

有限状态机(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. 设置好的各分支如下图所示:
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3. 修改自定的簇,先给各圆形指示灯创建其引用,然后选其引用,创建常量。将其引用常量复制粘贴到自定义簇中。
在这里插入图片描述
在这里插入图片描述
4. 创建一个颜色簇
在这里插入图片描述
5. 在Initialize中对三个圆型指示灯导入簇中并进行初始化操作。
在这里插入图片描述
6. Red分支:在该分支中点亮红灯,熄灭黄灯,因为最后点亮的灯为黄灯,在Yellow分支中切到Red分支,需要熄灭黄灯,保证只有一盏灯亮。最后加上延时即可。
在这里插入图片描述
7. Green分支的设置同理。
在这里插入图片描述

  1. Yellow分支中设置黄灯闪烁,闪烁的间隔为1s。
    在这里插入图片描述
  2. 运行结果:
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter终极线程组“Ultimate Thread Group“如何使用?

1、安装,点击"选项",再点击"Plugins Manager",下载"Custom Thread Groups" 2、添加"jpgc - Ultimate Thread Group" 3、"jpgc - Ultimate Thread Group"使用

HarmonyOS开发5.0【骨架屏】 app界面制作

实现原理 1.定义组件和状态变量: 使用 Entry 和 Component 装饰器定义了一个名为 IvSkeleton 的组件。 定义了一个状态变量 translageX,初始值为 -100%,用于控制闪电效果的位置。 定义了两个数值变量 widthValue 和 heightValue,…

wangeditor——cdn引入的形式创建一个简易版编辑器——js技能提升

昨天同事那边有个需求,就是要实现聊天功能,需要用到一个富文本编辑器,参考如下: 上面的这个效果图是博客园的评论输入框 最终使用wangEditor编辑器实现的效果如下: 只保留了个别的菜单: 默认模式的wangE…

/bin/bash的作用

1、为啥使用不了很多命令? 我刚进入一个新系统: 我当时蒙蔽了,这是啥意思,为啥没命令? 原因是:当时进入的shell并没有初始化这些路径环境,所以正确的方法是: 2、/bin/bash运行的过程中执行…

Android12_13左上角状态栏数字时间显示右移动

文章目录 问题场景解决问题 一、基础资料二、代码追踪三、解决方案布局的角度解决更改paddingStart 的默认值设置marginLeft 值 硬编码的角度解决 问题场景 1)早期一般屏幕都是方形的,但是曲面屏,比如:好多车机Android产品、魔镜…

9月11号作业

头文件 #include <cmath> #include <QApplication> #include <QMainWindow> #include <QLabel> #include <QTimer> #include <QVBoxLayout> #include <QRandomGenerator> #include <QTimerEvent> #include <QTextT…

如何在 Ubuntu 系统上部署 Laravel 项目 ?

到目前为止&#xff0c;Laravel 是 PHP 开发人员构建 api 和 web 应用程序的首选。如果你是新手的话&#xff0c;将 Laravel 应用程序部署到线上服务器上可能有点棘手。 在本指南中&#xff0c;我们将向您展示在 Ubuntu 系统中部署 Laravel 应用程序的全过程。 Step 1: Updat…

SprinBoot+Vue教务管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

【深度学习】搞懂卷积神经网络(一)

卷积神经网络是一种具有局部连接&#xff0c;权重共享等特性的深层前馈神经网络。一般是由卷积层&#xff0c;池化层&#xff0c;全连接层交叉堆叠而成&#xff0c;使用反向传播算法进行训练。卷积神经网络具有一定程度上的平移&#xff0c;缩放和旋转不变性&#xff0c;较前馈…

【目标检测数据集】工具扳手数据集1000张VOC+YOLO格式

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1003 标注数量(xml文件个数)&#xff1a;1003 标注数量(txt文件个数)&#xff1a;1003 标注…

Mac M芯片上安装统信UOS 1070arm64虚拟机

原文链接&#xff1a;Mac M芯片上安装统信UOS 1070 arm64虚拟机 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于如何在苹果M系列芯片的Mac电脑上&#xff0c;通过VMware安装ARM64版统信UOS 1070桌面操作系统的文章。随着苹果M1和M2芯片的推出&#xff0c;越来越…

MATLAB中swapbytes函数用法

目录 语法 说明 示例 交换标量的字节顺序 交换向量的字节顺序 交换三维数组的字节顺序 swapbytes函数的功能交换字节顺序。 语法 Y swapbytes(X) 说明 Y swapbytes(X) 将数组 X 中每个元素的字节排序从 little endian 转换为 big endian&#xff08;或相反&#xff…

解决:Vue3 - defineProps 设置默认值报错问题

目录 1&#xff0c;问题2&#xff0c;分析2.1&#xff0c;按报错提示信息测试2.2&#xff0c;测试 vue-i18n 3&#xff0c;解决 1&#xff0c;问题 使用 defineProps 指定默认值时报错&#xff0c;代码如下&#xff1a; <template><input type"text" :pla…

1分钟从出差申请到自动入账,用友BIP超级版超级快!

在当今的商业战场&#xff0c;时间就是金钱&#xff0c;效率决定成败。对于频繁出差的商务精英而言&#xff0c;繁琐的差旅申请与报销流程无疑是巨大的时间浪费。现在&#xff0c;用友BIP超级版商旅费控一体化解决方案&#xff0c;将彻底改变这一现状&#xff0c;操作仅需1分钟…

【无人机设计与控制】固定翼四旋翼无人机UAV俯仰姿态飞行模糊自整定PID控制Simulink建模

摘要 本研究设计了一种基于模糊自整定PID控制的固定翼四旋翼无人机俯仰姿态控制系统。利用Simulink建立了无人机俯仰控制系统模型&#xff0c;通过模糊控制器自适应调节PID参数&#xff0c;实现了对无人机俯仰角度的精确控制。实验结果表明&#xff0c;该控制策略在不同飞行状…

机器学习-特征工层

机器学习-特征工层 仅个人笔记使用&#xff0c;感谢点赞关注 目前仅专注于 NLP 大模型 机器学习和前后端的技术学习和分享 感谢大家的关注与支持&#xff01;

【 html+css 绚丽Loading 】000047 玄武流转盘

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

有关 Element-ui 的一些思考

本篇文章是基于 element-ui 的 主题样式修改 曾经为了修改组件风格,一个项目用了上百个样式穿透,后来才发现定制一个主题就够了! 第一步,在官网的主题页面,修改背景色、字体颜色及边框颜色 第二步,下载主题 第三步,用下载的css文件替换掉默认的css文件

得物超级品质保障中心,助力电商品质保障迈向新高度

近期记者走进国内知名潮流电商平台——得物App的超级品质保障中心。该中心位于上海市嘉定区&#xff0c;总建筑面积达到约12万平方米&#xff0c;是集查验鉴别、鉴别研究、质量管理、仓储流转等功能于一体的综合性服务设施&#xff0c;全面覆盖了服装、配饰、奢侈品等多个业务品…

关于java学习基础路线的分享【javaSE】

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…