LabVIEW局部变量全局变量共享变量
各种软件开发环境都提供变量的概念,如LabVIEW,Teststand,Labwindows/cvi,visual Studio中的局部变量,全局变量;当然LabVIEW也有自己的特有的变量,如共享变量和功能性全局变量;Teststand的文件变量,站变量;
本文将主要讲解一下LabVIEW的局部变量,全局变量,功能性全局变量和共享变量;
局部变量
- 01
创建局部变量时,该对象的局部变量的图标可显示在程序框图上。写入一个局部变量相当于将数据传递给其它接线端。但是,局部变量还可向输入控件写入数据和从显示控件读取数据。事实上,通过局部变量,前面板对象既可作为输入访问也可作为输出访问。 LabVIEW创建LabVIEW局部变量有2中方案;
- 02
1)LabVIEW程序框图-查看(菜单)-函数选板-函数-编程-局部变量,然后点击程序框图上的局部变量,选择前面板需要创建的控件,如创建布尔全局变量;
- 03
2)选择前面板上面的控件,右击-创建-局部变量,可以一次选择一个控件创建局部变量,也可以同时选择多个控件创建局部变量;
- 04
所有的控件创建的局部变量默认是显示型局部变量;显示型局部变量可以转换成写入,输入型的局部变量可以转换成读取;
全局变量
- 01
全局变量可在多个VI之间访问和传递数据;创建全局变量时,LabVIEW可自动创建有前面板,但无程序框图的特殊全局VI。 LabVIEW创建LabVIEW全局变量有2中方案;
- 02
1)LabVIEW程序框图-查看(菜单)-函数选板-函数-编程-全局变量,然后双击打开程序框图上的全局变量,在全局变量的前面板放置需要传递数据的同种类型的控件;
- 03
2)文件(菜单)-新建(N)-其他文件-全局变量;
- 04
全局变量的在不同VI之前传递数据,只需要从程序框图-函数-选择VI...;
功能型全局变量
- 01
局部和全局变量是高级的LabVIEW概念。它们不是LabVIEW数据流执行模型中固有的部分。使用局部变量和全局变量时,程序框图可能会变得难以阅读,因此需谨慎使用。错误地使用局部变量和全局变量,如将其取代连线板或用其访问顺序结构中每一帧中的数值,可能在VI中导致不可预期的行为。滥用局部变量和全局变量,如用来避免程序框图间的过长连线或取代数据流,将会降低执行速度。
- 02
为了解决局部变量和全局变量的“竞争冒险”潜在危险和复制数据副本的缺点,在LabVIEW中可以使用功能型全局变量(移位寄存器将数据空间强制共享)代替全局变量的使用。
- 03
功能全局变量是使用未进行初始化的移位寄存器的循环来保持数据的VI。功能性全局变量通常有一个动作输入参数,用于指定VI执行的任务。VI在While循环中使用一个未初始化移位寄存器,保存操作的结果。
- 04
使用一个功能全局变量而不是多个本地或全局变量可确保每次只执行一个运算,从而避免运算冲突或数据赋值冲突。
共享全局变量
- 01
使用共享变量,您可以在同一个程序框图的不同循环之间或者网络上的不同VI之间共享数据。与LabVIEW中其他现有的数据共享的方法如UDP/TCP, LabVIEW 队列, 及实时 FIFO不同,您通常在编辑时使用属性对话框来配置共享变量,而不需要在您的应用中包括配置代码。
- 02
可以创建三种类型的共享变量:单进程,网络发布,以及时间触发的共享变量。本文详细讨论了单进程和网络发布共享变量。创建一个共享变量时,需要右键点击一个计算机设备,如项目树中的"我的电脑"或实时目标,并选择 新建» 变量来显示共享变量属性对话框。在对话框中可对新的变量进行具体配置。
- 03
1)使用单进程变量在同一个VI中不能用连线传输的不同位置间传递数据,例如同一个VI的并行循环之间,或者同一应用实例中的两个不同VI之间。单进程共享变量的底层实现与LabVIEW中全局变量相似。单进程共享变量相对于传统的全局变量的主要优点是能够将一个单进程共享变量转换成一个网络发布的共享变量,这样网络上的任何节点都可以访问。2)利用网络发布的共享变量,您可以在以太网上对共享变量进行读写操作。网络应用的处理完全由网络发布的变量完成。 除了使您的数据在网络中可用,网络发布共享变量中还增加了许多单进程共享变量不能提供的功能。由于需要提供各种附加功能,网络发布的共享变量的内部实现要比单进程共享变量复杂得多。
- 04
VI和VI2分别是读写共享变量;