Menu:

第5章  控制程序流(10)


Functional Global Variable


Functional 全局变量

     本单元介绍另一种形式的全局变量——Functional Global Variable。它与上一单元所介绍的全局变量不同(有些书上称上一单元的全局变量为内置全局变量,意思是LabVIEW自带的),在小标题中我将它称为Functional 全局变量。
     到底如何称谓它我也不清楚,我这样称谓它是为了书写简单,其实在其它的LabVIEW使用者中它还有许多称谓,如:

     LV2 globals
     USR globals
     VIG
     Action engines
 
     在中文文档中,通常大家都直接使用
Functional Global (Variable)来称谓它,我并不知道那个称谓更好、更能表示出它的特点。与大家说句实在话,我也从来没有使用过它,它在这里出现仅仅是因为感觉到有必要介绍一下,其实只是现买现卖的说说而已。


     它是以一个vi的形式存在的。最简单的Functional全局变量的前面版和程序框图见下图。原理就是利用无初始化的移位寄存器构成这种全局变量。

     右上图可知,如果将开关置于Set ,那么New的值就进入移位寄存器并复制到输出。如果将开关置于Read,那么原来保存的值就被读出并且在移位寄存器中再循环一次。
     由于它是一个vi所以必须有自己唯一的名字。它不仅仅可以用来保存数值还可以保存其它数据类型的参数,上单元说过的不要使用数组全局变量,现在就可以用它来实现而不存在上单元所说的不足。包括使用它可以避免竞争现象的出现。


     与此相类似的、更简单的Functional全局变量见下图所示。


     有关它的其它特点,NI的阮先生在他的博客中有较为详细的说明,在阮先生即将出版的新书中也会详细介绍这一部分。

     另外 csxcs_366在与非网上他的博客中,也对这种全局变量进行了分析,并做了几种全局变量运行速度上的比较和探讨。

    在NI的论坛和LAVA网站上都有关于这种全局变量的深入分析和探讨。我看到的资料中,早在LabVIEW5.0时就出现这种全局变量的使用说明。

    其实,直到写这部分内容时,我才感觉到它有独特的特性或特点,应该好好学习使用它。等在我将来实际使用后,会修改、续写这一部分的内容。