LabVIEW局部变量和值属性节点之间的区别

简介: LabVIEW局部变量和值属性节点之间的区别

LabVIEW局部变量和值属性节点之间的区别


在程序中使用局部变量,而不是直接使用值属性节点或者输入控件/显示控件时,VI运行有所不同。这几种方式具体有哪些不同呢?


解决方案


在选择使用何种方式更新前面板控件的时候,需要考虑各种性能之间的权衡。可用于更新控件的方法包括:输入控件/显示控件、局部变量以及值属性节点。以下是每种方法的优势和不足之处:


输入控件/显示控件


优点


这种方式的逻辑是,当连续更新相同值的时候,可以防止前面板更新。这能够避免前面板刷新相应的控件。


不需要取消引用指针,也不需要在内存中复制数据。因此,这是速度最快,占用内存最少的方法。


缺点


不能把值写入簇或者数组中单个元素的数据,而是必须更新整个变量。


C语言类比


(和这段C语言代码并不完全等价,但有助于展示更新相应的前面板输入控件/显示控件时,必须执行的步骤)。


int x; //前面板显示控件


x = 10;// 直接将值写入显示控件


局部变量


优点


这种方式的逻辑是,当连续更新相同值的时候,可以防止前面板更新。这能够避免前面板刷新相应的控件。


与属性节点不同,不需要取消引用指针。因此,这种方式比属性节点更快。


缺点


内存密集型进程。它们和输入控件/显示控件具有相同的前面板更新的逻辑,但是它们必须为创建的每个局部变量在内存中制作完整的数据副本。


您不能把值写入簇或者数组中单个元素的数据,而是必须更新整个变量。


如果以不同的速率写入并且读取同一个局部变量,则可能会出现竞争状态。


C语言类比


(和这段C语言代码并不完全等价,但有助于展示更新相应的前面板控件/指示器必须采取的步骤)。


int x; //前面板显示控件


int y; //局部变量


y=10; // 将值写入局部变量


x=y; //LabVIEW将自行执行这一步从而更新前面板的控件


属性节点


优点


与局部变量不同,不要在内存中创建数据副本。


如果使用非严格类型的控件引用,则值的数据类型可以是变化的而不是控件的实际数据类型。


能够读取和写入簇中的单个控件。


可用于在子VI中更新前面板控件。


缺点


每次调用它们时都需要刷新前面板的控件。


属性节点是通过引用函数传递数据,而不是通过值函数。这意味着它们实际上是指向特定内存位置的指针。必须取消引用指针,然后再更新内存中的值。取消引用变量的过程会导致它们比输入控件/显示控件或局部变量的方式更慢。


属性节点导致子VI的前面板保留在内存中,这会增加内存的使用。如果不显示子VI的前面板,请移除属性节点以减少内存使用。


C语言类比


(和这段C语言代码并不完全等价,但有助于展示更新相应的前面板控件/指示器必须采取的步骤)。


int x; //前面板显示控件


int*x_pointer = &x; // 给前面板显示控件创建指针(属性节点)


*x_pointer= 1; // * 用于区分指针和更新的变量x,这是每次执行属性节点的时候都要运行的一个步骤。


需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
6月前
|
存储 安全 Java
在Python中,引用和赋值机制是理解变量和数据对象之间关系的关键
【6月更文挑战第16天】Python变量是对象引用,不存储数据,指向内存中的对象。赋值`=`创建引用,不复制对象。`b = a`时,a和b指向同一对象。引用计数管理对象生命周期,垃圾回收在引用数为0时回收对象。理解这些机制对优化内存使用关键。
63 7
|
6月前
|
编译器
函数\函数先后关系
函数\函数先后关系
36 1
|
7月前
|
存储 Java 编译器
C 语言指针完全指南:创建、解除引用、指针与数组关系解析
创建指针 我们可以使用引用运算符 & 获取变量的内存地址:
307 0
|
存储 Java
你知道变量、数据类型、方法、控制语句之间的关系吗?
java程序在运行的过程中会在内存中产生一些数据,这些数据就会被临时保存在内存当中,而内存中的每一小块区域我们就可以理解为是变量,数据会动态改变的,当程序想要访问或是修改这些数据的时候需要通过一些标识来进行操作,我们就可以使用变量名来标识每一块内存区域。
西门子S7-1200PLC变量表如何使用?如何声明、选用、显示、定义、更改变量?变量保持性如何设置?
在S7-1200 CPU的编程理念中,特别强调符号寻址的使用,在开始编写程序之前,用户应当为输入、输出、中间变量定义相应的符号名,也就是标签。具体步骤如下:
西门子S7-1200PLC变量表如何使用?如何声明、选用、显示、定义、更改变量?变量保持性如何设置?
C/C++语言交换两个变量的七种方法
C/C++语言交换两个变量的七种方法
669 0
C/C++语言交换两个变量的七种方法
|
存储 C语言
C语言程序入门——初识一维、二维数组 与 函数参数定义概念1.1.3(定义、初始化、引用、类型)
类型名 数组名 [数组长度];例如: int a [10] 代表整型数组,数组变量名称为“a”,一共有10个整型元素。数组是具有相同类型数据的集合,其中的数据按照一定的顺序排列存放引用数组元素要指定其下标,通俗点就是:说明要第几个数字int main(){return 0;}例如下标为3,即元素a[3]数值为2注:数组计数取值范围是【0,数组长度-1】,而不是从1开始。即上方最后一位只有a[9],而不是a[10]二维数组是最常见的多维数组,主要表示二维表和矩阵。......
|
C语言
【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )
【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )
584 0
【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )
|
C语言
【C 语言】变量本质 ( 变量修改 | 直接修改变量 | 通过内存地址间接修改变量 | 通过指针间接修改变量 )
【C 语言】变量本质 ( 变量修改 | 直接修改变量 | 通过内存地址间接修改变量 | 通过指针间接修改变量 )
254 0
【C 语言】变量本质 ( 变量修改 | 直接修改变量 | 通过内存地址间接修改变量 | 通过指针间接修改变量 )
|
Java 开发者
单级属性赋值|学习笔记
快速学习 单级属性赋值
121 0
单级属性赋值|学习笔记