LabVIEW实验指导书
2.使用Case结构,创建一个VI以检查一个数值是否为正数。如果它是正的,VI就计算它的平方根,反之则显示出错。如图3-9所示,最后将该VI保存为Case Structure.vi。
提示:可以使用以下函数:
One Button Dialog函数:它可以用于显示一个对
话框,内容可由字符串常量输入提供。 例如:
图3-9 Case Structure 3.设计一个VI,用公式节点来计算下列方程:y1=x3-x2+5,y2=mx+b,其中x的取值为0-20,以上两个方程只许使用一个Formula Node。
4.设计一个VI能够像计算器一样进行运算。前面板上有两个数字控制器,用来输入两个数字,另有一个指示器,用来显示VI对输入数字进行运算(Add、Subtract、Divide或Multiply)的结果。用一个滑动条控制器来选择加、减、乘、除运算。
*5.分别用Case结构和公式节点语句两种方法,实现下列条件分支语句:
考虑计算两数比率x/y的下列代码段:
if (y?0) z=x/y; else z=+?;
两VI保存为Case Division.vi和Formula Division.vi。
*6.利用case结构的多分支,进行下列简单程序设计。 要求:星期一显示:新的一周开始了,好好学习! 星期二显示:今天是星期二,继续努力! 星期三显示:今天是星期三,生活愉快! 星期四显示:周四了,加油呀!
星期五显示:今天是星期五,站好最后一班岗! 星期六显示:周末愉快!
星期日显示:好好休息,迎接新的一周!
四、思考题
1.数据流编程有何有点?
2. LabVIEW有哪两种顺序结构?各有何特点? 3. 掌握Case结构的组成及设计方法。 五、实验报告要求
1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。
2.使用公式节点时,如果输入变量的名称同输出变量的名称相同时,会怎样? 3.心得体会及其它。
13
LabVIEW实验指导书
实验四 LabVIEW程序结构——事件结构与状态机
一、实验目的
1.掌握事件结构(Event Structure)编程。 2.了解状态机的工作原理和设计方法。 二、实验原理
1.事件结构(Event Node)
编程的主要目的是为了实现用户的某种功能,用户通过用鼠标、键盘、程序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW中相应这些事件最常用的结构就是―事件结构‖。事件结构内容丰富,基本上大的程序结构都需要用到事件结构。
事件结构在程序不能够单独响应各种事件,必须与循环结构一同使用。
以图形化方式响应和处理用户的操作;与Windows操作系统的事件处理方式相似。如图4-1所示。
事件超时事件数据节点选择器标签选择器标签对应事件的子框图 图4-1 事件结构
事件结构的组成:
(1)上边框中间是事件选择标签,用于标识当前显示的子框图(第0个)所处理的事件源。其增减与层叠式顺序结构和选择结构中的增减类似。
(2)事件数据节点为子框图提供所处理事件的相关数据。事件数据节点由若干个事件数据端子组成。
(3)事件超时端子,隶属于整个事件结构,用于为超时事件提供超时时间参数,以ms为单位。当值为-1时,事件结构处于永远等待状态,直到指定的事件发生为止。通常情况下,应当为事件结构指定一个超时时间,否则事件结构将一直处于等待状态。
LabVIEW事件编程的黄金原则:
(1)不要将事件结构放置在While循环之外。 (2)不要在事件结构中直接使用循环处理事件。 (3)在事件结构中添加“停止”按钮的处理分支。 提示:为防止前面板“死锁”,在编辑事件结构分支时,请将“锁定前面板直至事件分支完成”复选框去掉。
2.状态机
顺序模式是我们最先接触,也是最基本的一种编程模式,程序按照固定的顺序依次执行,结束。
14
LabVIEW实验指导书
但在很多情况下,静态的顺序模式并不能满足我们编程的要求,我们需要更有效地动态结构来实时改变程序的执行顺序。比如,一个自动的可乐贩售机,当然它可以实现简单的投币,取可乐,结束这样的顺序模式,但更多的情况下,需要经过多次投币,更或者是取消购买来结束一次操作。在这种情况下,状态机的引入就成了必然的结果。
那么什么是状态机呢?简单的说,状态机是对系统的一种描述,该类系统包含了有限的状态,并且在各个状态之间可以通过一定的条件进行转换。一般可以用状态图来对一个状态机进行精确地描述。
在LabVIEW中,任何一个状态机都是由三个基本部分构成的,首先外层是一个while 循环(用于维持状态机的运行),同时在while循环中包含有一个条件结构(用以对各个不同的状态进行判断),第三个基本部分是移位寄存器(用以将下一个状态传递到下一次循环状态判断中)。另外在一个完整的状态机中,我们一般还会提供初始状态,每一个状态的执行步骤以及下一个状态切换代码等等。
除了前面提到的三个基本部分以外,状态机的构建还有一个技巧,就是使用枚举型常量来作为状态变量,相对于其它数据类型来说,枚举常量表示了两组成对的数据,一组是字符串,一组是数值,两者一一对应,在前面板上,能直观地看到字符串,在程序面板上则简单地表示为数值型数据,整个枚举型数据的值可以是预定义的多个数据中的任何一个值。
为什么要使用枚举型数据来作为状态变量呢?
因为枚举型数据和条件结构配合使用时相当方便。第一,在条件结构的条件判断框中,看到的将不是单纯的数值,而是定义好的字符串,这样直观的表现形式给不同状态的管理带来了方便,另外,在条件结构上通过右键单击,选择为每个值添加分支,就能够自动地将条件结构根据枚举数据进行展开,从而保证每个状态的完整性。
此外,考虑到以后对状态机修改及维护的方便,通常将该枚举常量保存为一个自定义控件,将其作为枚举常量引入状态机中,当需要对状态变量进行修改时,只需要对该自定义控件进行一次修改、更新,就能对该状态机中任何位置的状态变量进行统一的管理了。 三、实验内容
1. 在前面板中显示一个按钮和一个数值输入控件,当在按钮上按下鼠标或数值输入控件值发生变化时,产生事件。当该事件发生时,弹出对话框,询问是否继续,点击Yes,While循环继续执行;若点击No则退出While循环;此外,设置一个超时处理子图形代码框,若5秒钟没有在前面板操作,则退出While循环。
15
LabVIEW实验指导书
2. 数据采集与处理状态机设计。该状态机主要完成数据采集与数据分析功能。
(1)状态变量枚举类型定义为:初始化、停止、检查VI事件、数据采集、数据分析等五项,将其设定为自定义类型。系统状态转换图如图4-5所示。
数据采集 “数据采集”:值改变 数据分析 “数据分析”:值改变 “停止”:值改变 初始化 检查VI事件 图4-5 状态图转换图 (2)在“初始化”分支中,将向波形图、信号测量局部变量写入初始数据代码。注意数
组常亮为一个空数组。
(3)在“检查VI事件”分支中,设置一个VI事件结构,事件结构包含以下事件分支: ? “数据采集”:值改变; ? “数据分析”:值改变; ? “停止”:值改变。
并将每个按钮设置为“释放时触发”。
(4)输出隧道设置为“取消未连线时使用默认”。 (5)Case结构中不要包含默认帧。 (6)前面板及部分程序框图如下:
停止
16
LabVIEW实验指导书
*3. 在前面板放置四个控件:门——布尔控件,表示一扇门(鼠标点击表示敲门);敲门次数——控件用来记录时间的次数;停止按钮——布尔控件,用来表示随时停止程序的运行;门把手——指示灯控件,要开门时门把手变绿,不开门时门把手为红色。
要求用事件结构设计,运行程序后,就一直等待事件的发生,此时,如果用鼠标点击“门”一次,则会弹出对话框,显示“您找谁呀?”,如果让其进入,选择“确定”按钮,门把手变“绿”,程序终止;如果不让其进入,选择“取消”,敲门次数显示为1,程序继续等待。
如果再敲门,则显示“对不起,您敲错了!”,确定后,敲门次数显示为2。如果再敲,则显示“错了,请不要再敲了!”,敲门次数显示为3。如果再敲,则显示“如果再敲,我就要报警了!”,敲门次数显示为4。如果还敲,则显示“这里是110,我们正赶往您那儿!”,确定后,程序自行终止。
如果在整个过程中,点击“停止”按钮,程序随时终止。
四、思考题
1.什么是事件?事件结构有哪几部分组成?使用事件结构有何优点? 2.什么是状态机?状态机有哪几部分组成?为什么要使用状态机? 五、实验报告要求
1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。
2.使用公式节点时,如果输入变量的名称同输出变量的名称相同时,会怎样? 3.心得体会及其它。
17
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库《虚拟仪器技术》实验指导书(4)在线全文阅读。
相关推荐: