LabVIEW可提供For循环和While循环两种循环结构。For循环必须指定循环总次数,达到指定循环次数后程序会自动退出循环;而While循环则不用指定循环次数,只需要指定循环退出条件,如果循环退出条件成立,则退出循环。所以知道循环次数可用For循环,不知道循环次数可用While循环。
循环结构数据通道与自动索引
循环结构数据通道是循环结构内的数据与结构外的数据交换(输入/输出)的必经之路,位于循环结构框上,显示为小方格。通道的数据类型和输入的数据类型相同,通道的颜色也和数据类型的系统颜色相同,如浮点数据通道颜色为橙色。
当直接连接循环结构的输出数据通道可能出错,一般隧道模式是默认为最终值的,因此需要更改隧道模式。
在执行循环程序过程中,循环结构内的数据是独立的,即输入循环结构中的数据是在进入循环结构之前完成的,进入循环结构以后不再输入数据;而循环结构输出数据是在循环执行完毕以后进行的,循环执行过程中不会输出数据。
当循环结构外部和数组相连接时,在数据通道中可以选择自动索引功能。自动索引可自动计算数组的长度,并根据数组最外围的长度确定循环次数。在数据通道上单击鼠标右键,选择快捷菜单中的“启用索引”,即可启用自动索引功能。启用自动索引功能后,For循环结构的输出数据通道发生了变化,变为两侧分别连接不同维数的数据。
移位寄存器
在循环结构中经常用到一种数据处理方式,即把第i次循环执行的结果作为第i+1次循环的输入,LabVIEW循环结构可通过移位寄存器实现这种功能。
在循环体的边框上单击鼠标右键,在弹出的快捷菜单中选择“添加移位寄存器”即可完成移位寄存器的创建。这时,在循环体的两个竖边框上会出现两个相对的端口,它们的颜色是黑色,只有将其连接到相应的数据端时,才会显示相应数据类型的颜色。其中,右侧的端口可用来存放本次循环的结果,左侧的端口则存放上次循环的结果。
移位寄存器的左、右端口可以成对出现,也可以“一对多”存在。在“一对多”存在。在“一对多”的情况下要特别注意的是,只能是右侧的“一个端口”对应左侧的“多个端口”,而不能反向。添加“一对多”端口时,在移位寄存器上单击鼠标右键,在弹出的快捷菜单中选择“添加元素”选项,可为左侧端子添加一个元素;选择“删除元素”可删除一个元素;选择“删除全部”则删除整个移位寄存器。在一个循环框中,可以添加多个移位寄存器。
移位寄存器可以存储的数据类型有数值型、布尔型、数组、字符串型等,向移位寄存器赋初值并命名为“显示初始化”。LabVIEW支持移位寄存器“非初始化”,当首次执行时,程序自动给寄存器赋初值为0,对于布尔型的数据则为False。后一次程序执行时就会调用前一次的值,只要VI不退出,则寄存器会一直保存前一次的值。
反馈节点
除了使用移位寄存器可以实现前、后两次的数据交换之外,还可以用反馈节点来实现。反馈节点的基本功能与移位寄存器是相似的,它的优点在于可以节省空间,使程序看上去更加紧凑。反馈节点用来在循环结构之间传递数据,相当于只有一个左侧端子的移位寄存器。反馈节点没有与任何数据连接之前是黑色的,与数据连接之后就会变成与数据类型相应的颜色。
循环结构使用实例
1、自然数求和
求前100个自然数的和,创建程序的步骤如下:
步骤一:新建VI,添加一个For循环结构。
步骤二:设置循环次数。在循环体的N端单击鼠标右键,选择“创建”下的“常量”,显示默认值为“0”,双击“0”,改为“100”。
步骤三:添加移位寄存器,在For循环的结构边框上单击鼠标右键,在弹出的快捷菜单中选择“添加移位寄存器”,并给左端的移位寄存器端子赋初值“0”。
步骤四:添加“加”法函数。在循环体内添加一个“加”法函数,将其中的一个输入端连接左端移位寄存器的输出端;将循环次数i增加1后连接“加”法函数的另一端输入端子;将“加”法函数的输出端连接右端移位寄存器的输入端;通过右端移位寄存器的输出端创建一个显示控件。运行程序。
2、二维数组运算
第二个实例是利用For循环进行二维数组运算,该实例中的内、外两个For循环均不需要设置N值,外部For循环的循环次数与二维数组的行数相同,内部For循环的循环次数与二维数组的列数相同。在外部循环的i值为“0”时,二维数组的第一行子数组进入循环体再输入至内部For循环。内部循环按照该行的元素顺序依次将元素输入。内部For循环结束后,外部循环的i值自动加为1进入下一轮外部循环。
根据结果可以发现,二维数组的第一列数据增加了0,第二列数据增加了1,第三列数据增加了2,这个增加值就是外部循环的i值。
波形图连续显示
步骤一:新建VI。在程序框图中添加While循环结构,并为循环条件创建一个输入控件。
步骤二:在While循环体内,添加“仿真信号”函数。选择“编程”→“波形”→“模拟波形”→“波形生成”→“仿真信号”函数,设置函数的属性,使函数能够生成连续正弦信号。
步骤三:在前面板添加“波形图”显示控件,将“仿真信号”函数产生的信号接入波形图控件的接线端。
步骤四:程序编辑完成后,单击前面板的运行按钮,可以看到程序一直运行,波形图显示控件正在连续显示正弦波。
(在程序运行时,打开计算机的“任务管理器”窗口,可以看到计算机CPU的使用率一直很高。这是因为在没有给While循环设定循环时间间隔的情况下,计算机会以CPU的极限速度运行While循环,在很多情况下这样做是没有必要而且极其危险的。如果LabVIEW程序占内存空间较大,这样有可能会导致计算机死机。因此,用户在使用While循环时需要设定一个循环间隔。即在While循环体内增加等待定时器。)
LabVIEW中的定时器位于“函数”选板“编程”下的“定时”子面板中,等待定时器主要有两种:一种是“等待(ms)”,等待指定时间;另一种是“等待下一个整数倍毫秒”,即等待到计时器的时间是输入值的整数倍为止。一般情况下,两种定时器是一样的。
步骤五:添加等待定时器。选择“等待(ms)”定时器添加到循环体内,在输入端创建一个常量,输入100,表示每100毫秒运行一次该程序。使用While循环时一定要注意添加循环条件和定时器。
步骤六:运行程序。