当前位置:首页 > 测试测量 > 测试测量
[导读]状态机是在工程应用中使用最多的设计模型。使用状态机,我们可以很容易的实现程序流程图中的判断、分支。 状态机是由一系列的状态构成的,其中包括一个“初始化”状态,和一个“停止”状态。程

状态机是在工程应用中使用最多的设计模型。使用状态机,我们可以很容易的实现程序流程图中的判断、分支。 状态机是由一系列的状态构成的,其中包括一个“初始化”状态,和一个“停止”状态。程序油“初始化”状态开始,由“停止”状态结束。一般来说,在“初始化”状态中进行控件与变量的初始化、打开文件以及创建引用等操作,而在“停止”状态中进行清除临时数据、关闭文件和结束引用等操作。在状态机中,每一个状态都可能导致一个或多个状态的发生,其下一状态是由用户的输入信息和当前状态所决定的。 在决定使用状态机作为我们的设计模型后,我们首先要画出一个状态转换图。在图中要列出系统中的所有状态,以及各个状态之间的转换关系。而且要标明转换所需要的条件。 举个例子,要编程实现以下功能:随机生成100个[0,100]内的自然数,并判断生成的自然数是否在[30,60]的区间内。如果不在该区间内给出报警信息,如果在区间内则将该数累加。 实际上如果我们把生成的随机数看作系统采集到的数据的话,这到题就是模拟了一个采集数据并且在数据不符合要求时报警,并将复合要求的数据进行进一步分析的系统。 要完成这道题目,需要要先画出它的状态转换图: 有了这个状态转换图,我们就可以清晰的看到程序要实现的所有状态以及状态之间的关系。 画好状态转换图,我们就可以清晰的看到程序要实现的所有状态以及状态之间的关系。下面的工作就是用LabVIEW来实现这个状态机。 状态机是由一个While循环、一个条件结构和一个移位寄存器组成的。其中While循环用来保证程序可以连续的运行;条件结构的各种分支中的代码用来描述状态机的各种状态,以及下一状态的选择;移位寄存器用来将之前状态所作出的选择传递到下一次循环的选择端子。 下面我们就一步一步的实现这个状态机。 首先,新建一个工程,并且在工程中建立“控件”和“子VI”两个虚拟文件夹来放置自定义控件和子VI。在“控件”文件夹中新建一个控件。 在控件的编辑面板上放置一个枚举类型的控件,并且编辑枚举类型控件的项目,输入所有状态装换图中的状态的名称。如下图所示。 可以看到,上图中的项目比状态转换图中多了一个“空白”状态。这只是为了修改程序方便才添加的,具体情况会在下文中提到。 编辑完成之后,将控件的类型更改为严格自定义类型(Strict Type Define),然后保存。建立这样一个严格自定义类型控件用来控制状态的转换有很大的好处,就是在我们万一要添加新的状态或者要删除一些无用的状态时,只要修改我们建立的控件就可以了,不用在程序中一处一处的寻找、修改,可以节省很多时间,且不易出错。 做好以上控件后,就要在工程中新建一个状态机VI。我们可以先新建一个空白VI,然后在里面添加状态机所需要的While循环、条件结构和移位寄存器。而更方便的方法是,点击“文件-->新建”,然后在弹出的“新建”对话框中选择“标准状态机”(Standard State Machine),来建立一个状态机VI。如下图所示。 在利用模版建立了状态机VI后,我们要删除其中的介绍性文字,因为这些文字是用来介绍模版功能和提醒编程者某些注意事项的。在最终程序中保留这些文字是非常不专业的。 接下来就是把我们事先建立好的严格自定义类型的枚举控件拖入程序框图中,来获得它所对应的常量,用来替换原模版中的枚举类型常量。然后,在条件结构中加入足够的分支来放置不同状态下的代码;添加足够的移位寄存器来在各个状态之间传递参数;在各个状态(分支)下添加代码,包括实现状态功能的功能代码以及确定下一个状态的流程代码。如下图所示。 大家可以看到,程序在执行时是不会进入最后一个“空白”状态的,添加这个状态的目的就是为了在添加新的状态时,可以通过复制空白状态来得到,可以大大提高编程效率。 以上所说的状态机叫做标准状态机,是最常用也是最基本的状态机。其实状态机还有一些变种的形式,以后再介绍吧。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

NI提供的软件包经济省时,不仅帮助开发人员节省时间,还为创客提供了新的机遇

关键字: LabVIEW 自动化测试系统

强大的图形化编程工具使整个测试和测量过程的各个方面实现可视化

关键字: LabVIEW 图形化编程工具

摘要:对于每一型新机试飞,或者是重大的研究性试飞和验证试飞,都必须实施遥测监控。现基于TTS(TextToSpeech)语音合成技术,结合飞行试验遥测监控系统的不足,利用TTS引擎在LabVIEW开发环境下设计并实现了遥...

关键字: 飞行试验遥测监控系统 TTS LabVIEW

在科研以及应用软件领域,LabVIEW和MATLAB作为比较常用的2款工具,相信很多人都用过吧。简单的概括一下,LabVIEW侧重测试测量和数据采集,MATLAB侧重科学计算和数据分析。

关键字: LabVIEW matlab 混合编程

摘要:利用单片机和虚拟仪器LabVIEW在PC端设计了温湿度测量及控制系统,用于温湿度数据监测。该系统上位机为PC端监控界面,下位机为单片机,单片机采集温湿度数据,并将采集到的数据通过串口发送给监控界面进行监测和管理。该...

关键字: DHT11 LabVIEW 单片机

摘要:当前闭环步进电机在自动化设备中的应用越来越广泛,故为了进一步满足闭环步进电机的应用需求,采用LabVIEW上位机+运动控制卡+驱动器模块的控制方案进行了多轴运动系统的设计,通过设计的上位机软件实现闭环步进电机的实时...

关键字: 闭环步进电机 精度测试 LabVIEW

摘要:为满足某扭矩检测试验标准要求,基于LabView设计开发了一款扭矩检测装置,该装置能检测某类零部件的断裂力矩,满足试验标准要求,其他零部件的扭矩也可在该装置上检测。类似的扭矩装置可参考该装置进行设计。

关键字: 伺服电机 LabVIEW PLC

摘要:基于传统直角坐标机器人控制技术,以蓄电池极板连续生产线的码垛机器人为应用案例,根据设备需求、机器人控制原理和系统状态机的设计,介绍了一种通用的、灵活的、开发周期短的多轴直角坐标机器人控制方法。该机器人经过实践,验证...

关键字: 直角坐标机器人 状态机 控制系统

在下述的内容中,小编将会对LabVIEW的相关消息予以报道,如果LabVIEW是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: LabVIEW 测试测量 NI

一直以来,LABVIEW都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来LABVIEW的相关介绍,详细内容请看下文。

关键字: LabVIEW 测试测量 测试仪器
关闭
关闭