LabVIEW的程序结构
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在层叠式顺序结构的边框上面右击,选择Add Sequence Local即 可在当前帧创建一个顺序局部变量端口。
将本帧中的数据连接到该局部变量端口,该数据就可传到后面的 帧,该数据不会作用到它前面的帧。
如下图示意了层叠式顺序结构通过局部变量传递数据的 情况。在标识是1号帧的一个数据传递到标识是2号的帧 进行“或”运算,0号帧不能使用该数据。
下面是用移位寄存器(左图)和反馈节点(右图)实现 a++的框图程序。
2 While循环 For循环和While循环的区别:
For循环要执行预先指定的循环次数。
而While循环只有在条件端口接收到的值为 False(or:True)时才停止循环。While循环不必知道循 环次数。 While循环不满足条件也要执行1次。 For循环当N<1时1次都不执行。
在message数据端口新建一个常量,输入“超时或单 击了OK按钮”。
在超时端口连接值为5000的一个数字常量。
运行程序,如果单击了“OK Button”按钮或等待5秒都 会显示出对话框“超时或单击了OK按钮”。
法2:
在事件结构边框的快捷菜单中选择Add Event Case…来 创建事件结构的一个分支 。 在弹出的对话框中,选取“EventSources”事件源窗口 中的“OK Button” 。并在“Event”事件窗口中选择 “Value Change” 。 后面的设置与法1类似。
超时端口,默认
值为-1,表示无 限等待 。
事件数 据端口
结构框
2.事件结构的使用
可有一个或多个子图形代码框,该图形代码框可以设置为响应多 个事件。 右击事件结构边框,从弹出的快捷菜单中选择Edit Events Handled by ThisCase…,这时将弹出编辑事件对话框。 显示当前建立的事件, 默认“Timeout’事件。 增加事件 删除事件
可以选择 的事件源
相应的事件源可 产生的事件消息
例如:建立一个5秒的超时事件和一个“OK Button” 开 关值发生变化的事件
要求:
方法1:任一事件发生都执行同一个子图形代码框程 序,显示出对话框“超时或单击了OK按钮”。
方法2:由不同的框图程序响应不同的事件,显示出 对话框“超时事件”或“单击了OK按钮事件”。
循环边框 循环框 计数端口
2.For循环的工作流程
For循环用于将结构中的程序循 环执行指定的次数。
在开始For循环之前,从循环次 数端口读入循环次数,计数端 口输出0值。 接下来执行For循环框内框图代 码程序,每执行一次计数端口 值自动加1。
i=0 循环次数=N
循环次数=0
Ture 结束循环
CASE0 (Add),VI就进行加法运算,CASE1,则VI将进行减法运算。 使用了一个数字型Text Ring控制器(在控制模板中的Ring&Enum子 模板中) 注意:当在一个子Case中建立了一个输出数据通道后,必须给每一 个子Case定义输出数据通道。
例子
设定默认的子CASE, 当所有条件都不满足 时,执行默认子CASE
在添加端口后出现的方框内填入变量名称。
将输入端口和程序中的数据端口相连接。 将输出端口和程序中的指示端口连接
公式节点中常用的运算符
其中,条件运算符的“?”前的部分是判定条件,“?”和 “ :”间的部分为当条件为True时的表达式,“ :”后的部 分为当条件为False时的表达式。
公式节点语句中还可以使用数学函数:abs、acos、 acosh、asin、asinh、atan、atan2、atanh、ceil、cos、 cosh、cot、csc、exp、expml、floor、getexp、getman、 int、intrz、ln、lnp1、log、log2、max、min、mod、 pow、rand、rem、sec、sign、sin、sinc、sinh、 sizeOfDim、sqrt、tan、tanh。
计数端口用于统计循环执行的次数,While循环每执行 一次,计数端口的值就加1。 计数端口从零开始计数,也就是说,在第一次循环结 束时,计数端口的值为0,如果循环执行了10次,则计 数端口的值为9。 While循环也具有数据通道索引和移位寄存器、反馈接 点的功能,它们的用法与For循环相同,只是While循 环的边框数据通道默认为不能索引。
4 顺序结构
• • LabVIEW是一种数据流程序设计语言,没有明确的先后顺序,当 节点所有输入端的数据全部有效时,节点才执行。 Sequence结构,它是一种先后顺序执行的结构,看上去象电影胶片 的帧(Frame),每一帧为一段框图程序,按照帧(Frame)的顺 序来执行框图程序。 两种形式顺序结构,Flat Sequence Structure平铺式顺序结构和 Stacked Sequence Structure层叠式顺序结构。功能相同,区别仅在 于表现形式不同。
3.设置选择结构的默认项
应设置一个默认项来处理超出条件选项范围的情况。 设置选择结构默认项的方法是在选择结构边框上单击鼠 标右键,选择Make This The Default Case。
4.选择结构数据通道的设置
输入数据时,每个子Case框可连可不连数据通道。
输出数据时,每个子Case框必须为通道连接数据。否 则程序不能运行,这时通道的图标是空心的,只有为 每个子Case框的数据端口都连接数据后,图标才变成 实心。 Use Default if Unwired可使程序中没有连线的子Case框 输出默认值。
6 公式节点
在框图程序中,如果需要设计较复杂的数学运算,框图 将会十分复杂,工作量大,而且不直观,调试、改错也 不方便。 利用公式节点,只需将数学公式的文本表达式输入在公 式节点的框图内,并连接相应的输入、输出端口,则 LabVIEW会自动地根据公式计算出正确的结果,并从输 出端输出。
(1)公式节点的创建
LabVIEW的程序结构
主要的程序结构有:
循环(While循环和For循环)
选择(Case结构)
顺序(Sequence结构,分为平铺式和层叠式) 事件(Event结构)
1 For循环 1.For循环的创建
基本的For循环结构由循环框、循环次数端口和计数端 口组成。
循环次数端口
例如:下图中通道自动索引功能有效时,每一次循环产生一个新的 数据,存储在循环的边框通道上,待循环结束以后,产生的6个数据 将传送到一个数组指示器中。自动索引功能无效时,只有最后一次 For循环产生的1个随机数传到循环外。
空心
实 心
பைடு நூலகம்
4.移位寄存器
创建:右击边框,弹出一个菜单,选择Add Shift Register选项,可添 加一个移位寄存器。 用途:主要用于While循环和For循环,将上一次循环的值传给下一次 循环。 数据类型: 数字型、布尔型、字符串等 。 初始化:在循环外将初始值连到移位寄存器的左端口,有默认初值。 还可以存储前几次循环的值,在移位寄存器的左端口或右端口上右 击鼠标弹出菜单,选择Add Element选项,可创建附加的左端口来存 储前几次循环的值。
1. 顺序结构的创建
在函数模板的Structures子模板中选择创建顺序结构。选取 Stacked Sequence Structure层叠式顺序结构 。 在结构边框上面单击鼠标右键,从弹出的快捷菜单中选择“Add Frame After”或“Add Frame Before”可以增加子图形代码框。 在结构边框上右击弹出的快捷菜单,选择Replace→Replace with Flat Sequence,可以将层叠式顺序结构变换为平铺式顺序结构
例:使用Sequence结构,设计一个VI,
计算产生一个与指定的数字相等的随机 数所需花费的时间。
读取定时器的当前值 四舍五入取 整
VI程序每隔 10ms执行循环
5 事件结构
1.事件结构的创建
事件结构包括:结构框、事件标签、超时端口和事件数据端口。 事件标签 :说明当前框图程序是响应
的什么事件 。
False 循环体
循环次数达到设定值后,退出 循环。
i=i+1
循环次数-1
FOR循环执行流程
3.For循环的数据通道与自动索引
数据通道是用连线工具连接循环框内外的数据端口时, 在框架上自动形成的方形通道图标 。
图标空心表明此时数据通道具有自动索引功能,实 心图标不能索引 。
自动索引是指将循环框外面的数组成员逐个依次进 入循环体内,或将循环框内的数据累加成一个数组 输出到循环框外面。
从函数模板的Structures子模板上选择公式节点 Formula Node,在框图中设置公式节点。 公式节点的边框大小可以改变,用户可以使用标签工 具,将数学公式直接输入到公式节点的框内。
(2)公式节点的使用
可以声明变量,也支持一些常用的C语言的语句(包 括赋值语句、条件语句、循环语句、Switch语句), 每条语句以分号结尾。 输入公式后,需要添加输入、输出端口。
法1:
在前面板添加放置一个“OK Button” 控件 。 在编辑事件对话框中单击按钮 新建一个事件,选取 “EventSources”事件源窗口中的“OK Button”,并在 “Event”事件窗口中选择“Value Change” 。 选取OneButtonDialog函数,放置在Event Structure中。
公式节点中可使用
IF条件语句,
for和do { }、while循环 Swtich ( ) case分支语句
公式节点的语法与C语言相同
例:用公式节点计算y1=x3+x2+5和y2=m*x+b 分析:
1.While循环的创建
While循环由循环框、条件端口和计数端口组成。
循环边框
循环 框 计数端口 条件端口
2.While循环的工作流程
条件端口控制循环的停止与否。
条件端口有两种状态 : 当使用状态为Stop if True 时,若输入值为Ture, 则停止循环 。若输入值为False,则继续执行下一 次循环。 当使用状态为Continue if True 时,若输入值为 Ture,则继续执行下一次循环。若输入值为False, 则停止循环。 循环结束后,才去检测条件端口的值,因此不管条件 是否成立,循环至少要执行一次。
例:求 S
X M
X
N
3
( M N , 且 X , M , N 均为整数)
5.反馈节点 功能:在循环中,将数据从一次循环传递到下一次循环。 反馈节点箭头的方向表示数据流的方向。 反馈节点和移位寄存器可以互换,在反馈节点或移位寄 存器图标上弹出快捷菜单选Replace with shift Register或 Replace with Feedback Node即可。 移位寄存器左端口多于1个时不能转换为反馈节点。
2.顺序结构的工作方式
数据传递至顺序结构时,层叠式从标识0开始执行,依次顺序 执行;平铺式从左至右执行所有子图形代码框。 从结构外面向顺序结构写数据时,可连接可不连接这个数据 通道;但是当顺序结构向外输出数据时,各个图形代码框中 只能有一个连接这个数据通道。 代码框之间的数据传递,平铺式可从一帧直接连线到另一帧 来传递数据,层叠式则需要通过局部变量——Sequence Local 来传送数据。
用While 循环实现求X的立方和(P54)
3 Case结构 1.Case结构的创建
Case结构由选择框架、选择端口、选择器标签,以及 递增/递减按钮组成。
选择标签
递减按钮
递增按钮
选择端口
选择框架
2.Case结构的工作流程
Case结构有一个条件选择端口 (Selector),根据连 到该端口 的值来判断执行哪一个子Case。 Selector端口的数据类型有布尔型、数字型和字符串型。