在LabVIEW的循环之间传递数据

本节内容包含

在LabVIEW中使用循环时,往往需要用到前几次循环产生的数据。例如,每次循环采集1个数据,每采集5个数据计算一次平均值,此时就需要保留前几次循环产生的数据。

移位寄存器

 

视频:移位寄存器

移位寄存器用于将上一次循环产生的值传递至下一次循环。移位寄存器以成对接线端的形式出现,分别位于循环两侧的边框上,位置相对。

右侧接线端含有一个向上的箭头,用于存储每次循环结束时的数据。LabVIEW会将连接到右侧寄存器的数据传递到下一次循环中。循环执行完毕后,右侧接线端将返回移位寄存器最后一次保存的值。

右键单击循环的左侧或右侧边框,从快捷菜单中选择“添加移位寄存器”可创建移位寄存器。

移位寄存器可以传递任何数据类型,并与其连接的第一个对象的数据类型自动保持一致。连接至各移位寄存器的数据必须为相同类型。

一个循环中可有多对移位寄存器。如循环中的多个操作都需使用前面循环的值,则可使用多对移位寄存器保存结构中不同操作的数据值,如图1所示。

图1. 使用多对移位寄存器

初始化移位寄存器

初始化移位寄存器即重置VI运行时移位寄存器传递给第一次循环的值。要初始化移位寄存器,请将一个输入控件或常数连接至移位寄存器接线端,如图2所示。

图2. 初始化移位寄存器

图2中,For循环将执行5次,每次循环后,移位寄存器的值都增加1。5次循环结束后,移位寄存器将最终值5传递给显示控件,然后VI运行结束。每次执行该VI,移位寄存器均以0开始。如不初始化移位寄存器,则循环将使用上一次执行时最后写入该寄存器的值。如循环为初次执行,则使用寄存器数据类型的默认值。使用未初始化的移位寄存器可以保留VI连续执行间的状态信息。

图3. 未初始化的移位寄存器

图3中,For循环将执行5次,每次循环后,移位寄存器的值都增加1。首次运行VI时,移位寄存器的值为0,是32位整型的默认值。5次循环结束后,移位寄存器将最终值5传递给显示控件,然后VI运行结束。第二次运行该VI时,移位寄存器的初始值是上一次循环所保存的最终值5。循环执行5次后,移位寄存器将最终值10传递给显示控件。如果再次运行VI,移位寄存器的初始值将是10,并依此类推。未初始化的移位寄存器始终保留上一次循环的值,直至用户关闭VI。

层叠移位寄存器

使用层叠移位寄存器可访问前几次循环的数据。层叠移位寄存器可保存前几次循环的值,并将值传递到下一次循环中。要创建层叠移位寄存器,请右键单击左侧接线端,从快捷菜单中选择“添加元素”。

层叠移位寄存器只存在于循环边框左侧,因为右侧接线端仅用于把当前循环的数据传递给下一次循环。

图4. 使用层叠移位寄存器

在上述程序框图中,如在左侧接线端上再添加一个移位寄存器,则最近两次循环的值都将传递至下一次循环中,其中,位于上面的寄存器保存的是最近一次的值。下面的接线端则保存再上一次循环的值。

交互式LabVIEW入门课程

体验全新交互式LabVIEW入门课程,掌握LabVIEW基础概念。

继续学习

上一篇执行结构
错误处理下一篇