画好状态转换图,我们就可以清晰的看到程序要实现的所有状态以及状态之间的关系。下面的工作就是用LabVIEW来实现这个状态机。
关键字:LabVIEW 设计模型 状态机 编程实现
引用地址:LabVIEW设计模型——状态机之编程实现
状态机是由一个While循环、一个条件结构和一个移位寄存器组成的。其中While循环用来保证程序可以连续的运行;条件结构的各种分支中的代码用来描述状态机的各种状态,以及下一状态的选择;移位寄存器用来将之前状态所作出的选择传递到下一次循环的选择端子。
下面我们就一步一步的实现这个状态机。
首先,新建一个工程,并且在工程中建立“控件”和“子VI”两个虚拟文件夹来放置自定义控件和子VI。在“控件”文件夹中新建一个控件。
在控件的编辑面板上放置一个枚举类型的控件,并且编辑枚举类型控件的项目,输入所有状态装换图中的状态的名称。如下图所示。
可以看到,上图中的项目比状态转换图中多了一个“空白”状态。这只是为了修改程序方便才添加的,具体情况会在下文中提到。
编辑完成之后,将控件的类型更改为严格自定义类型(Strict Type Define),然后保存。建立这样一个严格自定义类型控件用来控制状态的转换有很大的好处,就是在我们万一要添加新的状态或者要删除一些无用的状态时,只要修改我们建立的控件就可以了,不用在程序中一处一处的寻找、修改,可以节省很多时间,且不易出错。
做好以上控件后,就要在工程中新建一个状态机VI。我们可以先新建一个空白VI,然后在里面添加状态机所需要的While循环、条件结构和移位寄存器。而更方便的方法是,点击“文件-->新建”,然后在弹出的“新建”对话框中选择“标准状态机”(Standard State Machine),来建立一个状态机VI。如下图所示。
在利用模版建立了状态机VI后,我们要删除其中的介绍性文字,因为这些文字是用来介绍模版功能和提醒编程者某些注意事项的。在最终程序中保留这些文字是非常不专业的。
接下来就是把我们事先建立好的严格自定义类型的枚举控件拖入程序框图中,来获得它所对应的常量,用来替换原模版中的枚举类型常量。然后,在条件结构中加入足够的分支来放置不同状态下的代码;添加足够的移位寄存器来在各个状态之间传递参数;在各个状态(分支)下添加代码,包括实现状态功能的功能代码以及确定下一个状态的流程代码。如下图所示。
大家可以看到,程序在执行时是不会进入最后一个“空白”状态的,添加这个状态的目的就是为了在添加新的状态时,可以通过复制空白状态来得到,可以大大提高编程效率。
以上所说的状态机叫做标准状态机,是最常用也是最基本的状态机。其实状态机还有一些变种的形式,以后再介绍吧。
上一篇:LabVIEW设计模型——状态机之状态转换图
下一篇:基于LabVIEW的弹道解算软件设计
推荐阅读最新更新时间:2024-03-30 23:20
NI 发布 LabVIEW 2011
25周年,带来更强大的软硬件无缝集成 德克萨斯州奥斯汀市2011年8月1日电 /美通社亚洲/ -- NIWeek -- 美国国家仪器有限公司(National Instruments,简称 NI)于公司总部德克萨斯州奥斯汀市主办的 NIWeek 上揭开了 NI LabVIEW 2011的面纱 -- 备受赞誉的 LabVIEW 软件迎来了25周年。LabVIEW 将加速提升工程师与科学家研发和部署测试测量和控制系统的效率,以应对和解决一些世界上最艰巨的工程挑战。LabVIEW 2011 通过新的工程实例库及其对大量硬件设备和部署目标的交互支持极大地增进了效率。这其中包含新的多核 NI CompactRIO 控制器及当今业界性能最强
[测试测量]
基于LabVIEW的心电信号采集与分析设计方案
生物医电信号,如心电信号、血压信号、脑电信号等等,都表征了一定的病理特征,以心电为例,通常以心电图来记录心脏产生的生物电流,临床医生可以利用心电图对患者的心脏状况进行评估,并做出进一步诊断。而对于一些家用或者医用仪器厂商来说,则需要开发特定的信号处理算法并部署到嵌入式处理器上,完成医电特征的提取。通常整套心电监测产品的研发过程,由心电数据采集、心电信号分析、人机显示、文件存储等几部分组成,通过NI提供的图形化系统设计平台,可以覆盖数据采集、信号读取、心电分析以及报表生成等一系列产品开发的流程,完成整套系统的开发,提高开发效率。而在整个开发过程中,信号分析部分往往是重点,也是各厂商的软件核心技术所在。本文将重点就心电采集与分析展
[工业控制]
如何在LabVIEW中制作自定义按钮控件
最近应客户的要求,用LabVIEW 编写一个用Pico数据采集卡进行数据采集的简单实例,用于验证Pico数据采集卡的性能。虽然Pico数据采集卡自带有二次开发demo,但是这些都是非常基础的,有些人机交互控件,控制的都是中间变量,例如,Pico采集卡用timebase变量来设置采样率,timebase为0时,表示采样率是1G/s,采样率Pico示波器识别的变量,但是这些却不是客户最终需要的变量),所以在demo中需要将这些转换关系处理好。首先,晒晒demo的整体面貌吧~ 图 1 虹科控制台 虽然只是一个简单的展示示例,但确是麻雀虽小,五脏俱全,从自定义控件制作,到界面整体风格,到API函数调用,中间变量转换,程序整体结
[测试测量]
应用LabVIEW与AWR软件为无线应用设计复杂电路
很多富有经验的工程师毫无怀疑的记着当仅有的调制技术是模拟调制而功放的性能可以用加性高斯白噪声(AWGN)来验证时设计一个基站或移动电话的放大器是如何的简单。现在,第二代及以后的无线网络需要用到数字调制技术,使用服务中所提供的信号来激励功放或其他电路就成为了必须。因此需要将基带信号处理和射频/微波电路设计工具与实际的产生调制信号和评估其对设计影响的测试仪器紧密的整合在一起。 此应用笔记描述了将AWR的射频/微波设计软件(Microwave Office和VisualSystem Simulator (VSS))无缝的与National Instruments的图形化编程软件环境LabVIEW,和广范的调制仪器连接在一起来较好的满
[测试测量]
elmos推出可编程LED驱动器,实现智能欢迎界面
德国elmos公司日前宣布专为汽车内部LED照明设计而推出的驱动器芯片E522.46。该芯片带有8路线性高边驱动器,单个LED的分类信息以及其他配置参数可以存储在芯片内置EEPROM中。基于这些存储的LED分类信息,可以通过输入的PWM占空比设置每一路的LED工作电流,实现不同的亮度。另外,该芯片也提供了模拟调光输入接口,可以通过模拟电压对LED进行调光。E522.46设计有I2C接口,可以和主控单片机连接,实现各种用户定义的动画和友好界面。 该芯片适用范围包括:车辆中的内饰氛围灯,信息娱乐按键背光驱动以及尾灯和转向灯。芯片工作输入电压范围为3.3V至32V(最大42V),最大输出电流为单路26.5mA。每路LED输出电流分辨率
[汽车电子]
基于LabVIEW的无线传感器网络监测平台设计
1 引言 无线传感器网络是由分布在监测区域内的大量传感器节点组成的无线网络,由于其快速展开、抗毁性强、监测精度高、覆盖区域大等特点而产生了广阔的应用前景,由此成为当前信息领域的研究热点。无线传感器网络的状态、采集的信息需通过一个友好的人机界面提供给观测者。本文介绍基于LabVIEW平台设计的无线传感器网络监测平台。 LabVIEW是美国NI公司推出的一种基于编译型图形化编程语言的虚拟仪器软件开发平台。其集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能,其强大的函数库使编程过程生动有趣,开发周期缩短,且其图形化的前面板为使用者提供了直观清晰的人机界面。 本文在PC机上利用
[测试测量]
labview做上位机
最近在做一个蓝牙小车的上位机,主要实现的功能是通过与蓝牙串口通信可以控制小车前进、后退、左转、右转、开灯,以及三个舵机的转动,另外利用无线路由通过摄像头传回实时的视频。 上位机部分主要难点在于舵机要在数值变化时才向串口发送一次指令,我采用了值变化的事件触发结构。初步的上位机为一下。 前面板 程序框图部分 当然visa close模块要有 这里没有裁剪进去。 视频模块 视频模块使用的是0.2秒刷一次网页,使图片形成动图画面,这样的问题是会有留白 闪烁,但由于设备问题 只能这样做了
[测试测量]
基于LABVIEW的USB接口多路高速数据采集系统的设计
引言 在日常的测试测量中,经常使用数据采集卡采集数据。但是很多数据采集卡往往通过PCI总线完成数据的传输,它有诸多弊端,例如操作不便,受限于计算机插槽数量和中断资源,现场信号对计算机安全有威胁,计算机内部的强电磁干扰对被测信号也会造成很大的影响,最耗时最复杂的数据分析却由用户通过第三方软件(如VC,VB等) 在PC机上编写上位机软件来完成,因此用户不得不在这方面花费大量精力。这些问题都遏制了基于PCI总线的数据采集系统的进一步开发和应用,因此迫切需要设计一种更为简便通用的高速数据采集通信系统来完成数据采集以及与计算机的数据交互。
近年来通用串行总线(USB)以即插即用等技术优势得到了广泛的应用,INTEL等公司最近
[嵌入式]