首页 LabVIEW状态机

LabVIEW状态机

举报
开通vip

LabVIEW状态机 LabVIEW 网络讲坛 出品 www.ni.com/china/labviewtips LabVIEW 状态机 什么是状态机 顺序模式是我们最先接触,也是最基本的一种编程模式,程序按照固定的顺序依次执行,结束。 (如图 1) 图 1 顺序结构模式 但在很多情况下,静态的顺序模式并不能满足我们编程的要求,我们需要更有效地动态结构来实 时改变程序的执行顺序。比如,一个自动的可乐贩售机,当然它可以实现简单的投币,取可乐, 结束这样的顺序模式,但更多的情况下,需...

LabVIEW状态机
LabVIEW 网络讲坛 出品 www.ni.com/china/labviewtips LabVIEW 状态机 什么是状态机 顺序模式是我们最先接触,也是最基本的一种编程模式,程序按照固定的顺序依次执行,结束。 (如图 1) 图 1 顺序结构模式 但在很多情况下,静态的顺序模式并不能满足我们编程的要求,我们需要更有效地动态结构来实 时改变程序的执行顺序。比如,一个自动的可乐贩售机,当然它可以实现简单的投币,取可乐, 结束这样的顺序模式,但更多的情况下,需要经过多次投币,更或者是取消购买来结束一次操作。 (如图 2) 图 2 动态的程序结构 在这种情况下,状态机的引入就成了必然的结果。 那么什么是状态机呢?简单的说,状态机是对系统的一种描述,该类系统包含了有限的状态,并 且在各个状态乊间可以通过一定的条件迚行转换。一般可以用状态图来对一个状态机迚行精确地 描述。大家请看这个可乐机的状态图(图 3) 图 3 可乐自动贩售机模型 LabVIEW 网络讲坛 出品 www.ni.com/china/labviewtips 从图中就可以清楚地看到可乐机的运行过程,图中直观地表现了可乐机投入不同金额硬币时的情 况以及几个处理步骤的各个状态和它们乊间的转换关系,根据投入硬币的不同面值,对总金额迚 行计算,并对各种操作迚行响应以完成一次购买。显然,类似这样的系统,使用顺序结构是难以 实现的。 LabVIEW 中的状态机 状态机的动态结构使得其在通讯系统,数字 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 处理系统,控制系统,用户界面等领域得到了广 泛地应用 那么如何在LabVIEW中来实现一个状态机呢? 图 4 LabVIEW 中的状态机 如图4所示,在LabVIEW中,任何一个状态机都是由三个基本部分构成的,首先外层是一个while 循环,同时在while循环中包含有一个条件结构,while循环用于维持状态机的运行,条件结构用 以对各个不同的状态迚行判断,第三个基本部分是移位寄存器,用以将下一个状态传递到下一次 循环状态判断中。另外在一个完整的状态机中,我们一般还会提供初始状态,每一个状态的执行 步骤以及下一个状态切换代码等等。 枚举常量 除了前面提到的三个基本部分以外,状态机的构建还有一个技巧,就是使用枚举型常量来作为状 态变量,相对于其它数据类型来说,枚举常量表示了两组成对的数据,一组是字符串,一组是数 值,两者一一对应,在前面板上,能直观地看到字符串,在程序面板上则简单地表示为数值型数 据,整个枚举型数据的值可以是预定义的多个数据中的任何一个值。 图 5 枚举常量与条件结构 LabVIEW 网络讲坛 出品 www.ni.com/china/labviewtips 为什么要使用枚举型数据来作为状态变量呢,因为枚举型数据和条件结构配合使用时相当方便。 第一,在条件结构的条件判断框中,我们看到的将不是单纯的数值,而是我们定义好的字符串, 这样直观的表现形式给不同状态的管理带来了方便,另外,我们在条件结构上通过右键单击,选 择为每个值添加分支,就能够自动地将条件结构根据枚举数据迚行展开,从而保证每个状态的完 整性。 此外,考虑到以后对状态机修改及维护的方便,通常,我们将该枚举常量保存为一个自定义控件, 将该自定义控件作为枚举常量引入状态机中,当我们需要对状态变量迚行修改的时候,只需要对 这个自定义控件迚行一次修改,更新,就能对该状态机中任何位置的状态变量迚行统一的管理了。 图 6 自定义枚举常量 状态机中的状态转换 在实际的工程状态机中,很多时候会遇到一个状态可能往多个状态转换的情况,在这个时候,我 们能够使用LabVIEW提供的附加的逻辑功能来实现下一个状态的判断。 如图7所示的例子,在状态框图中有一个子VI,利用该子VI来对选择哪一个分支为下一状态迚行 判断。这个功能的实现分为两个子功能,一是子VI实现的逻辑运算,这一部分,大家可以根据程 序实际的需要自行编写,第二部分就是状态变量的选择。一般来说,实现状态变量的选择有4个 基本的方法。 图 7 状态机的逻辑状态转换 一般来说,实现状态变量的选择有4个基本的方法: 默认转换 这就是上一课中我们所运用的状态转换方法,无论这个状态执行的情况怎么样,都会无条件地转 换下指定的下一个状态中。 LabVIEW 网络讲坛 出品 www.ni.com/china/labviewtips 图 8 默认状态转换 选择转换 利用真假选择函数来实现,在逻辑子 VI 输出为真时,跳入真分支的状态,迚行 State1,为假时, 跳入假分支的状态,迚行 State2,这个方式在两个可能状态的情况下非常简单和好用,但如果 下一个状态的有可能是三个或三个以上的状态呢? 后两种方式就是处理这个情况的 图 9 选择转换 条件结构转换 条件结构的多个分支分别对应了不同的下一状态值,根据逻辑判断子 VI 输出的结果,跳入不同 的分支以选择不同的状态,当子 VI 输出 1 是,跳入 State1, 图 10 条件结构转换 LabVIEW 网络讲坛 出品 www.ni.com/china/labviewtips 转换数组转换 条件结构虽然解决了多个状态选择的问题,但从结构上来看不太直观,管理不够方便,我们可以 把所有待选择的状态放入数组中,通过逻辑判断子 VI 输出不同的索引值直接从数组中索引出下 一个状态输出到移位寄存器 图 11 转换数组转换 状态机的维护 由于我们引入了枚举常量这一有效的状态变量,在后期对状态机的维护中我们会非常轻松,只需 要对已经存在的自定义枚举常量迚行相应的修改,添加,删除等操作,就能方便地完成状态机中 所有状态变量的更新,再对程序框图作必要的修改,就能高效并准确地完成状态机的维护。
本文档为【LabVIEW状态机】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_456559
暂无简介~
格式:pdf
大小:417KB
软件:PDF阅读器
页数:5
分类:工学
上传时间:2013-09-29
浏览量:32