首页 理论教育顺序型状态机的实现方法

顺序型状态机的实现方法

【摘要】:图5-2 顺序状态机结构与顺序结构在状态之间的数据传递中,顺序状态机与顺序结构的实现方式是不同的。顺序型状态机模式的整个顺序状态序列的顺序是固定的,在程序运行时无法改变。也正是这一点制约了顺序型状态机的应用,因为它妨碍了作为LabVIEW优点之一的程序并行运行机制。为了能够在程序运行中改变状态序列的执行顺序,可以对其加以改进,采用移位寄存器代替循环索引控制状态机的执行。

顺序型状态机是最简单的一种状态机结构,它和顺序结构等价,如图5-2所示。在状态机的基本架构上,将循环索引端连接到条件结构的选择端口上,并在随后一个条件子框图中控制循环结束。

978-7-111-49442-3-Chapter05-2.jpg

图5-2 顺序状态机结构与顺序结构

在状态之间的数据传递中,顺序状态机与顺序结构的实现方式是不同的。前者使用的是移位寄存器,后者使用的是顺序结构的数据通道或者顺序局部变量

顺序型状态机模式的整个顺序状态序列的顺序是固定的,在程序运行时无法改变。也正是这一点制约了顺序型状态机的应用,因为它妨碍了作为LabVIEW优点之一的程序并行运行机制。为了能够在程序运行中改变状态序列的执行顺序,可以对其加以改进,采用移位寄存器代替循环索引控制状态机的执行。移位寄存器的高度灵活性使得程序员可以按照实际情况设定状态序列的实际执行顺序,只需要利用移位寄存器的输出值将各个状态之间串起来即可。

【例5-1】 利用顺序型状态机计时

利用顺序型状态机计算某个动作运行的时间,这个程序共需要3个子框图,调用“定时”函数子面板中的“时间计数器”函数开始计时。“时间计数器”函数返回计算机开机到当前的时间毫秒数。在图5-3b中,放入需要计算的动作模块,并将初始的时间值传递给移位寄存器。在图5-3c中将利用移位寄存器的值进行时间差的计算,得到动作模块运行所消耗的时间,并退出循环。

978-7-111-49442-3-Chapter05-3.jpg

图5-3 程序框图

a)获取初始时间 b)需要计时的运行模块 c)计算模块运行时间

本例中使用枚举型常量控制状态机运行,这样就可以很清楚地知道各个条件子框图的具体含义。