与其他通用编程语言一样,LabVIEW中也有局部变量和全局变量的概念,用来控制变量的作用范围。
局部变量
局部变量的作用范围仅为其所在VI,其他VI对该局部变量不可见。
在LabVIEW中添加一个局部变量有两种方法。
(1)方法一:在框图上用鼠标右键单击欲创建局部变量的控件端子,在右键菜单中选择“创建→局部变量”,就可创建一个对应于该端子的局部变量,再拖放到合适的位置即可。
(2)方法二:在函数选板中选择“编程→结构→局部变量”,创建一个空的局部变量,这时其形如,中间为问号,表示尚未和任何控件相关联。要关联到某个控件,只需单击问号,再选择欲对应的控件即可。
与其他通用编程语言不同的是,在LabVIEW中将局部变量严格地区分为“读取”或“写入”状态,“读取”状态的局部变量只能作为数据源供程序取用,“写入”状态的局部变量只能接受数据对其写入,某个局部变量只能为其中的一种。
新创建的局部变量默认为写入状态,如果要在读取状态和写入状态之间切换,可通过在鼠标右键菜单中选择“转换为读取”或“转换为写入”来改变。
局部变量常用来初始化变量或者在一个VI内共享变量。在创建和使用局部变量时需注意:
(1)局部变量不可用于机械动作设置为触发的按钮。所谓按钮的机械动作是指按钮对用户单击后的响应动作,可以有六种类型。在按钮的右键菜单中“机械动作”子菜单下列出了这六种类型,并以图标形式形象地描述了其含义
VI是否读取会影响到触发型机械动作的按钮值的状态,因此,如果对触发型的按钮使用局部变量,那么第一个读取的局部变量会影响按钮值,所以在LabVIEW中不允许对触发型的按钮创建局部变量,也不允许将已创建了局部变量的按钮的机械动作设置为触发型,否则LabVIEW会自动检出错误,VI不能执行。
其实如果对时延长短没有严格要求,用转换型的按钮并结合局部变量对其写入值,也可在功能上模拟并代替触发型按钮,读者可自行编程练习。
(2)不可滥用局部变量。因为局部变量实际上截断了数据流,一定程度上与LabVIEW数据流编程的思想不符,如果滥用局部变量,不仅不易阅读,还有可能会造成意想不到的情况,如竞争写入,在条件允许下应尽量使用连线代替局部变量。
(3)每个局部变量是对原变量数据的一份内存拷贝。对占用内存较多的变量(如大数组)过多地使用局部变量,会造成内存使用量加剧,降低程序性能。如果在循环中需要对大数组读写,可考虑使用移位寄存器代替局部变量。