Labview--常用的数据传递

LabView中数据的传递方式主要是:
1.移位寄存器(功能性全局变量)2.反馈节点3.局部变量4.属性节点值5.其他(主要包括:全局变量,队列,共享变量等等,在这里不进行阐述)

labview是数据流驱动的,其中,反馈节点和移位寄存器属于数据流,局部变量和属性节点值属于非数据流。如果你程序中使用了大量局部变量和属性节点,那么你的程序肯定违背了介绍中的这条信息,而破坏了数据流。而且局部变量与属性节点较慢,这也奠定了局部变量与属性节点在labview中的地位,是用来扫尾工作的。

1.移位寄存器的原理是:右边端子储存了每次循环得到的数据,然后在下次循环之前传送到左边的端子,赋值给下次循环。传送的数据类型包括数字,布尔值,字符串和数组,并且会自动适应与它连接的第一个对象的数据类型。对于移位寄存器的初始化方法是采用把一个控制或者常数控件连接在移位寄存器的左边端子。初始化移位寄存器相当于设置寄存器传给第一次循环的值。寄存器会保留上次运行的最终值,所以每次工作必须初始化移位寄存器。
Labview--常用的数据传递_第1张图片
                                      图一:创建多个不同类型的SR
2.反馈节点:这是一个用于循环间数据传输的新的功能节点。当用户把循环内的子VI,函数等对象的输出端连接到同一个对象的输入端的时候,就会自动形成一个反馈节点。像移位寄存器一样,反馈节点在循环结束的时候储存数据,并且把数据传送到下一个循环(可以是任意类型)。反馈节点的箭头方向为数据流的传输方向。也需要初始化输入初值。反馈节点与移位寄存器功能相仿,并可以省去不必要的连线。
Labview--常用的数据传递_第2张图片
                       图二:初始值为0,延迟为3的反馈节点的输出情况。


3.局部变量:在LabView中,变量是显示在后面板中的,因为后面板是用来写程序的,变量是程序的组成部分。LabView中的局部变量只是将控件的值重新复制了一份而后调用它。局部变量用于读写一个VI的前面板对象,对象是控制器或者指示器都可以,当我们读局部变量的时候,我们是在对象的当前状态,而对象在程序框图中的其它位置,其它的线程可能连续写这个对象,所以LABVIEW无法重用内存,不得不拷贝数据到新的缓冲区中,如果数据结构很大,就会占用相当多的内存。通过局部变量可以在一个VI中访问或者存储数据,通常这些数据都是存储在不同的显示或者输入控件当中,所以说局部变量不是单独存在的,每一个局部变量都是与特定的控件相对应的,一个控件可以生成许多局部变量,就相当于在一个函数中定义了一个变量,在函数的任何地方都可以使用这个变量一样,每一个局部变量都要复制对应控件中的数据,因此这将消耗更多的内存,因此在labview中一些大的数组中不建议使用局部变量。


4.属性节点值:属性节点在Labview中是一个很重要的概念,属性节点用于访问控件的属性,例如需要改变控件在前面板的大小,运行时候的状态等都需要通过属性节点来进行操作,与引用结合起来讲就是属性节点可以设置引用的属性。Labview的属性节点功能强大,不同的控件有不同的引用,这些不同的引用都可以通过各自的属性节点来进行设置,但需要注意的是,属性节点的执行效率比较低,甚至比全局变量的效率还要低,所以NI一般建议少用属性节点。



在层叠式顺序结构的帧之间传递数据

Labview编程的主要特点是数据流形式,这便于VI大量的按照并行方式运行,优化了程序的计算性能。而顺序结构却趋向于中断数据流编程,禁止程序并行操作,顺序结构还掩盖了部分代码,所以用户在编程时应尽量不用或少用顺序结构。
 只有连接到结构的数据到达结构,层叠式顺序结构才开始运行。只有当所有帧执行完毕后,各个帧才会返回所连接的数据。

在其他结构中传输见http://www.avrvi.com/labview_start/The_use_of_the_structure.html





你可能感兴趣的:(Labview--常用的数据传递)