4.4.2 状态机工具包的简单使用方法
在NI Developer Suite(开发者套件)中已经包含这个很实用的工具包——状态机工具包(State Machine Toolkit)。当然,如果你还没有的话,也可以单独购买。
状态图机工具包
状态机工具包提供了一个状态图编辑器(State Diagram Editor),用来实现设计、编辑程序的状态图(状态图是根据程序的要求抽象出来的,称“程序流程图”可能更好理解些),完成状态图的编辑后,关闭状态 图编辑器,便会在程序框图上自动地生成图形化语言的状态机构架(或者说是图形化的状态机代码)。
安装了状态机工具包后,在程序框图的函数控件板上就找到它的图标。用鼠标点击将该图标“State Diagram”,并移动、拖拽到程序框图上,然后的操作与放置while 循环时的操作有些类似,可以设定状态机框架的大小(大小取决于内部程序代码的多少)。
同时,还将自动出现一个状态图编辑器,见下面的例图所示。
有了状态图编辑器可以方便的创建应用程序的状态图,现在根据应用程序的要求,使用状态机编辑器来编制状态图了。下面将边编辑应用程序状态图,边了解状态图编辑器的使用方法。
状态图编辑器
从例图所示状态图编辑器中可以看到,编辑器提供最初的状态图里,仅仅包含一个Init(初始化)状态,我们曾经讲过:状态机必须有一个初始化状态,下面就按测量程序基本模式的样式(见下图),从初始化状态开始设计编辑状态图。
这个状态图在以前的章节中已经看到过,这里还需要几个按键开关来配合。
1、 初始化状态
通常的测量程序开始工作时都要有一个初始化,避免程序开始运行时发生瞬变或混乱。状态机也有一个初始化状态,就是图中的那个绿椭圆。
用鼠标双击绿椭圆中的“Init” 就可以修改绿椭圆的状态名。比如:键入“初始化状态”然后用鼠标点击任何空白处,我们看到绿椭圆的名字已经变成“初始化状态”。
在绿椭圆的上边还有一个名为“default(默认)”的线段,用鼠标点击它后,它将呈现红色此时用鼠标可以将它拖拽到绿椭圆边缘的任何地方。
“初始化状态”基本搞定,下一步该如何做?本程序规定在初始化完成后,程序会自动进入下一个状态,那就是前面所谈到“等待状态”!
2、等待状态
在图中绿椭圆下方约2cm处,单击鼠标的右键将会弹出一个“New State”指示框,单击该框将创建一个状态椭圆,在命名处键入“等待状态”后用鼠标点击任何空白处,将看到一个名字为“等待状态”的黄椭圆。
因为初始化完成后,程序自动进入该状态,所以将绿椭圆上的“default”线段拖拽到与该状态连接(这里是数据流导引的结果)。
3、测量状态、测量完成状态、报表生成及退出测试
再按上述方法,创建四个新的状态椭圆分别命名为:“测量状态”、“测量完成状态”和“报表生成”及“退出测试”。
用鼠标右键点击“等待装待”将弹出一个快捷菜单:选择“Create New Transition”后,将生成一个标号为“1”的连接线段,将该线段与“测量状态”状态相连。然后,用鼠标双击“1”,键入“[开始测量]按键按下”。(例图中没有连接)
使用同样的方法,设定连接好所有的端口,具体见上面那个完整的状态图。
用鼠标右键点击“退出测试”将弹出一个快捷菜单:选择“Make Terminal” 用鼠标点击任何空白处,将看到“退出测量”变成一个红椭圆。这是程序结束的标志。
“default”表示默认的意思,表示当该状态中的程序处理完成后,程序将自动转入下一个状态,它是每个状态椭圆自带的它既不能改变名称又不能删除。不用时可按“等待状态”椭圆中的自闭合方式处理。
此时,按程序设计要求已用状态图实现。关闭状态编辑器的窗口(只有关闭状态图编辑器才能在程序框图上看到正确的状态机构架),将在程序框图上看到按状态图生成的状态机的构架。
注意:此时LabVIEW开发环境中的“运行”按钮是折断的,提示我们不能运行。因为状态机构架中没有任何程序代码。
状态机工具包的简单使用方法就介绍到这里。下个单元介绍由状态图所产生的状态机图像化构架。