b Square Root 函数(Functions?Numeric)——返回输入数值的平方根。
c 连好线
d 点击Case框的选择按钮,转入False情况编程
e 数值常数(Functions?Numeric)——这里用于显示错误的代数值-999.00。
f One Button Dialog函数(Functions?Time & Dialog)——在这里它用于显示一个对话框,容是Error...。
g 字符串常数 (Functions?String)——用Edit Text Tools在对话框中输入字符串。
h 该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
练习 2-4 结束。
2.3 顺序结构和公式节点
2.3.1 顺序结构(Sequence Structure)
在代码式的传统编程语言中,默认的情况是,程序语句按照排列顺序执行,但LabVIEW中不同,它是一种图形化的数据流式编程语言。在图2-7左图中,假设有A、B、C、D4个节点,其数据流向如右图所示。按照数据流式语言的约定,任何一个节点只有在所有
ABCD图2-7 顺序结构的说明
的输入数据有效时才会执行,所以图中,当且仅当A、B、C3个节点执行完,使得D节点的3个输入数据都到达D节点后,D节点才执行。但是你要注意,这里并没有规定A、B、C3个节点的执行顺序。在LabVIEW中这种情况下,A、B、C的执行顺序是不确定的,如果你需要对它们规定一个确定的顺序,那就需要使用本节介绍的“顺序结构”。
图2-7中的右边是顺序结构的图标,它看上去像是电影胶片。它可以按一定顺序执行多个子程序。首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。与Case结构类似,这多帧程序在流程图中占有同一个位置。
练习 2-5 使用顺序结构
目的:创建一个 VI,计算生成等于某个给定值的随机数所需要的时间。
前面板
1. 打开一个新的前面板,并按照下图所示创建对象。
给定数据50当前值50执行次数6匹配时间(秒)0.00
图2-8 练习2-5的前面板
我们约定数据是0到100围的整数。当前值用于显示当前产生的随机数。“执行次数”用于显示达到指定值循环执行的次数。匹配时间用来显示达到指定值所用的时间。
流程图
图2-8 练习2-5的流程图(共3帧)
1. 在流程图中放置顺序结构(Functions?Structures)。
2. 用鼠标右键单击帧的边框,在快捷菜单中选择Add Frame After,创建一个新帧。重复这个步骤,再创建一个帧。共3桢。
3. 选中第0桢,设置读取初始时间(子)程序 4. 第0帧的下边框上含有一个小方框,其中有一个箭头。这个方框叫做顺序局部变量,可以在同一个顺序结构中的各个帧之间传递数据。用鼠标右键单击第0帧的底部边框,选择Add Sequence Local,创建顺序局部变量。顺序局部变量显示为一个空的方块。当您将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。
5. Tick Count (ms) 函数(Functions?Time & Dialog)——返回启动到现在的时间(以毫秒为单位)。在这里例子里需要使用两个这个函数。另一个在第2帧中。
6. 按图连好线。转入第1帧。该帧是匹配计算,含一个循环结构。该图中使用的新函数有:
Round to Nearest函数(Functions?Numeric)——在
附注与说明:设置数据围该例中,它用于取0到100之间的随机数到距离最近的整数。
Not Equal?函数(Functions? Comparison)——在该
例中,它将随机数和前面板中设置的数相比较,如果两者不相等会返回TRUE值,否则返回FALSE。
Increment函数(Functions?Numeric)——在该例中,
它将While循环的计数器加1。
7. 按图连好线。转入第2帧
在第0帧中,Tick Count (ms)功能函数将以毫秒为单位表示当前时间。这个数值被连到顺序局部变量,这样它就可以被后续的帧使用。在第1帧中,只要函数返回的值与指定值不等,VI就会持续执行While循环。在第2帧中,Tick Count (ms)功能函数以毫秒为单位返回新的时间。VI从中减去原来的时间(由第0帧通过顺序局部变量提供)就可以计算出花费的时间。
8. 返回前面板,在Number to Match控制对象中输入一个数值,执行该VI。
9. 把该VI保存为LabVIEW\\Activity 目录下Time to Match.vi。
练习 2-5 结束。
在设定一个数据对象时,可以设置对输入数据的限制,利用快捷键选择Data Range… 选项,将会出现如下对话框:
图2-9 设置数据围
它可以防止用户创建的控制对象或显示对象的值超出某个预设的围。您可以选择忽略这个值,将它强制修改到围以,或暂停程序的执行。在程序执行时,如果发生溢出错误,溢出错误符号将显示在工具栏中的执行按钮的位置。而且,一个立体的黑框将把发生溢出的控制对象包围起来。
2.3.2 公式节点(Formula Node)
公式节点是一个大小可变的方框,可以利用它直接在流程图中输入公式。从Functions?Structures中选择公式节点就可以把它放到流程图中。当某个等式有很多变量或者非常复杂时,这
个功能就非常有用。例如等式:y = x + x + 1使用公式节点可以表示为:
2
图2-10 公式节点示意图
利用公式节点可以直接输入一个或者多个复杂的公式,而不用创建流程图的很多子程序。使用文本编辑工具来输入公式。创建公式节点的输入和输出端子的方法是,用鼠标右键单击第0帧的底部边框,选择Add Input (Add Output)。再在节点框中输入变量名称。变量名对大小写敏感。然后就可以在框中输入公式。每个公式语句都必须以分号(;)结尾。
公式节点的帮助窗口中列出了可供公式节点使用的操作符、函数和语法规定。一般说来,它与C语言非常相似,大体上一个用C写的独立的程序块都可能用到公式节点中。但是仍然建议不要在一个公式节点中写过于复杂的代码程序。
下面这个例子显示了如何在一个公式节点中执行不同条件时的数据发送。
请阅读下面这段程序代码,如果X为正数,它将算出X的平方根并把该值赋给Y,如果X为负数,程序就给Y赋值-99。
if (x >= 0) then
y = sqrt(x) else
y = -99 end if
可以用公式节点取代上面这段代码,如下图所示:
inputXY=(X>=0)?sqrt(X):-99;Youtput
注意:公式节点中变量字母X,Y大、小写是有区别的,开方
相关推荐: