首页 理论教育LabVIEW2015虚拟仪器程序设计中的移位寄存器添加方法

LabVIEW2015虚拟仪器程序设计中的移位寄存器添加方法

【摘要】:移位寄存器的添加可以通过在循环结构的左边框或右边框上弹出的快捷键获得,在其中选择添加移位寄存器,如图5-28所示的在For循环中添加移位寄存器,图5-29显示的是添加移位寄存器后的程序框图。图5-30 计算1+2+3+4+5的值图5-31 不添加移位寄存器的结果又如求0~99之间的偶数的总和。例如当不给图5-32中的移位寄存器赋予初值时即如图5-33所示,当第一次执行时,输出为2450,再运行时输出为4900。图5-36 层叠移位寄存器的使用

移位寄存器是LabVIEW的循环结构中的一个附加对象,也是一个非常重要的方面,其功能是把当前循环完成时的某个数据传递给下一个循环开始。移位寄存器的添加可以通过在循环结构的左边框或右边框上弹出的快捷键获得,在其中选择添加移位寄存器,如图5-28所示的在For循环中添加移位寄存器,图5-29显示的是添加移位寄存器后的程序框图。

右端子在每次完成一次循环后存储数据,移位寄存器将上次循环的存储数据在下次循环开始时移动到左端子上,移位寄存器可以存储任何数据类型,但连接在同一个寄存器端子上的数据必须是同一种类型,移位寄存器的类型与第一个连接到其端子之一的对象数据类型相同。

如计算1+2+3+4+5的值,由于是累加的结果,所以用到了移位寄存器。需要注意的是:由于For循环是从0执行到N-1,所以输入端赋予了6,移位寄存器赋了初值0。具体程序框图和前面板显示如图5-30所示。

978-7-111-53194-4-Chapter05-36.jpg

图5-28 在For循环中添加移位寄存器

978-7-111-53194-4-Chapter05-37.jpg

图5-29 添加了移位寄存器的程序框图

若上例中不添加移位寄存器则只输出5(如图5-31所示),因为此时没有累加结果的功能,如图5-31所示。

978-7-111-53194-4-Chapter05-38.jpg

图5-30 计算1+2+3+4+5的值

978-7-111-53194-4-Chapter05-39.jpg

图5-31 不添加移位寄存器的结果

又如求0~99之间的偶数的总和。由于For循环中的默认递增步长为1,此时根据题目要求步长应变为2,具体程序框图和前面板如图5-32所示。

在使用移位寄存器时应注意初始值问题,如果不给移位寄存器指定明确的初始值,则左端子将在对其所在循环调用之间保留数据,当多次调用包含循环结构的子VI时会出现这种情况,需要特别注意。

如果对此情况不加考虑,可能引起错误的程序逻辑。(https://www.chuimin.cn)

在一般情况下应为左端子明确提供初始值,以免出错,但在某些场合,利用这一特性也可以实现比较特殊的程序功能。除非显式的初始化移位寄存器,否则当第一次执行程序时移位寄存器将初始化为移位寄存器相应数据类型的默认值,若移位寄存器数据类型是布尔型,初始化值将为假,若移位寄存器数据类型是数字型,初始化值将为零,但当第二次开始执行时,第一次运行时的值将为第二次运行时的初始值,依次类推。例如当不给图5-32中的移位寄存器赋予初值时即如图5-33所示,当第一次执行时,输出为2450,再运行时输出为4900。这就是因为左端子在循环调用之间保留了数据。

978-7-111-53194-4-Chapter05-40.jpg

图5-32 计算0~99中偶数的和

978-7-111-53194-4-Chapter05-41.jpg

图5-33 移位寄存器不赋初值的情况

移位寄存器也可以添加多个移位寄存器,可通过多个移位寄存器保存多个数据,如图5-34所示,该程序框图用于计算等差数列2n+2中n取0、1、2、3时的乘积。

在编写程序时有时需要访问以前多次循环的数据,而层叠移位寄存器可以保存以前多次循环的值,并将值传递到下一次循环中。创建层叠移位寄存器,可以通过使用右键单击左侧的接线端并从其中选择添加元素来实现,如图5-35所示,层叠移位寄存器只能位于循环左侧,因为右侧的接线端仅用于把当前循环的数据传递给下一次循环。

978-7-111-53194-4-Chapter05-42.jpg

图5-34 计算等差数列的乘积

978-7-111-53194-4-Chapter05-43.jpg

图5-35 层叠移位寄存器

如图5-36所示,使用层叠移位寄存器,不仅要表示出当前的值,而且要分别表示出前一次循环、前两次循环、前三次循环的值。

978-7-111-53194-4-Chapter05-44.jpg

图5-36 层叠移位寄存器的使用