LabVIEW的高级编程技巧 联系客服

发布时间 : 星期五 文章LabVIEW的高级编程技巧更新完毕开始阅读192aaac72cc58bd63186bd43

LabVIEW的编程技巧

本章介绍局部变量、全局变量、属性节点和其他一些有助于提高编程技巧的问题,恰当地运用这些技巧可以提高程序的质量。

8.1 局部变量

严格的语法尽管可以保证程序语言的严密性,但有时它也会带来一些使用上的不便。在LabVIEW这样的数据流式的语言中,将变量严格地分为控制器(Control)和指示器(Indicator),前者只能向外流出数据,后者只能接受流入的数据,反过来不行。在一般的代码式语言中,情况不是这样的。例如我们有变量a、b和c,只要需要我们可以将a的值赋给b,将b的值赋给c等等。前面所介绍的LabVIEW内容中,只有移位积存器即可输入又可输出。

另外,一个变量在程序中可能要在多处用到,在图形语言中势必带来过多连线,这也是一件烦人的事。还有其他需要,因此LabVIEW引入了局部变量。

8.1.1 局部变量的创建

我们在框图上设置三个变量,两个控制器分别为Numeric和Numeric 2,现在增加局部变量。选择Function→Structures→Local Variable 然后将其拖到框图上,就可得到一个代“?”的图标,下一步将其与框图中已有的变量建立关联,有鼠标右键单击图标,进入Select Item选择“input1” ,最后框图就变成了图7-1右边的样子。

图7-1 局部变量的创建

局部变量只是原变量的一个数据拷贝,但是它的属性可以修改,并且这种改变不会影响原变量。例如上图中的这个局部变量可以利用快捷菜单中的Change To Read 变成一个指示器。这样的一对变量的组合,就使它既可读又可写了。局部变量有三种基本的用途:控制初始化、协调控制功能、临时保存数据和传递数据。下面我们通过练习来说明。

8.1.2 应用举例

练习8-1 用一个开关控制两个循环 ]

该练习中有两个While循环,现在我们用一个开关同时控制它们的运行。面板与框图如上所示。在左边的一个循环中设定了一个开关。右边的循环中做了这个开关的局部变量。并且在快捷菜单中选Chang To Read,最后与循环的条件端子连接。这样就实现了所须的功能。 练习8-1 结束

练习8-2 创建一组互锁的开关

Array

0

面板及框图如上所示。这是一个精巧的程序,它非常简洁地实现了所须的功能,面板上的四个按钮开关,在任何时刻只允许有一个被按下(True状态)。当另一按钮被按下时,原先在按下状态的按钮将自动弹起。下面对程序做几点说明。 1.程序的基本算法:

在While 循环中通过一对移位寄存器将当前数组内容(开关状态)与前一次循环时的数组内容不断比较。如果没有变化,则通过“相等判断”将选择器上输入端的数据送到选择器输出端,并送到移位寄存器。如果有变化,则“相等判断”的输出端将把“F”送到选择器,选择器将选取其下输入端的数据到输出。那么下输入端的数据是什么呢?现在我们举例说明,假如4个开关原来的状态从左到右是“0100”,即开关2闭合。现在按下开关1,则当前数组内容立即变为“1100”与前一状态“0100”逐位做异或运算后,在异或门输出端得到的结果是“1000”,这个结果送给了选择器下输入端,在选择器输出端送到移位寄存器的同时还通过一个Array的局部变量,使数组内容更新为“1000”,即使开关2弹起。 2.局部变量的作用:

循环内的局部变量使得更新后的数据可以写入数组,没有它数组Array只能读,不能写。循环外的局部变量用来将数组初始化。

3.这个程序的巧妙之处还在于直接对整个数组操作,而不是对一个个数组元素操作,如果需要增加面板上的开关个数,只需要改变数组初始化中的元素个数,并在面板上拖出需要的开关个数。

练习8-2 结束

练习8-3 仪器面板控制按钮的完善

在前面的练习6-7中,我们曾给出了一个非常简洁的连续正弦波发生器的例子。框图如上所示。但从使用的角度这个程序不够完善。例如程序启动后开始发生波形,这时如果你希望调试改变波形的频率和幅值。则改完后必须再次重新启动运行。因为这些值是作为程序的初值出现的。这显然不太方便。如果我们希望能在任意时刻调整参数波形都能“立即”响应,则可以利用局部变量来完善按钮的控制作用。一个较完善的程序如下所示。

这是一个正弦波信号发生器,它允许在运行中随时调整参数而不必重新启动。这个程序增加了内外两层循环,并且对幅值、频率设置了两套局部变量,利用内层循环监视当前时刻和前一时刻的值。如果没有变化,信号源持续工作,内循环一直执行下去。如果发现当前时刻和前一时刻的参数发生了变化,则结束内层循环,并使外循环前进一步(执行第二次外循环),相当于程序重新启动,则信号源按新的设置参数运行。另外注意开关的作用,当开关按下时,先终止内层循环,然后终止内层循环,同时Clear generation。 练习8-3 结束

8.2 全局变量

全局变量是LabVIEW中一个与VI地位等同的模块,它以独立文件的形式保存在磁盘中,文件后缀为 .gbl。通过全局变量不同VI之间可以交换数据。

8.2.1 全局变量的创建和调用

创建步骤如下:

1.在Function→Structures下选择Global Variable,将其图标拖到框图中,得到

2.双击Global Variable图标,得到其前面板

3.在其前面板上放上所需要的变量,例如一个数组、一个布尔量、一个字符串变量如

下图所示。