首页 百科知识 顺序结构中数据传递

顺序结构中数据传递

时间:2022-10-08 百科知识 版权反馈
【摘要】:②顺序结构掩盖了部分程序代码,中断了作为LabVIEW主要特点的数据流形式。这一问题已经通过使用平铺的顺序结构解决。“执行次数”用于显示达到指定值循环执行的次数。这个方框叫作顺序局部变量,可以在同一个顺序结构中的各个帧之间传递数据。当将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。

向顺序结构内输入数据时,各子程序框图允许不连接数据隧道;但从顺序结构向外输出数据时,各子程序框图中只能有一个连接这个隧道;否则隧道图标是中空的,程序无法被执行。此处不同于条件结构。

在各个子程序框图之间传递数据,平铺顺序结构可以直接连线,如图3-36所示。

但是层叠顺序结构要借助顺序局部变量。在层叠式顺序结构边框上右击,从快捷菜单中选择Add Sequence Local命令,出现一个黄色小方框(代表局部变量),为它连接数据后,中间出现一个指向结构框外的箭头,如图3-37所示,这时一个数据已经存储到顺序局部变量中。

为顺序局部变量赋值之后的子程序框图才能访问此局部变量,而之前的子程序框图不能访问。如图3-37所示,1号框图为局部变量赋值,2号框图可以访问,但0号框图就不能访问。

图3-36 平铺式顺序结构数据传递

图3-37 层叠式顺序结构数据传递

NI公司在LabVIEW中提供了顺序结构,却不提倡过多使用它。原因主要有以下两点:

①顺序结构妨碍了作为LabVIEW优点之一的程序并行运行机制。

②顺序结构掩盖了部分程序代码,中断了作为LabVIEW主要特点的数据流形式。这一问题已经通过使用平铺的顺序结构解决。

例3-7 顺序结构的应用。

任务:计算生成等于某个给定值的随机数所需要的时间。

实施:

1.前面板的设计

打开一个新的前面板,并按照图3-38所示创建对象。

图3-38 例3-7的前面板

约定数据是0~100范围的整数。“当前值”用于显示当前产生的随机数。“执行次数”用于显示达到指定值循环执行的次数。“匹配时间”用来显示达到指定值所用的时间。

2.程序框图的设计

(1)在程序框图中放置顺序结构(选择Functions→Programming→Structures选项)。

(2)右击帧的边框,在弹出的快捷菜单中选择Add Frame After命令,创建一个新帧。重复这个步骤,再创建一个帧,共3帧。

(3)选中第0帧,设置读取初始时间(子)程序。

(4)第0帧的下边框上含有一个小方框,其中有一个箭头。这个方框叫作顺序局部变量,可以在同一个顺序结构中的各个帧之间传递数据。右击第0帧的底部边框,在弹出的快捷菜单中选择Add Sequence Local命令,创建顺序局部变量。顺序局部变量显示为一个空的方块。当将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。

Tick Count(ms)函数(选择Functions→Programming→Time&Dialog选项),返回到现在的时间(以毫秒为单位)。在这个例子里需要使用两次该函数,另一次是在第2帧中。

(5)按图3-39(a)所示连好线,转入第1帧。该帧是匹配计算,内含一个循环结构。

•Round to Nearest函数(选择Functions→Programming→Numeric选项),在该例中,它用于取0~100的随机数到距离最近的整数。

•Not Equal?函数(选择Functions→Programming→Comparison选项),在该例中,它将随机数和前面板中设置的数相比较,如果两者不相等会返回True值;否则返回False。

•Increment函数(选择Functions→Programming→Numeric选项),在该例中,它将While循环的计数器加1。

(6)按图3-39(b)所示连好线,转入第2帧。

在第0帧中,Tick Count(ms)功能函数将以毫秒为单位表示当前时间。这个数值被连到顺序局部变量,这样它就可以被后续的帧使用。在第1帧中,只要函数返回的值与指定值不等,VI就会持续执行While循环。

图3-39 例3-7程序

(a)第0帧程序框图;(b)第1帧程序框图

图3-39 例3-7程序(续)

(c)第2帧程序框图

(7)按图3-39(c)所示连线。

在第2帧中,Tick Count(ms)功能函数以毫秒为单位返回新的时间。VI从中减去原来的时间(由第0帧通过顺序局部变量提供)就可以计算出花费的时间。

3.调试运行

返回前面板,在“给定数据”控制对象中输入一个数值,执行该VI。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈