作者: Jim Wang 公众号: 巴博萨船长

摘要:本文主要分享一些在LabView时,有变量组处理的一些浅见。

Abstract: This article mainly shares some insights on the processing of variable groups in LabView.

作者: Jim Wang 公众号: 巴博萨船长

正文

本地变量(Local Variable)和全局变量(Global Variable)是LabViEW 为改善图形化编程灵活性局限面专门设计的两个特殊节点,主要解决数据和对象在同意VI程序中的重用和在不同WI程序中的共享问题。LabViEW中的本地变量与全局变量与C语言中的局部变量与全局变量在有效作用范围上意义相同,但是LabViEW中的本地变量与全局变量的定义与使用更加复杂,稍有不慎,便容易引起程序隐性逻辑错误。

数组,簇和波形数据是LabViEW中三类比较复杂的数据类型。其中的簇相当于C语言中的结构数据类型,波形数据则是LabViEW中专有的。

本地变量

相当于传统编程语言中的局部变量,可以在同一程序内部使用。但是又有所不同。

在LabVieW中,前面板的每个控制或指示在狂徒程序上都有一个对应的端口,控制通过这个端口将数据传送给框图程序的其他节点,框图程序也可以通过这个端口为指示赋值。端口是唯一的,一个控制或一个指示只有一个端口。有时候,编程的时候,经常需要在同一个VI的款图程序中的不同位置多次为指示赋值,或者多吃从控制中取出数据,或者是为控制赋值,从指示中取出数据。 显然,仅用一个端口是无法实现这些操作的。这就不同于传统的编程语言,在程序的任何地方需要这个变量的时,写个变量符号就能解决问题。

创建本地变量的方法:

  1. 从后面板中子模板中选择LocalVariable。

  2. 创建本地变量的第二种方法是在前面板对象,以及框图程序中对应端口右键中的列表选着创建一个Local Variable。

本地变量的使用:

例一

用一个布尔开关同时控制两个While-Schleife.如图,前面板结构欠奉。

image-20201120053030027

有时候需要为一个控制赋值或者从一个指示中读出数据,但是通过前面板独享的端口不能为控制赋值,也不能从指示中读出数据。如图所示: 前面板结构欠奉。

image-20201120053059145

利用本地变量就可以解决这个问题。本地变量有Read和 Write两种属性。当属性为Read时,可以从本地变量中读出数据;当属性为Write时,可以给这个本地变量赋值。利用这种方法,就可以给控制赋值或从指示中读出数据。

例二

利用本地变量给一个控制赋值,并从一个指示中读出数据。

如图: 前面板结构欠奉。

image-20201120053300255

在本地变量的右键弹出选单中选择Change to Read或 Change to Write,可以改变本地变量的属性,当本地变量的属性为Read时,本地变量图标的边框用粗线来强调;当本地变量的属性为Write时,本地变量的边框则用细线强调。

本地变量的特点:

一个本地变量就是器相应前面板对象的一个数据拷贝,要占用一定的内存。所以,应该在程序中控制本地变量的数量。否则会占用大量的内存,从而降低程序运行的效率。同时,当程序中有多个本地变量时,因为LabViEW的并行执行性,可能会造成意想不到的错误。比如有这么一种情况。程序的某一处,用户从一个控制的本地变量中读出数据,在另一处,根据需要又为这个控制的另一个本地变量赋值。如果这两个过程刚好并行发生的,就有可能是读出的数据不是前面板对象原来的数据,而是赋值后的数据。这种不是明显的逻辑错误,很难发现,因此,在编程过程中要特别注意,避免发生。

另外:布尔控件的Mechanical Action(机械动作)属性处于 Latch When Pressed(按下时锁存)、Latch When Released(释放时锁存)和Latch Until Released (锁存至按下)状态时,不能使用该布尔控件的本地变量,否则,LabViEW会报错。

全局变量

全局变量是LabViEW中的一个对象,通过全局变量,可以在不同的VI之间进行数据的传递。LabViEW中的全局变量有自己的独特之处。

全局变量的创建:

  1. 在Function模板中添加Global Variable。

  2. 双击全局变量,打开其前面板。

  3. 在前面板中添加数据类型。

  4. 保存,创建完成。

  5. 使用选择Item。选择在特定节点中的对象。

全局变量的应用实例:

在VI之间传递数据,如图。

image-20201120053407102

其中全局变量Global 3.vi在两个Schleifen之间起传输数据的作用。

全局变量的特点:

LabViEW中全局变量比起普通的编程语言要灵活的多,可以同时有几种数据类型。而全局变量虽然也是vi,但是比起SubVI,它不能进行编程,只能用于简单数据储存与传递。全局变量的优点是分别访问。

但是也要注意,用全局变量传递数据,容易出现读写延迟造成数据丢失。


版权声明:
文章首发于 Jim Wang's blog , 转载文章请务必以超链接形式标明文章出处,作者信息及本版权声明。