小白自学习Labview笔记(三)-------循环结构

前言

Labview中的循环结构有两种,分别是For循环,跟While循环,下面就分别介绍着两种循环。

一、While循环

Labview中的While循环与文本语言中的Do…While循环类似。While循环位于结构选择板,选择后在程序框图中拖拽出所需要的While循环区域。程序运行后选中区域中的模块将重复运行直到While循环结束。

  1. 带方框的字母i,为循环计数接线端。其值为While循环当前执行的次数。
  2. 带方框的红色圆点,为While循环的条件结束端子。可以右击选择TRUE时停止或TRUE时继续。
    小白自学习Labview笔记(三)-------循环结构
  3. While循环执行后,循环体至少被执行一次。
  4. 如下图将停止条件放在While循环外面,由于输入控件只在循环开始时被读取一次,因此控件值改变也不能停止While循环。会产生无限循环,编程时应该避免这种情况发生。
    小白自学习Labview笔记(三)-------循环结构
  5. 编程练习
  • 产生0-1之间的随机数,直到值大于0.9,循环停止,记录循环次数。
    其中停止按钮防止出现死循环
    运行后数值框会显示出运行次数。
    小白自学习Labview笔记(三)-------循环结构
    优化代码
    小白自学习Labview笔记(三)-------循环结构
    上图在程序运行前读取常量0.9,程序运行完成后将循环次数写入数值显示框。不需要每次循环都读取与写入,优化了执行效率。
  • 结构隧道
    这种将循环内的数据连接到循环外的结构,称为结构隧道(图中循环连接处出现小蓝色方形区域)。While循环的结构隧道输出最后一次运行的结果值。
  1. While循环进行错误检查
  • 连接函数错误输出簇到While循环的结束端子或带结束端子的For循环,可以在程序发生错误时跳出循环。
  • 同时使用错误簇跟停止按钮停止循环,是用于停止出错循环的推荐方式。
    小白自学习Labview笔记(三)-------循环结构

二、For循环

Labview中的For循环能按照设定次数循环内部程序。

  1. 带方框N表示给定循环次数,N的数值类型为I32,如果输入其它类型系统强制转换为I32类型,这与其它地方的类型转换有所区别。
  2. 带方框i表示当前循环次数,与While循环相同。
    小白自学习Labview笔记(三)-------循环结构
  3. 右键点击For循环,可以为For循环添加条件结束端子。其效果与While循环中的条件结束端子相同。
    小白自学习Labview笔记(三)-------循环结构
  4. For循环的结构隧道
    For循环的结构隧道输出结果与While循环不同,如下图,用For循环完成While循环的练习时发现程序报错,结构隧道的输出不能连接到值类型上。
  • 因为For循环的结构隧道输出的是一个长度为N的数组。
    小白自学习Labview笔记(三)-------循环结构

三、For寻循环与While循环比较

For循环 While循环
未添加条件接线端,按照指定的次数执行 仅当条件接线端接收到符合条件的值时循环结束
可执行0次 最少执行一次
隧道自动输出一个数组 隧道自动输出最后一次结果值

四、移位寄存器

  1. 移位寄存器相当于文本编程语言中的静态变量。

  2. 移位寄存器可用于将上次循环的结果传递到下次循环进行运算。

  3. 移位寄存器位于循环两侧,接线端为向上和向下实心三角形,如下图(右击循环边框–>添加移位寄存器)。
    小白自学习Labview笔记(三)-------循环结构

  4. 循环可以添加多对移位寄存器,进行多个值的传递。

  5. 初始化移位寄存器
    如下图,上面循环对移位寄存器进行过初始化,下面的循环未对寄存器进行初始化。运行第一次结果都为5。但是第二次运行后上面的数值依然为5,下面的结果为10。这是因为第二个循环没有对移位寄存器进行初始化,所以运行结果会从上次运行的结果5开始继续往下运行,所以运行完结果变为10。

  • 在没有关闭VI前,未初始化的移位寄存器会保留上一次的循环值。
    小白自学习Labview笔记(三)-------循环结构
  1. 练习 :计算1+2+3+… …+98+99+100的值。
    程序如下图,结果为5050(相信学过编程的人都知道这个结果)。
    小白自学习Labview笔记(三)-------循环结构
  2. 层叠移位寄存器
  • 在移位寄存器右边接线端右击—>添加元素,可以创建层叠移位寄存器。
  • 层叠移位寄存器可以保存前两次运行的结果,其中最近一次循环保存在上接线端子,上上次结果保存在下面端子。
    小白自学习Labview笔记(三)-------循环结构

五、总结

循环结构内容仔细研究下来还是挺多,还有一部分比较少用到的内容我没有介绍,希望感兴趣的同学自行了解。