2016 - 2024

感恩一路有你

LabVIEW 状态机:实现程序流程图中的判断、分支

浏览量:2044 时间:2024-06-15 13:13:37 作者:采采

在工程应用中,状态机是最常使用的设计模型之一。通过使用状态机,我们可以很容易地实现程序流程图中的判断、分支等操作。

状态机由一系列的状态构成,其中包括一个“初始化”状态和一个“停止”状态。程序从“初始化”状态开始执行,在“停止”状态结束。在“初始化”状态中,我们可以进行控件与变量的初始化、打开文件以及创建引用等操作;而在“停止”状态中,则可以进行清除临时数据、关闭文件和结束引用等操作。在状态机中,每个状态都可能导致一个或多个状态的发生,其下一状态是由用户的输入信息和当前状态所决定的。

在决定使用状态机作为我们的设计模型后,首先要画出一个状态转换图。LabVIEW 状态机是由一个 While 循环、一个条件结构和一个移位寄存器组成的。其中 While 循环用来保证程序可以连续运行;条件结构的各种分支中的代码用来描述状态机的各种状态,以及下一状态的选择;移位寄存器用来将之前状态所作出的选择传递到下一次循环的选择端子。

1. 新建一个工程并建立虚拟文件夹

首先,我们需要新建一个工程,并且在工程中建立“控件”和“子VI”两个虚拟文件夹,用来放置自定义控件和子 VI。在“控件”文件夹中,我们可以新建一个控件。

2. 在控件编辑面板上放置枚举类型控件

在控件的编辑面板上,我们可以放置一个枚举类型的控件,并且编辑枚举类型控件,输入所有状态转换图中的状态的名称。编辑完成之后,将控件的类型更改为严格自定义类型(Strict Type Define),然后保存。建立这样一个严格自定义类型控件用来控制状态的转换有很大的好处,当我们需要添加新的状态或者删除一些无用的状态时,只需要修改我们建立的控件就可以了,不用在程序中一处一处的寻找、修改,可以节省很多时间,且不易出错。

3. 新建一个状态机 VI

接下来,我们需要在工程中新建一个状态机 VI。我们可以先新建一个空白 VI,然后在里面添加状态机所需要的 While 循环、条件结构和移位寄存器。而更简单的方法是,点击“文件 -> 新建(N)”,然后在弹出的“新建”对话框中选择“标准状态机”(Standard State Machine),来建立一个状态机 VI。

4. 拖入严格自定义类型的枚举控件

将建立好的严格自定义类型的枚举控件拖入程序框图中,来获得它所对应的常量,用来替换原模版中的枚举类型常量。然后,在条件结构中加入足够的分支来放置不同状态下的代码;添加足够的移位寄存器来在各个状态之间传递参数;在各个状态(分支)下添加代码,包括实现状态功能的功能代码以及确定下一个状态的流程代码。

5. 添加一个“空白”状态

可以看到,程序在执行时是不会进入最后一个“空白”状态的,添加这个状态的目的就是为了在添加新的状态时,可以通过复制空白状态来得到,可以大大提高编程效率。

总结:

状态机是在工程应用中使用最多的设计模型之一。通过使用状态机,我们可以很容易地实现程序流程图中的判断、分支等操作。在使用状态机作为设计模型之前,我们需要画出一个状态转换图,然后在 LabVIEW 中建立一个状态机 VI,并且在其中添加相应的代码,其中包括实现状态功能的功能代码以及确定下一个状态的流程代码。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。