1
LabVIEW 教程
程序结构
循环结构 While 循环
While 循环可以反复执行循环体的程序, 直至到
达某个边界条件 。 While 循环的框图是一个大小可变
的方框, 用于执行框中的程序, 直到 条件端子 接收
到的布尔值为 FALSE 。
条件端子的属性:循环条件和停止条件 。
循环结构 While 循环的特点
1.计数从 0开始( i=0)。
2.先执行循环体,而后 i+1,如果循环只执行一次,那么
循环输出值 i=0。
3.循环至少要运行一次。
循环变量
条件端子
循环结构 While 循环 练习- 1
? 练习4-1 使用 While循环和图表
目的:用 While 循环和图表获得数据,并实时显示。
?? ?? ?a ??
1.0
0.0
0.2
0.4
0.6
0.8
10230
?? oú D? 1?
10.00.0
2.0
4.0 6.0
8.0
?- o2?ó ê±
ON
OFF
图2-2 练习4-1的前面板
循环结构 While 循环 练习- 1
? 创建一个可以产生并在图表中显示随机数的 VI。 前面
板有一个控制旋钮可在 0到 10秒之间调节循环时间,还
有一个开关可以中止 VI的运行。学习怎样改变 开关 的
动作属性,以便不用每次运行 VI时都要打开开关。 操
作步骤如下:
1.选择 File?New,打开一个新的前面板。
2.选择 Controls?Boolean,在前面板中放置一个开关,
设置开关的标签为控制开关。
循环结构 While 循环 练习- 1
3.使用标签工具创建 ON 和 OFF 的标签, 放置于开关旁 。
4.选中 Controls?Graph,在前面板中放置一个波形图 ( 是
chart,而不是 graph) 。 设置它的标签为随机信号 。
这个图表用于实时显示随机数 。
5.把图表的纵坐标改为 0.0 到 1.0。 方法是用标签工具把
最大值从 10.0改为 1.0。
6.选择 Controls?Numeric,在前面板中放置一个旋钮。
设置旋钮的标签为循环延时。这个旋钮用于控制 While
循环的循环时间。
循环结构 While 循环 练习- 1
7.开流程图,按照左图创建流程
图。
a.从 Functions?Structures 中选择
While 循环,把它放置在流程图中。
将其拖至适当大小,将相关对象移到
循环圈内。
b.从 Functions?Numeric中选择随机
数( 0-1)功能函数放到循环内。
c.在循环中设置 Wait Until Next ms
Multiple函数 ( Functions?Time &
Dialog),该函数的时间单位是毫秒,
按目前面板旋钮的标度,可将每次执
行时间延迟 0到 10毫秒。
d.照左面所示的流程图连线,把随机数
功能函数和随机信号图表输入端子连
接起来,并把启动开关和 While 循环
的条件端子连接
循环结构 While 循环 练习- 1
8.返回前面板, 调用操作工具后单击垂直开关将它打开 。
9.把该 VI 保存为 LabVIEW\Activity目录中的 Random Signal.vi。
10.执行该 VI。 While循环的执行次数是不确定的, 只要设置的条件
为真, 循环程序就会持续运行 。 在这个例子中, 只要开关打开
( TRUE), 框图程序就会一直产生随机数, 并将其在图表中显示 。
11.单击垂直开关,中止该 VI。关闭开关这个动作会给循环条件端子
发送一个 FALSE值,从而中止循环。
12.用鼠标右键单击图表,选择 Data Operations?Clear Chart,清
除显示缓存,重新设置图表。
循环结构 While 循环
附注与说明,
布尔开关的机械动作,
布尔开关有 6种机械动作属性可供选择。在前面板上用
鼠标右键单击开关,在快捷菜单中选择 Mechanical
Action就可以看到这些可选的动作。 LabVIEW还提供了
一个范例示范这些动作,它是位于
Examples\General\Controls\booleans.llb的
Mechanical Action of Booleans.vi。
循环结构 移位寄存器( Shift Register)
? 移位寄存器可以 将数据
从一个循环周期传递到
另外一个周期 。在程序
设计中,经常要用到
它.创建一个移位寄存
器的方法是,用鼠标右
键单击循环的 左 边或者
右 边,在快捷菜单中选
择 Add Shift Register。
如右图所示
循环结构 移位寄存器( Shift Register)
? 移位寄存器在流程图上用在循环边框上相应的一对端子来表示。右边的
端子中存储了一个周期完成后的数据,这些数据在这个周期完成之后将
被转移到左边的端子,赋给下一个周期。移位寄存器可以转移各种类型
的数据--数值、布尔数、数组、字符串等等。它会自动适应与它连接
的第一个对象的数据类型。下图表示了它的工作过程 。
循环结构 移位寄存器( Shift Register)
? 可以令移位寄存器记忆前面的 多个周期的数值 。
这个功能对于计算数据均值非常有用。还可以创
建其他的端子访问先前的周期的数据,方法是用
鼠标右键单击左边或者右边的端子,在快捷菜单
中选择 Add Element。例如,如果某个移位寄存
器左边的端口含有三个元素,那么就可以访问前
三个周期的数据。
循环结构 移位寄存器( Shift Register) 练习4-2
? 使用移位寄存器 创建一个可以在图表中显示运行平均数的 VI。
? 1, 打开一个新的前面板, 按照下图所示创建对象 。
? 2, 把波形图表的坐标范围改为 0.0到 2.0。
3.在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择
Mechanical Action?Latch When Pressed,再选择 Operate?Make
Current Values Default,把 ON状态设置为默认状态。
2.0
0.0
0.5
1.0
1.5
500
?? oú êy
Boolean
ON
OFF
è±ê? ?μ £1 ON
oú Dμ ?ˉ 3÷
Latch When
Pressed
循环结构 移位寄存器( Shift Register) 练习4-2
? 流程图
? 按下图创建流程图。
图2-4 练习4-2的流程图
循环结构 移位寄存器( Shift Register) 练习4-2
5.在流程图中添加 While 循环 (Functions?Structures),创建
移位寄存器 。
a,用鼠标右键单击 While循环的左边或者右边, 在快捷菜单中选
择 Add Shift Register。
b,用鼠标右键单击寄存器的左端子, 在快捷菜单中选择 Add
Element,添加一个寄存器 。 用同样的方法创建第三个元素 。
6.Random Number (0–1)函数 ( Functions?Numeric) ——产
生 0到 1之间的某个随机数 。
7.Compound Arithmetic 函数 ( Functions?Numeric) ——在
本练习中, 它将返回两个周期产生的随机数的和 。 如果要加入其
他的输入, 只需用右键单击某个输入, 从快捷菜单中选择 Add
Input。
8.除法函数 ( Functions?Numeric) ——在本练习中, 它用于
返回最近四个随机数的平均值 。

循环结构 移位寄存器( Shift Register) 练习4-2
? 9.数值常数 ( Functions?Numeric) ——在 While循环的每个周
期, Random Number (0–1)函数将产生一个随机数 。 VI就将把这
个数加入到存储在寄存器中的最近三个数值中 。 Random Number
(0–1)再将结果除以 4,就能得到这些数的平均值 ( 当前数加上以
前的三个数 ) 。 然后再将这个平均值显示在波形图中 。
? 10,Wait Until Next ms Multiple函数 ( Functions?Time &
Dialog) ——它将确保循环的每个周期不会比毫秒输入快 。 在本
练习中, 毫秒输入的值是 500毫秒 。 如果用鼠标右键单击图标,
从快捷菜单中选择 Visible?Label,就可以看到 Wait Until Next
ms Multiple的标签 。
11.用鼠标右键单击 Wait Until Next ms Multiple 功能函数的输入
端子,在快捷菜单中选择 Create Constant。出现一个数值常数,
并自动与功能函数连接。
循环结构 移位寄存器( Shift Register) 练习4-2
? 12.将 Constant设置为 500。 这样连接到函数的数值常
数设置了 500毫秒的等待时间 。 因此循环每半秒执行一
次 。 注意, VI用一个随机数作为移位寄存器的初始值 。
如果没有设置移位寄存器端子的初始值, 它就含有一
个默认的数值, 或者上次运行结束时的数值, 因此开
始得到的平均数没有任何意义 。
? 13.执行该 VI,观察过程 。
? 14.把该 VI 保存为 LabVIEW\Activity目录下的 Random
Average.vi。
循环结构 移位寄存器( Shift Register)
?附注,移位寄存器的初值
? 上面的练习中对移位寄存器设置了初
值 0.5。如果不设这个初值,默认的初值
是0。在这个例子中,一开始的计算结
果是不对的,只有到循环完3次后移位
寄存器中的过去值才填满,即第4次循
环执行后可以得到正确的结果。
循环结构 For循环
? For循环用于将某段程序执行 指定次数 。 和 While 循环一样, 它
不会立刻出现在流程图中, 而是出现一个小的图标, 而后您可
以修改它的大小和位置 。 具体的方法是, 先单击所有端子的左
上方, 然后按下鼠标, 拖曳出一个包含所有端子的矩形 。 释放
鼠标时就创建了一个指定大小和位置的 For循环 。
循环结构 For循环
?For循环将把它的框图中的程序执行指定的次
数, For循环具有下面这两个端子:
?N,计数端子 ( 输入端子 ) ——用于指定循环
执行的次数 。
?I,周期端子 ( 输出端子 ) ——含有循环已经
执行的次数 。
? 上图显示了一可以产生 101个随机数并将数据
显示在一个图表上的 For循环 。 在该例中, i
的初值是 0,终值是 100。
循环结构 For循环 练习4 -3
目的:用 For循环和移位寄存器计算一组随机数的 最大值 。
? 1, 打开一个新的前面板, 按照下图创建对象 。
? a,将一个数字显示对象放在前面板, 设置它的标签为, 最大值, 。
? b.将一个波形图表放在前面板, 设置它的标签为, 随机数, 。 将
图表的纵坐标范围改为 0.0到 1.0。
循环结构 For循环 练习4 -3
? a.在图表的快捷菜单中选择 Visible Items?Scrollbar和 Digital
Display,并隐藏 Plot Legend。
? 用移位工具修改滚动栏的大小 。
循环结构 For循环 练习4 -3
? 2, 按照上图画流程图 。
? 3 在 流 程 图 中 放 置 一 个 For 循环
( Functions?Structures) 。
? 4, 在 For循环的边框处单击鼠标右键, 在快捷菜单中
选择 Add Shift Register。
? 5, 将下列对象添加到流程图 。
? a Random Number (0–1) 函数
( Functions?Numeric) ——产生 0到 1之间的某个随机
数 。
? b.数值常数 ( Functions?Numeric) ——在这个练习中
需要将移位寄存器的初始值设成 0。
循环结构 For循环 练习4 -3
?c.Max&Min函数 ( Functions?Comparison) —
—输入两个数值, 再将它们的最大值输出到右
上角, 最小值输出到右下角 。 这里只需要最大
值, 只用连接最大值输出 。
?d.数值常数 ( Functions?Numeric) ——For循
环需要知道需要执行的次数 。 本练习中是 101
次 。
? 6, 按照上图连接各个端子 。
? 7, 运行该 VI。
? 8, 将该 VI保存为 LabVIEW\Activity 目录下
的 Calculate Max.vi。
循环结构 分支结构,Case
? Case结构含有两个或者更多的子程序 ( Case),执行那
一个取决于与选择端子或者选择对象的外部接口相连
接的某个整数, 布尔数, 字符串或者标识的值 。 必须
选择一个默认的 Case以处理超出范围的数值, 或者直
接列出所有可能的输入数值 。 Case结构见下图, 各个
子程序占有各自的流程框, 在其上沿中央有相应的子
程序标识,Ture,False或1, 2, 3 … 。 按钮用来改
变当前显示的子程序 ( 各子程序是重叠放在屏幕同一
位置上的 ) 。
循环结构 分支结构,Case
?目的:创建一个 VI以检查一个数值是否
为正数。如果它是正的,VI就计算它的
平方根,反之则显示出错。
子程序标识
按钮
条件端子
分支结构 练习
?前面板
? 步骤
1,打开一个新的前面板, 并按照下图所示
创建对象 。 控制对象用于输入数值, 显
示对象用于显示该数值的平方根 。
2,照下图创建流程图 。
分支结构 练习
2.00
Number
1.41
SQRT
分支结构 练习
3,从 Functions?Structures中选择一个 Case结
构,并放置在在流程图中。 Case 结构是一个
可以改变大小的方框。先来做 Ture的情况,
照流程图上半部分构造。
? Greater Or Equal To 0? 函数
( Functions?Comparison) ——如果输入
数值大于或者等于 0就会返回一个 TRUE值。
? Square Root 函数
( Functions?Numeric) ——返回输入数
值的平方根。
分支结构 练习
? Square Root 函数( Functions?Numeric) —
—返回输入数值的平方根
? 连好线
? 点击 Case框的选择按钮,转入 False情况编程
? 数值常数( Functions?Numeric) ——这里用
于显示错误的代数值 -999.00
分支结构 练习
? One Button Dialog函数( Functions?Time &
Dialog)在这里它用于显示一个对话框,内
容是 Error…
? 字符串常数 (Functions?String)——用 Edit
Text Tools在对话框中输入字符串
? 该 VI在 TRUE或者 FALSE情况下都会执行。如果
输入的数值大于等于 0,VI会执行 TRUE Case,
返回该数的平方根,否则将会输出- 999.00,
并显示一个对话框,内容为 Error...
分支结构 练习
4,返回前面板,运行该 VI。修改标签为
Number的数字式控制对象的数值,分别
尝试一个正数和负数。注意,当把数字
式控制对象的值改为负数时,LabVIEW
会显示 Case结构的 FALSE Case中设置的
出错信息
5,保存该 VI 到 LabVIEW\Activity 目录
中的 Square Root.vi
分支结构 练习
?VI程序代码
if (Number >= 0) then
Square Root Value = SQRT(Number)
else
Square Root Value = -999.00
Display Message ―输入数据错误! "
end if
顺序结构和公式节点
?在代码式的传统编程语言中,默认的情
况是,程序语句按照排列顺序执行,但
LabVIEW中不同,它是一种图形化的数
据流式编程语言
A
D
C
B
使用顺序结构练习
?创建一个 VI,计算生成等于某个给定值
的随机数所需要的时间
?生成前面板如图
50
·? ?¨êy ?Y
50
μ±?°?μ
6
?′ D ′? êy
0.00
?¥ ?? ê±?? £¨?? £?
使用顺序结构练习
使用顺序结构练习
?执行步骤演示如下
附注与说明,设置数据范围
?在设定一个数据对象时,可以设置对输
入数据的限制,利用快捷键选择 Data
Range… 选项,将会出现如下对话框,
它可以防止用户创建的控制
对象或显示对象的值超出某
个预设的范围。您可以选择
忽略这个值,将它强制修改
到范围以内,或暂停程序的
执行。在程序执行时,如果
发生溢出错误,溢出错误符
号将显示在工具栏中的执行
按钮的位置。而且,一个立
体的黑框将把发生溢出的控
制对象包围起来
公式节点( Formula Node)
? 公式节点是一个大小可变的方框,可以利用它直接在
流程图中输入公式。从 Functions?Structures中选择
公式节点就可以把它放到流程图中。当某个等式有很
多变量或者非常复杂时,这个功能就非常有用。例如
等式,y = x2 + x + 1使用公式节点可以表示为,
公式节点例子
? if (x >= 0) then
? y = sqrt(x)
? else
? y = -99
? end if
outputinput Y=(X>=0)?sqrt(X):-99;
YX
? 注意:字母大小写是
有区别的。
练习使用公式节点
?前面板如图
30.00
m
20.00
b
1000.0
0.0
200.0
400.0
600.0
800.0
100 1 2 3 4 5 6 7 8 9
y1
y2
Waveform Graph
公式节点练习
?流程图