Menu:

第5章  控制程序流(8)


局部变量(本地变量)


局部变量的定义

     局部变量提供了一种方法,它允许用户在一个vi的程序框图的任何地方无须连线直接对前面板上的对象(控制器和指示器)进行读写,并且没有放置数量上的限定。


     如果你曾经使用过控件和指示器的属性节点的话,也会看看到类似的效果。但是二者之间还是有着本质上的不同,关于这方面的内容请看《学习札记》4.1.3中的相关介绍。


局部变量的主要特点

1、局部变量只能作用在同一个VI(这里用大写字母表示)内的控件或指示器上
     这是很显言的,从它的名称“局部”就可以领会到它的这个特点。所以用户不可以用它去访问其它VI上的控件或指示器。
     由于VI本身具有层次结构,所以包含在这个VI中的其它子vi的端口也可以使用该局部变量。

2、一个局部变量就是一个控件或指示器的数据拷贝
     由于
一个局部变量就是一个控件或指示器的数据拷贝,所以大量的使用会占用大量的内存,特别是在数组或大数据量使用时要特别的注意。在这种情况下使用属性节点会好些(属性节点速度慢些)。

3、局部变量破坏了数据流的关系
     由于局部变量可以到处使用,特别是它没有任何公共线程,所以使数据流的关系受到了破坏。
     注意属性节点有公共线程可利用,所以在需要时可以保证数据流的关系存在。

4、大量的使用可能会带来程序修改的麻烦
     事实上,大量使用局部变量是没有数量上的限制的,可是如果使用量过大,可能会导致某处修改时,无法考虑到其它处应用条件。一旦不小心修改后,可能会带来更大的麻烦。
     另外大量使用时很难保证不存在竞争现象。竞争就是指在同一时刻对局部变量进行读、写操作,导致最终结果不确定。


局部变量的几个应用实例

     局部变量使用最多的地方可能就是实现程序的初始化控制。


     假如又一个电加热控制电路,我们希望工作开始不加电,然后人工控制是否加电。
     通过局部变量在开始时对Switch进行不加电的使能控制,在顺序结构执行完初始化后,利用人工数据关系在做While循环,同时也避免了状态的竞争。




     用局部变量(一个开关)控制两个并行的While循环停止运行。仅看两个While循环的程序是没有问题的。问题出在,开关是一个机械开关单掷开关,当开关接通后仍停留在接通的位置,在下次程序运行就自动接通进行工作了(能够建立局部变量的第一种开关只能这样),而我们希望下次程序运行时开关处于断开状态。
     在开关停止后加了一个相当于加入了一个自动复位电路,就解决了这个问题。