第5章 程序流程和结构
第5章 程序流程和结构 5.1 循环结构 • 5.1.1、For循环 • 5.1.2 While循环 • 5.1.3 移位寄存器 • 5.1.4 反馈节点 5.1.1、For循环 For循环将其框图 内的VI执行指定的循 环次数,该次数由左 上角的循环总数给定 。可以从循环外部创 建一个常量或一个输 入控件来控制For循环 的循环总次数。循环 计数指当前循环完毕 的次数,从0~(n-1 )。 5.1.2 While循环 While循环将持续 循环内的程序,直到 连接到条件端子的布 尔值为真时停止(当 设定为“真时停止”)或 继续(当设定为“真时 继续”)。左下角的i的 含义和For循环一样, 条件端子这里默认为“ 真时停止” 。 5.1.3 移位寄存器 在循环结构中有一个特殊的应用,即移位寄 存器。在循环的边框上右键单击,在弹出的快捷 菜单中选择“添加移位寄存器”,在循环结构的边 框上会多出一对移位寄存器的图标。图标没有任 何的输入连接时,则为黑色,选择连接后,根据 连接的数据类型会发生颜色的变化。 5.1.4 反馈节点 在LabVIEW中,反馈节点将连接到初始化连 线端的值作为第1次循环或运行的初始值,然后将 上一次循环的结果保存用于此后的每次循环。如 初始化接线端未连接任何值,反馈节点将使用数 据类型的默认值,并在此后的运行中不断地在之 前所得结果的基础上产生值。这些特点都与移位 寄存器有相似之处,两者经常可以直接互换。 5.2 条件结构 • 5.2.1 创建条件结构 • 5.2.2 条件结构的隧道 5.2.1 创建条件结构 当选择器接线端输 入为“真”时,条件结构 执行“真”的程序;若输 入为“假”,条件结构执 行“假”的程序。 5.2.2 条件结构的隧道 在数值显示与条件结构边框的连线会产生一 个空心的蓝色方形,而且程序无法运行,产生错 误提示“隧道未赋值”。该蓝色方形即为“隧道”,当 不对其赋值时,那么执行到该条件时,数值显示 将无法输出,因此产生错误。 该隧道上右键单击,在弹出的快捷菜单中选 择“未连线时使用默认”,那么原来的空心蓝色方 形将变成一个半实心的蓝色方形,此时LabVIEW 将给出当前数据类型的默认值。 5.3 顺序结构 • 5.3.1 平铺式顺序结构 • 5.3.2 层叠式顺序结构 • 5.3.3顺序结构的数据传递 5.3.1 平铺式顺序结构 平铺式顺序结构 包括一个或多个顺序 执行的子程序图或帧 。平铺式顺结构可确 保子程序框图按一定 的顺序执行,程序的 执行顺序一定是先“程 序一”,后“程序二”。 5.3.2 层叠式顺序结构 层叠式的功能和平 铺式的功能一样,只 是在外观上有所区别 。层叠式顺序结构的 边框顶部出现子框图 标识框,它的中间是 子框图标识,显示出 当前在顺序结构序列 中的号码(0~n-1),以 及此时顺序结构共有 几个子框图 。 5.3.3顺序结构的数据传递 平铺式顺序结构在 各个子框图之间可以 直接连线来传递数据 。 层叠式顺序结构需要 借助局部变量在各个子框 图之间传递数据。在层叠 式结构边框弹出的快捷菜 单中选择“添加顺序结构局 部变量”,在鼠标单击位置 的边框会出现一个黄色的 方框。当为该小方框连接 数据后,颜色随之变化成 与该数据类型相符的颜色 。出现的箭头方向向外, 表示该局部变量引入的数 据对于当前子框图是输入 ,反之则为输出 。 5.4 事件结构 • 5.4.1 事件结构 • 5.4.2 通知事件与过滤事件 • 5.4.3 动态事件与用户事件 5.4.1 事件结构 事件结构是一个功 能非常强大的编程工 具,可用于编写等待 事件发生的高效代码 ,代替循环检查事件 是否发生的低效代码 。 5.4.2 通知事件与过滤事件 5.4.3 动态事件与用户事件 此前所介绍的都是对VI前面板的事件编辑, 如控件按下、鼠标按下等。在LabVIEW中,事件 结构可以对动态事件进行编程,指定事件分支要 处理的控件。 关于动态注册事件,有专门的子选项卡罗列 相关的事件函数,在编程对话框与用户界面 事件子选项卡中 。 关于更多的动态事件和用户事件,可以参看 LabVIEW自带的例子,即examples\general\ dynamicevents.llb文件中的例子。 5.5 定时结构 • 5.5.1 定时循环 • 5.5.2 定时顺序结构 5.5.1 定时循环 定时循环根据指定的循环周期顺序执行一个 或多个子程序框图或帧。在以下情况中可以使用 定时循环结构。例如,开发支持多种定时功能的 VI、精确定时、循环执行时返回值、动态改变定 时功能或者多种执行优先级。右键单击结构边框 ,可以添加、删除、插入及合并帧。 双击输入节点或右键单击循环结构,选择配 置定时循环,打开“配置定时循环”对话框对定时 循环进行配置。 5.5.2 定时顺序结构 定时顺序结构由一个或多个子程序框图(也 称“帧”)组成,在内部或外部定时源的控制下按 顺序执行。与定时循环不同,定时顺序结构的每 个帧只执行一次,不重复执行。定时顺序结构适 于开发只执行一次的精确定时、执行反馈、定时 特征等动态改变或有多层执行优先级的VI。 5.6 公式节点 公式节点的作用非常大,在平常的数据计算 当中,如果用函数数值中的公式进行计算将非 常繁杂,而利用公式节点就可以简单利落许多 。 使用公式节点,可以直接输入公式,不需要 创建复杂的框图。 5.7 禁用结构 • 5.7.1 5.7.1 程序框图禁用结构 程序框图禁用结 构包括一个或多个子 程序框图(分支), 仅有启用的子程序框 图可执行。程序框图 禁用结构用于禁用一 部分程序框图 。 5.7.2 条件禁用结构 5.8 小结 本章是LabVIEW编程过程中最重要的一章。 能够灵活应用这些结构函数,可以使函数变得清 楚明了,而且易于扩展。所以在本章的学习上应 多下些工夫,多做一些有趣的程序,来加深对结 构函数的理解。