局部变量与全局变量
可以选择真时继续()。
计数接线端:表示已经完成的循环次数,该计数从0开始。在本例中,如果当产生的第13个点值超过0.9时,计数器值为12。
结构隧道: 当需要将循环中的数据传入或者传出时,我们使用隧道的方式(这一点将在后面详细介绍)。
2. For 循环
For 循环常用于已知代码循环次数的情况,比如数组的操作。下面是For 循环的流程图:
2.1 For 循环的流程图
我们通过以下的例子来具体介绍以下For 循环:
如图 2.2,使用For 循环产生一个3×4的二维随机数组。(该程序见附件
Generate array.vi )
图2.2 For 循环产生3×4的二维随机数组
局部变量与全局变量
LabVIEW 是以数据流决定程序框图元素的执行顺序,但在某些程序框图中需要消除数据流的依赖性,这时可以考虑使用变量。LabVIEW 中的变量是程序框图中的元素,通过它可以在另一位置访问或存储数据。根据不同的变量类型,数据的实际位置也不一样。局部变量将数据存储在前面板的输入控件和显示控件中。全局变量将数据存储在特殊的通过多个VI 可以访问的仓库中。不管变量将数据存储在何处,所有的变量都可以在不使用连线连接两个地方的条件下而把数据从一个地方传递到另一个地方,从而不必使用正常的数据流。
1. 局部变量局部变量的作用域是整个 VI ,它它用于在单个 VI 中传输数据。
●
创建局部变量
右键单击前面板对象或程序框图接线端,并从快捷菜单中选择创建? 局部变量来创建一个局部变量。该对象的局部变量的图标将出现在程序框图上。也可从函数选板上选择一个局部变量将其放置在程序框图上。此时局部变量节点尚未与一个输入控件或显示件相关联。如下图1所示。如需使局部变量与输入控件或显示控件相关
联,可左键单击该局部变量节点,选择对应的项即可。LabVIEW 使用自带标签将局部变量和前面板对象联系起来,因此必须用描述性的自带标签对前面板输入控件
和显示控件进行标注。
与控件的接线端不同,不论控件是哪种方向(输入控件和显示控件),它的局部变量既可以用作读出数据,也可以用作写入数据,用户只需要在局部变量的右键菜单上选择“转换为读取/转换为写入”,改变局部变量的数据流向。
一般,在从控件读取或写入数据,以及并行循环间共享数据时,可以考虑使用局部变量。
●
读取和写入变量
创建一个局部变量后,可以对变量ā行数据读写。 默认状态下,新变量将接收数
据。 该变量类似于显示控件,同时属于写入局部变量。将新数据写入该局部变量图1 添加局部变量
可以选择真时继续()。
计数接线端:表示已经完成的循环次数,该计数从0开始。在本例中,如果当产生的第13个点值超过0.9时,计数器值为12。
结构隧道: 当需要将循环中的数据传入或者传出时,我们使用隧道的方式(这一点将在后面详细介绍)。 2. For 循环
For 循环常用于已知代码循环次数的情况,比如数组的操作。下面是For 循环的流
程图:
2.1 For 循环的流程图
我们通过以下的例子来具体介绍以下For 循环: 如图 2.2,使用For 循环产生一个3×4的二维随机数组。(该程序见附件Generate array.vi )
图2.2 For 循环产生3×4的二维随机数组
时,与之相关联的前面板输入控件或显示控件将由于新数据而被更新。右键单击变量,从快捷菜单中选择转换为读取,便可将该变量配置为一个输入控件。节点执行时,VI 将读取相关前面板输入控件或显示控件中的数据。如需使变量从程序框图接收数据而不是提供数据,可右键单击该变量并从快捷菜单中选择转换为写入。在程序框图上,读取局部变量与写入局部变量间的区别相当于输入控件和显示控件间的区别。类似于输入控件,读取局部变量的边框较粗。而写入局部或全局变量的
边框比较细,类似于显示控件。●
并行循环间共享数据这是LabVIEW 局部变量的一个重要应用场合。考虑这样的例子,如果要通过一个按
钮同时控制两个并行while 循环的执行,用下面两种简单的连线(图2)会打乱程序的并行结构,并且也无法保证循环的同时停止。
如果使用局部变量,就能消除while 循环间的依赖关系,同时控制并行循环的执行(见图3):
除了布尔量,还可以创建其他类型的局部变量,在并行循环间共享数据。图4中两
图2 带有通过连线指定的数据依赖关系的While 循环
图3 同时控制并行while 循环
可以选择真时继续()。
计数接线端:表示已经完成的循环次数,该计数从0开始。在本例中,如果当产生的第13个点值超过0.9时,计数器值为12。
结构隧道: 当需要将循环中的数据传入或者传出时,我们使用隧道的方式(这一点将在后面详细介绍)。
2. For 循环
For 循环常用于已知代码循环次数的情况,比如数组的操作。下面是
For 循环的流程图:
2.1 For 循环的流程图
我们通过以下的例子来具体介绍以下For 循环: 如图 2.2,使用For 循环产生一个3×4的二维随机数组。(该程序见附件Generate array.vi )
图2.2 For 循环产生3×4的二维随机数组
个循环分别用来产生和显示正弦波,其中的数据正是通过局部变量实现共享。2. 全局变量
全局变量的作用域是整台计算机。它主要用在多个VI 之间共享数据。
●
创建全局变量
全局变量是内置的LabVIEW 对象。 创建全局变量时,LabVIEW 将自动创建一个有前面板但无程序框图的特殊全局VI 。 向该全局
VI 的前面板添加输入控件和显示控件可定义其中所含全局变量的数据类型。该前面板实际便成为一个可供多个VI ā行数据访问的容器。如下图5所示,从函数选板中选择一个全局变量并置于程序框图上。双击该全局变量节点可显示全局VI 的前面板。 该前面板与标准前面板一样,可放置输入控件和显示控件。LabVIEW 通过自带标签来识别全局变量,可用描述性的自带标签对前面板输入控件和显示控件进行标注。
全局变量VI 的前面板对象可以是一个,也可以有多个。 创建一个带有多个对象的全局VI 将更有效,因为这样,可以将相关的变量分在一起。 一个VI 的程序框图可
包含多个全局变量节点,并且这些全局变量节点同某个全局VI 在前面板上的输入
控件和显示控件相关联。 将全局VI 放到其它VI 中类似于放置子VI 。每次在程序框
图4 局部变量共享数据
图5 添加全局变量
可以选择真时继续()。
计数接线端:表示已经完成的循环次数,该计数从0开始。在本例中,如果当产生的第13个点值超过0.9时,计数器值为12。
结构隧道: 当需要将循环中的数据传入或者传出时,我们使用隧道的方式(这一点将在后面详细介绍)。
2. For 循环
For 循环常用于已知代码循环次数的情况,比如数组的操作。下面是For 循环的流程图:
2.1 For 循环的流程图
我们通过以下的例子来具体介绍以下For 循环:
如图 2.2,使用For 循环产生一个3×4的二维随机数组。(该程序见附件Generate array.vi )
图2.2 For 循环产生3×4的二维随机数组
图上放置一个新的全局变量节点时, LabVIEW 都会创建一个仅与该全局变量节点相关的新VI 及副本。图6所显示的全局变量前面板包括数值、字符串以及一个包含数值和布尔控件的簇。不同于标准前面板,工具栏并没有显示运行、停止或其它相关按钮。所有对象在全局VI 前面板上放置完毕后,保存该全局VI 并返回到原始VI 的程序框图。 必须选择全局VI 中需访问的对象。左键单击该全局变量节点,选择对应的项即可。
如需在其它VI 中使用该全局变量,请选择函数? 所有函数? 选择VI 。 默认情况下,
该全局变量和第一个带有放置在全局VI 中的自带标签的前面板对象相关联。 左键单击放置在程序框图上的全局变量节点,选择对应的项,以便使该全局变量和来自于另一个前面板对象的数据相关联。
● 全局变量的使用
全局变量主要扩大了局部变量的作用域,使用方法基本类似。全局变量既可以用作读出数据,也可以用作写入数据,用户只需要在变量的右键菜单上选择“转换为读取/转换为写入”,来改变全局变量的数据流向。3. 变量使用提示
局部和全局变量属于高级的LabVIEW 概念。 它们不是LabVIEW 数据流执行模型中固有的部分。 使用局部变量和全局变量时,程序框图可能会变得难以阅读,因此需谨慎使用。 错误地使用局部变量和全局变量,如将其取代连线板或用其访问顺
序结构中每一帧中的数值,可能在VI 中导致不可预期的行为。滥用局部变量和全
局变量,如用来避免程序框图间的过长连线或取代数据流,将会降低执行速度。
图6 全局变量前面板