为什么程序中的For循环会丢失数据?



主要软件:
主要软件版本: 8.0
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Base Development System, LabVIEW Development Systems>>LabVIEW Full Development System

问题: 我的LabVIEW程序中包含一个For循环,有时循环会丢失数据,或是输入循环的数据和输出循环的数据间无法关联起来,为什么会发生这种情况,该如何避免?

解答: 循环丢失数据有以下几种情况。首先,如果For循环的总数 (N) 接线端连接了“0”,则通过循环传递的任何数据都会丢失,因为此时循环内的代码一次都没有执行,故数据无法被传递到For循环的输出端。这种情况下通过隧道输入For循环的数据必然会丢失。例如,下图所示的程序代码中,一个数值输入控件以及一个已经初始化的数组通过隧道传入了一个执行次数被设为零次的For循环。由于数据流在For循环里中断,两个连接循环输出的显示控件实际上是未被初始化的。 

当For循环执行的次数少于经初始化数组中的元素个数,也会发生丢失数据的情况。例如,一个包含6个元素的数组输入了一个执行三次的循环,则输出数组中只会包含输入数组中的前三个元素。


要保留数据,可以将隧道替换为移位寄存器。移位寄存器在内存中开辟了数据存储空间,即使循环被配置为执行零次,也能够使得数据保存在For循环的输出端。要将隧道替换为移位寄存器,右键点击隧道,在弹出的菜单中选择替换为移位寄存器。若For循环的实际循环次数是由自动索引的数组或是文件决定的话,请确保数组中的元素个数不为零,以免发生循环数据丢失。

相关链接: LabVIEW Basics: Passing Data Between Loop Iterations in NI LabVIEW
LabVIEW Basics: Execution Structures in NI LabVIEW

附件:





报告日期: 01/13/2009
最近更新: 07/25/2016
文档编号: 4TCF9U7G