1、精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31LabVIEW中的程序结构函数编程结构 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31本章内容o 基本程序结构的使用o 变量的使用o 公式节点的使用o 反馈节点的使用o 条件与禁用结构的使用精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31循环结构For循环 一个完整的For循环体它包含两个端口:循环次数(输入端口)和循环计数(
2、输出端口)。 循环次数端口N用于指定框图代码的执行次数,它是一个输入端口,除非应用了自动索引功能,否则用必须输入一个整型数,当连接一个浮点数时,LabVIEW会自动对它按“四舍五入”的原则进行强制转换。 循环次数和循环计数端口的数值范围为0231-1的长整型数,如果给N的赋值为0,则程序一次也不执行。精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31实例产生数据点数为1000的正弦波 在做算法仿真时,经常需要产生指定点数的数据波形,最基本的实现方法就是通过For循环+基本函数的方式。 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIE
3、W中的程序结构2022-5-31循环结构For循环For循环的自动索引 正常情况下For循环是要指定循环次数程序才能正常执行的,但如果我们不知道具体的循环次数,那又该如何运用For循环呢? For循环的自动索引功能默认情况下是自动开启的,在自动索引开启的状态下,数据进入循环体时是降维的。 切换索引功能开启与关闭的方法为:鼠标右击索引通道,选择“禁用/启用索引”即可。 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31实例自动索引功能使用 在LabVIEW中用框图的嵌套来实现循环嵌套,一层一层执行。精通LabVIEW虚拟仪器程序设计与案例实现第4章
4、LabVIEW中的程序结构2022-5-31循环结构For循环For循环的移位寄存器 如果程序后一次的运行需要用到前一次的值,则可以使用移位寄存器,它实际上是For循环和While循环独有的局部变量。 移位寄存器的使用要经过创建和初始化两步。 移位寄存器的左右端口可以成对出现,也可以“一对多”,在“一对多”的情况中要特别注意的是,只能是右侧的“一个端口”对应左侧的“多个端口”,而不能反向。 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31循环结构For循环o“显式初始化” o“非初始化” 移位寄存器初始化 移位寄存器可以存储的数据类型有:数值型、
5、布尔型、数组、字符串型等。不同初始化方式运行结果 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31实例前100个自然数求和 对于求和的运算,基本可以用For循环+移位寄存器的结构实现,例如求阶乘和、求前1000个素数和等等。 For循环的一个重要应用场合就是知道具体的循环次数。用For循环实现前100个自然数求和 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31循环结构While循环 While包含两个端口:条件接线端(输入端口)和循环计数端(输出端口)。 While循环也可以用移位寄存器,索引通道
6、,与For循环相同。 While循环重复执行循环体内的代码,直到满足某种条件为止,它相当于传统文本编程语言中的Do Loop或Repeat-Until循环。 当While循环开始执行后,外部数据就无法传递到循环体内,所以循环的控制条件一定要放置在循环体内,否则会造成死循环。 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31实例While循环基本应用为止精确到510!1!1! 31! 21! 111nne While循环的停止最常用的方法是用一个“停止”控件,当然,也可以用其它的条件判断来终止While循环的执行。 使用While循环时,建议用户设
7、定循环间隔,因为如果没有循环间隔的话,While循环是“全速”运行的,这样会占用过多的系统资源,尤其是对需要长时间执行的循环。精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31顺序结构LabVIEW中的顺序结构包括: LabVIEW是图形化的编程语言,程序的执行顺序是基本数据的流向的,也即,数据的连接即指定了程序的执行顺序,没有数据线连接的不同程序块是并行执行的,所以一般情况下不用顺序结构,但在某些特殊时候,如果一定指定某几段程序执行的先后顺序,则要用到顺序结构。 它们的功能是相同的,只是图形形式不同,也即编程时所占用的空间不同。o平铺式顺序结构o
8、层叠式顺序结构平铺式顺序结构 层叠式顺序结构 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31平铺式顺序结构的数据流向数据流向执行效果 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31层叠式顺序结构的数据流向数据流向 执行结果精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31定时结构o 定时循环 o 定时顺序 o 定时VI平铺式顺序结构 函数编程结构 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31定时结构
9、定时循环o开发支持多种定时功能的VI o精确定时 o循环执行时返回值 o动态改变定时功能或者多种执行优先级 平铺式顺序结构 定时循环根据指定的循环周期顺序执行一个或多个子程序框图或帧。 一般在以下情况中可以使用定时循环结构: 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31定时结构定时顺序 定时顺序结构由一个或多个子程序框图(也称“帧”)组成,在内部或外部定时源控制下按顺序执行。 与定时循环不同,定时顺序结构的每个帧只执行一次,不重复执行。定时顺序结构适于开发只执行一次的精确定时、执行反馈、定时特征等动态改变或有多层执行优先级的VI。 精通Lab
10、VIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31定时结构定时VI名称图标和端口基本功能创建定时源层次结构根据定时源名称中输入的名称,创建一个层次结构的定时源。清除定时源停止或删除为其它源所创建或指定的定时源。创建定时源创建用于控制定时结构执行的1kHz、1MHz或软件触发定时源发射软件触发定时源使用创建定时源VI创建软件触发定时源。定时结构停止停止名称中输入的定时循环或定时顺序。同步定时结构开始将定时结构名称中输入的定时循环或定时顺序结构名称添加到同步组名称所指定同步组,从而使上述循环或顺序开始同步。精通LabVIEW虚拟仪器程序设计与案例实现第4章 La
11、bVIEW中的程序结构2022-5-31实例定时循环应用举例 用定时循环产生两个相差指定数据点数的正弦波形,也即两波形起始相位不同,波形总点数可以任意指定。精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31条件结构 条件结构也即选择结构,用于根据条件判断或者用户选择执行相应的程序代码,相当于C语言中的“case”结构。 条件输入端决定执行哪个子图形的代码,条件输入值可以是整型、字符串型、布尔型或者枚举型,默认情况是布尔型。选择条件标识框里盛放了所有可以被选择的条件,并显示了当前子图形代码被执行的条件。 条件结构的设置:o条件输入端口o增减分支与默认
12、分支o数据通道精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31实例用条件结构实现正弦波-随机数信号的选择 本例中,主要演示条件选择结构的基本功能。 共有3个选项:随机数、正弦波、其它。 其中,“随机数”和“正弦波”都分别对应一个分支,并且“正弦波”分支为默认分支,“其它”选项没有对应具体的分支。按条件结构的约定,没有具体分支的选项应该对应“默认分支”。 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31事件结构 编写人机交互界面时,经常要用到事件驱动的机制,LabVIEW同样支持事件驱动。(1)创建一
13、个事件结构;(2)设置超时参数;(3)添加或删除事件分支;(4)编辑触发事件结构的事件源;(5)设置默认分支结构(系统默认将超时分支作为默认分支);(6)创建一个While循环,将事件结构包含在While循环体内。事件结构主要包括: o超时端口o事件端口o事件选择标签o代码框事件结构创建步骤: 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31事件结构编辑事件编辑超时事件 添加新事件 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31公式节点 通过公式节点,用户不仅可以实现复杂的数学公式,还能通过文本编
14、程写一些基本的逻辑语句,如ifelse、case、while等。 当一个公式或者函数比较复杂时,如果纯粹用图形化的模块就会使程序看上去异常庞大,程序的可读性将大大降低。精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31公式节点中允许的运算符运算符含义*指数+、-、!、+、-一元加、一元减、逻辑非、补位、前向加和后向加*、/、%乘、除、取模(取余)+、加法和减法、=、&、|、%,或*。在公式节点中可以选用的函数可以在其帮助文件中找到 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31实例用公式节点实现复杂
15、函数 在画波形图时,如果用常规的波形图或者波形图表,则横轴是从0开始的,如果想画y关于x的图像,或者说是非均匀采样的图像,则要用XY图或者Express XY图,关于这些图形控件的详细说明请参考第5章相关内容。xxxxxycossin522精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31反馈节点 “反馈节点”的基本功能与移位寄存器是相似的,它的优点在于可以节省空间,使程序看上去更紧凑。用反馈节点实现前N项求和精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31变量o 局部变量 o 全局变量 o 共享变量
16、 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31局部变量o程序内部传递数据o作为控制量向其它对象传递数据o作为显示量接收其它对象传递过来的数据局部变量创建方法1局部变量创建方法2输入/显示转换精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31实例用局部变量传递数据 局部变量只能在程序内部传递数据 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31全局变量o局部变量程序内部传递数据o全局变量程序间传递数据全局变量创建方法1全局变量创建方法2精通LabVIE
17、W虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31实例用全局变量传递数据 用全局变量实现程序间数据传递 精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31禁用结构o程序框图禁用结构 类似于C语言中的/*/,可用于大段地注释程序禁用结构是从LabVIEW8中开始新增的功能,用来控制程序是否被执行。 o条件禁用结构 类似于C语言中通过宏定义来实现条件编译精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31综合实例1求100以内能被3整除的自然数和 o用For循环确定数据范围o用“
18、商与余数 ”VI实现条件条件判断o用“条件结构”实现数据选择精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31综合实例2动态窗口管理 o通过VI属性设置实现“调用时运行”o通过事件结构实现按钮事件响应o通过属性节点实现VI返回精通LabVIEW虚拟仪器程序设计与案例实现第4章 LabVIEW中的程序结构2022-5-31思考与练习o LabVIEW的For循环使用中要注意哪些细节?o LabVIEW的While循环使用中要注意哪些细节?o 移位寄存器和反馈节点有何异同?使用中要注意哪些细节?o 事件结构使用时要注意哪些细节?o 公式节点有哪些好处?可以用哪些算符?o LabVIEW的变量可以分为哪几类?各有哪些特点和用处?o 程序框图禁用结构和条件禁用结构有哪些用处?