移位寄存器(Shift Register)可以将数据从一轮循环周期传递到下一轮循环。在程序设计中,经常要用到它。创建一个移位寄存器的方法是,右击循环的左边或者右边,在弹出的快捷菜单中选择Add Shift Register命令,如图3-9所示。
图3-9 移位寄存器
移位寄存器在程序框图上用在循环边框上相应的一对端子来表示。右边的端子中存储了一轮循环结束时的数据。在下一轮循环开始时,右端子的数据将移位到左边的端子,参与下一轮循环的运算。移位寄存器可以移位各种类型的数据,如数值、布尔数、数组、字符串等。在第一个对象接入移位寄存器时,会自动刷新数据,图3-10表示了它的工作过程。
图3-10 移位寄存器的工作过程
为了存取前几轮循环的数据,可以通过增加循环框左端子元素来实现。这个功能对于计算数据均值非常有用。方法是右击左边端子,在弹出的快捷菜单中选择Add Element命令。例如,如果某个移位寄存器左边的端口含有3个元素,那么就可以访问到最近3轮循环的数据,如图3-11所示。
图3-11 增加移位寄存器元素
练习3-2 求i=0+1+2+…+10的值。
参考程序如图3-12所示。运行程序,观察SUM与SUMi数值显示控件的区别,并分析原因。
注意:移位寄存器初始值设置为0。
图3-12 练习3-2前面板和程序框图
例3-2 在While循环中使用移位寄存器。
任务:创建一个可以用C和F两种单位切换的模拟显示温度曲线的程序。
实施:
1.前面板设计
(1)按Ctrl+N组合键,新建一个VI程序。
(2)按照图3-13(a)放置前面板中控件,并修改标签。
2.程序框图设计
(1)按照图3-13(b)在程序框图中添加While循环和Wait Until Nextms Multiple函数,并进行连线。
图3-13 例3-2前面板和程序框图
(a)前面板;(b)程序框图
(2)创建移位寄存器。
①右击While循环的左边或者右边,在弹出的快捷菜单中选择Add Shift Register命令。
②右击寄存器的左端子,在弹出的快捷菜单中选择Add Element命令,添加一个寄存器。用同样的方法创建第三个元素。
(3)移位寄存器左端子的初始化。
移位寄存器所有的左端点都要赋初值。只要有一个左端子没有赋值就会出错。
3.调试运行
程序每100 ms执行一次,相应While循环变量i加1。前面板有4个数字指示器。Xi显示当前循环值,Xi-1显示前一轮循环值,Xi-2显示近两轮循环值,Xi-3显示近3轮的循环值。移位寄存器初始值为0。运行程序,可以观察到Xi、Xi-1、Xi-2、Xi-3只相差5。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。