第5讲 LabVIEW程序结构2
labview第五章结构
子分支定义输出数据通道。
例子
设定默认的子分支,当
所有条件都不满足时,
执行默认子分支
LabVIEW是一种数据流程序设计语言,没有明确的先后顺序,当节点
所有输入端的数据全部有效时,节点才执行。
顺序结构,它是一种按先后顺序执行的结构,看上去象电影胶片的帧, 每一帧为一段框图程序,按照帧的顺序来执行框图程序。
5. 编辑该事件触发后需执行的相应代码,
并将其和事件源控件一起放入该分支事件 框中。
6. 添加下一个分支的事件源控件、分支及 程序。。。
7.创建一个While循环,将事件结构放入循
环中。
例:用事件结构实现密码登陆:当用户输入密码为123456
时弹出“密码正确登陆成功”对话框,单击“确定”按钮
如果在全局变量声明VI中建立多个控件,可以用操 作工具在全局变量的图标上单击,在列出的所有变 量对象中选择所需的对象。
(3)使用示例
利用全局变量在不同VI中传递数据。
创建一个全局变量声明Ⅵ,其中包含一个数值型控件并命名为 “数值”和布尔型控件并命名为“状态”,保存为“GV.vi”。
新建一个VI命名为“采集信息.vi”,前面板中有一个旋钮开关和按
2.输入端口的设置
条件结构有一个条件输入端口
,根据连到该
端口 的值来判断执行哪一个子分支。
条件输入端口的数据类型有布尔型、整型、字符 串型和枚举型。
3.增减分支及默认分支的设置
应设置一个默认项来处理超出条件选项范围的情 况。 鼠标右键,选择“本分支设置为默认分支”。
4.数据通道的设置
5_LabVIEW结构
16
5.5 事件结构
超时等待时 间输入端子
当前事件框 中程序运行 的触发事件
当前事件数 据
17
5.5 事件结构(EVENT STRUCTURE)
18
5.5 事件结构(EVENT STRUCTURE)
基于事件结构的单击计数器
19
11/23/2010 11:06 PM
小试身手
给出一百分制成绩,要求输出等级A,B,C,D,E。90 给出一百分制成绩,要求输出等级A,B,C,D,E。 A,B,C,D,E 分以上为A 80~89为 70~79为 60~ 分以上为A,80~89为B,70~79为C,60~69 60分以下为 分以下为E 为D,60分以下为E。 2 10项之和 项之和。 求分数序列 , 3 , 5 , 8 , 13 ,... 前10项之和。
1 2 3 5 8
写一个跑马灯程序, 写一个跑马灯程序,5个灯从左到右不停的轮流 点亮, 点亮,闪烁间隔由滑动条调节
20
第5章 程序结构
11/23/2010 11:06 PM
本章内容
循环结构(For循环While循环) (For循环While循环 5.1 循环结构(For循环While循环) 5.2 公式节点 5.3 顺序结构 5.4 条件结构 事件结构 5.5 事件结构
2
11/23/2010 11:06 PM
5.3 顺序结构
5.3.1 层叠式顺序结构
帧之间数据传递
7
11/23/2010 11:06 PM
5.3.2 平铺式顺序结构
8
11/23/2010 11:06 PM
5.3.2 平铺式顺序结构
帧之间数据传递
9
11/23/似于if else 或case 或swich
LabVIEW教程PPT课件
ln(x)
说明 绝对值 反余弦,x弧度 反双曲余弦,x弧度 反正弦 反双曲正弦 反正切函数 反双曲正切 返回大于1的最小整数 余弦积分,x为非负实数 余弦函数 双曲余弦 余切函数 余割函数 指数函数
exp(x)-1 返回小于x的最大整数 返回距x最近的整数 返回0-x间最近的整数
自然对数函数
这对于实现有多个变量的公式来说很有用。否 则需要使用复杂的框图模型。
通过在框中直接键人公式代码来代替创建框图 部分。
2021/3/9
17
公式节点的输入、输出变量
❖ 从公式节点边框上弹出快捷菜单,从中选择Add Input 或 Add Output。
❖ Change to Output可将输入改变为输出,Change to Input可将输出改变为输入。
2021/3/9
23
局部变量的创建和使用方法
❖ 局部变量的创建既可以通过图示右键弹出菜 单获得,也可以在功能模板上选择 Function/Structures/Local Variable将其拖到 框图上,得到一个代“?”的图标,再将其 与框图中已有的变量建立关联。
2021/3/9
24
4.8 局部变量和全局变量
1. 掌握循环结构的自动索引功能和函数 的多态性操作方法。
2021/3/9
32
5.1 LabVIEW的数据类型
整形数 浮点数 逻辑量 字符串 文件路径
2021/3/9
兰色 橙色 绿色 粉色 青色
33
5.2 数值类型
❖ 最基本的数据类型是数值类型,这是一种标量值, 通常包括一个整型值或实型数值(浮点)。
2021/3/9
9
建立循环结Leabharlann 演示2021/3/910
LabVIEW虚拟仪器设计教程第5章 程序结构
Result=(A+B)/C的控制流编程和数据流编程的流程图
Result=(A+B)/C的LabVIEW实现
由于LabVIEW是图形化编程语言,它的代码以图形形式表现,因此各种 结构的实现也是图形化的。每种结构都含有一个可调整大小的清晰边框,用 于包围根据结构规则执行的程序框图部分。结构边框中的程序框图部分被称 为子程序框图,从结构外接收数据和将数据输出结构的接线端称为隧道,隧 道是结构边框上的连接点。
5.1 顺序结构
第5章 程序结构
5.1 5.2 5.3 顺序结构 循环结构 条件结构
5.4
5.5 5.6
事件结构
禁用结构 公式节点
程 序 结 构 简 介
程序结构对任何一种计算机编程语言来说都是十分重要的,它控制整个 程序语言的执行过程,一个好的程序结构,可以大大提高程序的执行效率。 LabVIEW作为一种图形化的高级程序开发语言,执行的是数据流驱动机制, 在程序结构方面除支持循环、顺序、条件等通用编程语言支持的结构外,还 包含一些特殊的程序结构,如事件结构、使能结构、公式节点等等。
1.层叠式顺序结构
递增/递 减按钮 选择器标签 当前帧
单帧结构
多帧结构
(a)层叠式顺序结构
2.平铺式顺序结构
单帧结构
(a)层叠式顺序结构
多帧结构
(b)平铺式顺序结构
层叠式顺序结构的优点是节省程序框图窗口空间,但用户在某一时刻只能看到 一帧代码,这会给程序代码的阅读和理解带来一定的难度。
LabVIEW程序设计与虚拟仪器之程序结构ppt文档
While循环可以进行嵌套。 【例2.1】 使用While循环每0.5秒显示一个随机数和循环 次数,最后波形显示所有随机数序列。 VI的前面板和程序框图如图2-2所示,While循环条件端子 与布尔开关对象相连,只要开关状态为“关”,程序重复执行, 直到条件端子为“开”,停止循环。While循环框内放置一个 随机数对象和Time Delay Express VI,每0.5秒循环一次,在前 面板显示随机数和循环次数,最后利用While循环的自动索引 功能将随机数序列通过波形显示出来,可以看到,波形的横坐 标表示循环次数,当循环次数为115时,随机数加1是1.38577。
图2-6 例2.2的前面板和程序框图
2.1.3 For循环 For循环位于Functions→Structures子模板上。 For循环有两个固定的数据端子,分别是计数端子(Loop
Count)和重复端子(Loop Iteration),如图2-8所示。其中计数端 子连接整型数值,指定循环次数;重复端子输出已经执行循环 的次数,循环次数默认从“0”开始计数,依次增加“1”。
LabVIEW程序设计与虚拟仪器之程序结构
LabVIEW程序设计与虚拟仪器之程序结构
本章将系统介绍LabVIEW提供的程序结构,包括While Loop(While循环)、For Loop(For循环)、Shift Register(移位寄存 器)、Case Structure(分支结构)、Sequence Structure(顺序结构)、 Formula Node(公式节点)等。
2.1 循 环 结 构
在LabVIEW中有While循环 和 For循环 两种循环结构。二
者的区别是:While循环只要满足循环退出的条件则退出相应 的循环,否则变成死循环;而For循环是预先确定循环次数, 当循环体运行完指定的次数后自动退出循环。 2.1.1 While循环
虚拟仪器_labview_课件PPT_第五章_程序结构 共40页
第五章 程序结构
5.1 While 循环
河南工业大学机电学院
当循环次数不能预先确定时,就需要用到While循环。它 也是LabVIEW最基本的结构之一。相当于C语言的While循环 和do循环: While(条件) {
}
Do {
} LabVIEW中While循环可从框图功能模板Function → Programming→Structure子模板中创建。
第五章 程序结构
5.3 条件结构-应用
河南工业大学机电学院
第五章 程序结构
5.3 条件结构-应用
河南工业大学机电学院
第五章 程序结构
5.4 顺序结构
河南工业大学机电学院
在代码式的传统编程语言中,默认的情况是,程 序语句按照排列顺序执行,称为控制流程;但 LabVIEW中不同,它是一种图形化的数据流式编 程语言,具有并发、多任务的特点。
第五章 程序结构
河南工业大学机电学院
5.1 For 循环-移位寄存器的使用
移位寄存器的特点: (1)移位寄存器(左右)是For循环的数据缓冲区。 (2)可以增加和减少移位寄存器的个数。 (3)左右两侧移位寄存器的数据类型必须一致。
第五章 程序结构
5.1 For 循环-移位寄存器的使用
河南工业大学机电学院
第五章 程序结构
5.2 While 循环
河南工业大学机电学院
第五章 程序结构
5.2 While 循环
河南工业大学机电学院
最基本的While循环由:循环框架、迭代端口i
和条件端口构成。
条件端口控制循环是否执行,每次循环结束后, 判断条件端口的值,若为False,停止执行循环; 若为True,则继续执行下一次循环。不给条件端 口赋值,则While循环只执行一次。
【LabVIEW】程序结构
【LabVIEW】程序结构(包括:while循环、For循环、事件结构、条件结构、公式节点)1、while循环LabVIEW 在执⾏While循环时,如果⽤户没有给它设定循环时间间隔,那么它将以CPU的极限速度运⾏。
按下Ctrl+Alt+Delete 快捷键打幵任务管理器,可以看到它⼏乎将CPU全部利⽤,正常情况这样做⽐较危险,因为这样可能会导致整个LabVIEW 程序看上去跟“死掉” ⼀样。
在很多情况下我们没有必要让 While 循环以最⼤的速度运⾏,所以最好给 While 循环加上时间间隔。
有两种⽅法:⼀种是在每个循环中添加⼀个等待时间,只有在等待完毕后才运⾏下⼀个循环。
另⼀种⽅法是使⽤定时循环(Timed Loop)。
2、事件结构Labview 提供了事件结构,即仅当 “事件” 发⽣时,程序才作相应的响应。
通过事件结构,程序可以变得很简单,并降低CPU利⽤率。
当多个事件发⽣时会形成事件队列,直到每个事件对应的代码都被执⾏为⽌,因此不会有事件被漏掉的情况。
注意:事件结构必须放在 While 循环中,否则没有意义,因为当⼀个事件完成后,程序需要去等下⼀个事件的发⽣。
在跟⽤户进⾏交互的时候,尽量使⽤事件结构。
3、条件结构(1)当条件结构有多个分⽀时,必须设置默认分⽀,否则程序⽆法执⾏。
(是条件结构不是层叠顺序时)(2)隧道在条件结构⼀个分⽀的边框上创建输出隧道时,其他分⽀边框上也会出现输出隧道。
只要有⼀个输出隧道没有连线,则条件结构每个分⽀边框上的输出的隧道都显⽰为⽩⾊正⽅形。
隧道可使⽤数据类型的默认值,不是每个速调都必须连线。
在条件结构上右键单击输出隧道,从快捷菜单中选择未连接时使⽤默认,这样所有未连线的隧道都将使⽤隧道数据类型的默认值。
索引隧道,⼀个循环外的数组通过索引隧道连接到循环结构上,隧道在循环内⼀侧会⾃动取出数组的元素,依顺序每次循环取出⼀个元素。
⽤索引隧道传出数据,可以⾃动把循环内的数据组织成数组。
LabVIEW的基本编程结构和语法
LabVIEW的基本编程结构和语法LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种广泛应用于科学研究和工程领域的图形化编程语言。
它提供了一种直观的编程环境,使得用户能够通过拖拽和连接图标来创建程序。
本文将介绍LabVIEW的基本编程结构和语法,帮助读者了解如何使用LabVIEW进行编程。
1. 数据流图(Dataflow Diagram)LabVIEW的核心思想是数据流图,即通过连接不同的节点以实现数据的流动和处理。
数据流图由函数块(Function Block)、图形化控件(Graphical Control)和连线(Wire)组成,用户可以根据需求自由搭建数据流图。
函数块代表不同的功能模块,例如数学运算、数据处理和界面控制等。
图形化控件用于与用户进行交互,包括按钮、输入框和图表等。
连线用于连接函数块和图形化控件,定义数据的传递路径。
通过灵活的拖拽和连接操作,用户可以将各种节点组合成一个完整的数据流图,实现复杂的功能。
2. 程序结构(Program Structure)在LabVIEW中,程序由模块(SubVI)组成,每个模块负责执行特定的任务。
模块可以是用户自定义的,也可以是LabVIEW提供的预定义模块。
程序结构由主程序和子程序组成,用户可以通过调用不同的子程序来实现特定的功能。
在图形化界面中,每个模块被表示为一个矩形图标,用户可以拖拽和连接模块来构建程序。
程序的执行顺序由数据流图的连线决定,当一个模块的输入数据准备好时,它就会被执行。
通过合理设计程序结构,可以提高代码的可读性和可维护性。
3. 数据类型(Data Type)在LabVIEW中,数据类型是非常重要的概念。
它决定了数据的表示方式和可操作性。
LabVIEW支持各种常见的数据类型,包括整数、浮点数、字符串和数组等。
用户可以根据需要选择不同的数据类型,并进行转换和操作。
labview教程结构
labview教程结构LabVIEW教程结构LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一款由美国国家仪器公司开发的图形化编程环境和开发系统,主要应用于科学研究、工程设计和教学实验等领域。
本文将介绍LabVIEW教程的结构,帮助初学者快速上手并掌握LabVIEW的基本知识和技能。
一、LabVIEW简介1.1 LabVIEW的定义和特点1.2 LabVIEW的应用领域1.3 LabVIEW的版本和平台二、LabVIEW的安装与配置2.1 LabVIEW的安装步骤2.2 LabVIEW的配置与环境设置三、LabVIEW界面介绍3.1 LabVIEW主窗口及其组成部分3.2 LabVIEW面板与前面板的区别与用途3.3 LabVIEW工具栏和控件栏的功能和使用方法四、LabVIEW基础知识4.1 LabVIEW的数据流图编程模型4.2 LabVIEW的数据类型和变量4.3 LabVIEW的数据结构和数组4.4 LabVIEW的函数和VI(Virtual Instrument)的概念 4.5 LabVIEW的数据采集与处理五、LabVIEW编程基础5.1 LabVIEW的程序结构和控制结构5.2 LabVIEW的循环和条件语句5.3 LabVIEW的事件驱动编程5.4 LabVIEW的函数和子VI的调用5.5 LabVIEW的错误处理和调试技巧六、LabVIEW图形化编程与数据可视化6.1 LabVIEW的图形化编程与数据流图设计6.2 LabVIEW的图形化用户界面设计6.3 LabVIEW的数据可视化和绘图技巧七、LabVIEW高级技术与应用7.1 LabVIEW的网络编程和远程控制7.2 LabVIEW的多线程和并行计算7.3 LabVIEW的数据库和文件操作7.4 LabVIEW的图像处理与机器视觉7.5 LabVIEW的嵌入式系统开发八、LabVIEW实例与案例分析8.1 LabVIEW的实际应用案例介绍8.2 LabVIEW的项目实施与调试8.3 LabVIEW的故障排除与优化技巧九、LabVIEW学习资源与进阶指南9.1 LabVIEW的官方文档和在线帮助9.2 LabVIEW的学习资料和教程推荐9.3 LabVIEW的认证与培训机构9.4 LabVIEW的社区和论坛资源总结:通过本文的介绍,读者可以了解到LabVIEW教程的整体结构和内容安排。
精品课件-LabVIEW编程与项目开发实用教程-第2章 程序结构
2.3.2顺序结构组成与操作 LabVIEW有两种顺序结构,平铺式顺序结构和层叠式顺序结构, 见图2-25,两种顺序结构功能完全相同。
图2-25 操作菜单与顺序结构的组成
顺序结构中的每一个子框架叫顺序结构的帧。利用鼠标左键拖 拽出第0帧顺序结构之后,在结构边框上右击鼠标弹出图2-25快 捷菜单,选择 在后面添加帧 可以继续添加帧。同样,选择 在 前面添加帧、复制帧、删除本帧 选项对顺序结构的帧进行操作。 顺序结构会按框图标识符0,1,2…的顺序,从第0帧开始,一 帧一帧按顺序执行每一帧框图程序。
图 2-17 整型选择器端子设置
2.2.2 条件结构操作
在条件结构框架上单击鼠标右键,在弹出的快捷菜单中选择 在后 面添加分支 菜单项,用户就可以为条件结构添加新的分支,如图218,创建或添加新分支后可以为新分支添加分支名。删除分支操作 与添加分支相同。
当由外部节点向结构框架连线时,在结构边框就创建了输入
图2-9 移位寄存器的创建方法
循环中可有多对移位寄存器。 一个移位寄存器可以有多个左端子,但只能有
一个右端子。 增加左端子数量的方法是使用定位工具锁定左 2、端移子位,寄向存下器拖工拉作出流所程需个数左端子。 移位寄存器在循环结构两端 的接线端是强制使用同一内 存的。 因此,上一次迭代执行产生 的某一值,传给移位寄存器 右侧的接线端,如果下一次 迭代运行需要用到这个数据,
使用While循环显示随机数,计算加法,每次循环的时间定
为500ms。在循环框内增加使用等待节点
,可以控制循环
执行的速度,便于观察每次循环执行的情况。循环边框上蓝色实心
方格是循环结构内外的数据交换方式,称为隧道,详见2.1.4小节。
【例2-2】测试While循环条件端口有两种使 用状态。
LabVIEW的循环与结构PPT课件
4.2 While循环
图4-8 While循环界面
最基本的While循环由循环框架、条件接 线端(输入端)和计数接线端(输出端)组成。
第20页/共118页
4.2 While循环
与For循环的计数接线端一样,While的计 数接线端也是输出循环已执行次数的数字输出端 子。While的条件接线端是一个布尔变量,需要 输入一个布尔值。
第25页/共118页
4.3 条 件 结 构
图4-11 条件结构界面
如果要将分支选择器的端口数据类型从数字型改成布 尔型,则对应的0和1分支会分别改变成假和真。 选择器标签中也可以输入单个值、数值列或数值范围。
第26页/共118页
4.3.1 添加、删除与排序分支
图4-12 分支的添加和排序
在条件结构框架上单击鼠标右键,在弹出 的快捷菜单中选择“在后面添加分支”菜单项 用户就可以为条件结构添加新的分支,如图4-
第14页/共118页
4.1.3 自动索引在For循环内的应用
图4-4 For循环自动索引示例
自动索引示例
自动索引示例2
第15页/共118页
4.1.5 反馈节点在For循环内的应用
和移位寄存器一样,反馈节点也是用来实现数据在前后两次循环中的传递。但与移位寄存器相比,使 用反馈节点有时能让程序更加简洁易懂。
图4-20 平铺式顺序结构的数据传输
平铺式顺序结构
第43页/共118页
4.5 事 件 结 构
所谓事件,是指对程序活动发生的异步通知。事件可以来自于用户界面、外部I/O或其他方式。用户 界面事件包括鼠标点击、键盘按键等动作,外部I/O事件则指诸如数据采集完毕或发生错误时硬件触发器或 定时器发出信号。 LABVIEW中的事件结构也是一种特殊的选择结构。
LabVIEW程序的主要框架
LabVIEW程序的主要框架在开始界面的New栏里选More...,弹出对话框里会有很多模板可以选择,因为是从8.2开始用的。
对于我们常用的来说,还是Frameworks-Design Patterns里的几个模板值得好好研究一下。
下面简单介绍下几种简易的框架:Master/Slave Deisgn Pattern(主从设计模式)如上图模板用于创建主/从模式的应用程序。
主循环始终保持执行状态,并向一到多个从循环发送通知,使其执行代码。
从循环收到通知后,将连续执行循环内部的代码直到完成任务,然后等待下一个通知。
与改模式相比,生产者/消费者模式仅当队列中仍有数据时,消费者循环才会执行。
在这种模式下,Master循环通过Notifier(通知器)来控制Slave循环的工作。
这种模式有什么用呢?如果是传统的单循环结构,当程序处理代码耗时过长的话,很有可能会造成控制指令响应的滞后。
而在主从模式下,Master循环可以用来接收控制指令,Slave循环用来执行相应的代码,从响应上来说,就能够避免长时间不响应的情况出现。
Producer/Consumer Design Pattern (Events)(响应事件的生产者/消费者模式)如上图该模板用于生产者/消费者模式的应用程序,以事件驱动的方式,生成队列中的项。
如需要响应事件实现代码的异步执行,同时不影响用户界面的响应速度,可考虑用该模式替代“用户界面事件处理器”模式。
这种模式的结构很类似于主从模式,这里的两个循环变成了Producer循环和Consumer循环。
在主循环里,用一个Event Structure响应用户的界面操作,每一步操作通过Queue送到Consumer循环里执行。
这样,实现了界面和事物代码的分离,有助于代码的模块化设计。
Producer/Consumer Design Pattern (Data)(处理数据的生产者/消费者模式)该模板用于创建生产者/消费者模式的应用程序。
LABVIEW结构
说明
大于等于 小于等于
││
! & │ ^ != ==
逻辑或
逻辑非 位与 位或 位异或 不等于 等于
LABVIEW结构
1 While Loop循环 2 For Loop 循环 3 移位寄存器 4 Case结构 5 顺序结构 6 结构连线中的常见问题 7 公式节点 8 局部变量和全局变量
1 While Loop循环
While循环有两个端子:条件端子(输入端子)和重 复端子(输出端子)。重复端子的作用是输出循环 已执行次数的数字。条件端子输入的是布尔值 TRUE 或 FALSE。在每一次重复执行后,Ⅵ 检查 条件端子,如果条件端子值为 TRUE 那么执行下 一个重复,直到条件端子变成 FALSE。条件端子 的默认值是 FALSE。由于检查条件端子输入值是 循环结束后,因此While循环至少也要执行—次。
说明 返回ln(x)+1 以10为底对数 以2为底对数 xy中最大值者 xy中最小值者 求模,x/y的整数值 X*π x^y (0,1)区间的随机数 返回x/y的余数 正割 符号 正弦,x弧度 sin(x)/x 双曲正弦 平方根 正切 双曲正切
公式节点的运算符
运算符
?: &&
说明
条件赋值 逻辑与
运算符
LabVIEW 7.1 一级反应VI
公式语句
• • 公式语句使用的算术表达式,句法类似于多数文本编程语言。 可给语句添加注释,注释用一对 “/*” 封闭起来(/*注释*/ )。 使用Labeling工具在公式节点内输入公式,每个公式一定要用 分号结束,并且变量的名字是大小写敏感的。
函数名 abs(x) acos(x) acosh(x) asin(x) asinh(x) atan(x) atanh(x) ceil(x) ci(x) cos(x) cosh(x) cot(x) csc(x) exp(x) expm1(x) floor(x) int(x) intrz(x) ln(x)
2.Labview程序结构
第二章:程序结构 第二章:
第二章:程序结构 第二章:
创建一个可以在图表中显示运行平均数的VI。
前面板 1. 打开一个新的前面板,按照下图所示创建对象。 2. 把波形图表的坐标范围改为0.0到2.0。 3. 在添加开关之后,用鼠标右键单击它,在快捷菜单中选择机械动作» 单击时转换,再选择数据操作»当前值设为默认值。
随机信号 1.0 0.8 0.6 0.0 0.4 0.2 控制开关 0.0 0 1023 ON OFF 10.0 2.0 8.0 循环延时 4.0 6.0
第二章:程序结构 第二章:
按照下图创建流程图。 按照下图创建流程图。 a. 从编程»结构 中选择 编程» 中选择While 循环,放置在流程图中。拖至适当大小, 循环,放置在流程图中。拖至适当大小, 将相关对象移到循环圈内。 将相关对象移到循环圈内。 b. 从编程»数值中选择随机数(0-1)功能函数放到循环内。 编程»数值中选择随机数 中选择随机数( )功能函数放到循环内。 c. 在循环中设置编程»定时中选择等待下一个整数倍毫秒,该函数的时 在循环中设置编程 定时中选择等待下一个整数倍毫秒, 编程» 间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟0到 间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟 到10 毫秒。 毫秒。 d. 照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端 照上面所示的流程图连线, 子连接起来,并把启动开关和While 循环的条件端子连接。 循环的条件端子连接。 子连接起来,并把启动开关和 a. 返回前面板,调用操作工具后单击垂直开关将它打开。 返回前面板,调用操作工具后单击垂直开关将它打开。 b. 执行该 VI。While循环的执行次数是不确定的,只要设置的条件为真,循 循环的执行次数是不确定的, 。 循环的执行次数是不确定的 只要设置的条件为真, 环程序就会持续运行。 环程序就会持续运行。 c. 单击垂直开关,中止该 。 单击垂直开关,中止该VI。 随机信号
第三章 labview程序结构
第10页
《虚拟仪器》 虚拟仪器》
下面是用移位寄存器(左图)和反馈节点(右图)实现 下面是用移位寄存器(左图)和反馈节点(右图) a++的框图程序 a++的框图程序。 的框图程序。
第11页
《虚拟仪器》 虚拟仪器》
2.3.2 While循环 While循环 For循环和 For循环和While循环的区别: 循环和While循环的区别 循环的区别:
条件端口控制循环的停止与否。 条件端口有两种状态 : 当使用状态为Stop 当使用状态为Stop if True 时,若输入值为Ture, 时,若输入值为Ture, 则停止循环 。若输入值为False,则继续执行下一 。若输入值为False,则继续执行下一 次循环。 当使用状态为Continue 当使用状态为Continue if True 时,若输入值为 Ture,则继续执行下一次循环。若输入值为False, Ture,则继续执行下一次循环。若输入值为False, 则停止循环。 循环结束后,才去检测条件端口的值,因此不管条件 是否成立,循环至少要执行一次。
For循环用于将结构中的程序循 For循环用于将结构中的程序循 环执行指定的次数。 在开始For循环之前,从循环次 在开始For循环之前,从循环次 数端口读入循环次数,计数端 口输出0 口输出0值。 接下来执行For循环框内框图代 接下来执行For循环框内框图代 码程序,每执行一次计数端口 值自动加1 值自动加1。 循环次数达到设定值后,退出 循环。
For循环要执行预先指定的循环次数。 For循环要执行预先指定的循环次数。 循环要执行预先指定的循环次数 而While循环只有在条件端口接收到的值为False时才 While循环只有在条件端口接收到的值为 循环只有在条件端口接收到的值为False时才 停止循环。While循环不必知道循环次数 循环不必知道循环次数。 停止循环。While循环不必知道循环次数。 While循环不满足条件也要执行 While循环不满足条件也要执行1次。 循环不满足条件也要执行1 For循环当 For循环当N<1时1次都不执行。 循环当N<1时 次都不执行。
第五章 LabVIEW编程结构
注意:公式节点中变量字母X,Y大、小写是有区别的,开方的函数sqrt(X)中函数名称是 小写。
15
谢谢!
16
图5-6tem3.vi程序框图
图5-7定时读温度程序框图 8
第五章 LabVIEW编程结构
• 5.2 分支结构:Case
Case结构含有两个或者更多的子程序(Case),执行哪一个取决于与选择端子或者选择对象的外部接口相连接 的某个整数、布尔数、字符串或者标识的值。当选择端子连接的是布尔型变量时,只有True Case和False Case两 种。当连接的是数字型变量时,Case框上面的标识将变成数字0,1,…根据输入量的不同,Case结构选择运行不同 的程序。必须选择一个默认的Case以处理超出范围的数值,或者直接列出所有可能的输入数值。Case结构见5-3图, 各个子程序占有各自的流程框,在其上沿中央有相应的子程序标识:Ture、False或1、2、3…。倒三角位置用来改 变当前显示的子程序(各子程序是重叠放在屏幕同一位置上的)。Case结构如图5-8所示。
2
第五章 LabVIEW编程结构
LabVIEW属于结构化语言,其程序可以由循环结构、分支结构和顺序结构组成。下面 对几种基本结构进行介绍。
• 5.1 循环结构
LabVIEW中的循环结构有两种,分别是While循环和For循环,区别在于For循环用于已知循环 次数的情况。
• 5.1.1 While 循环
使用Flat Sequence Structure可以看到整个程序框图,当程 序框图所占的空间的大小允许时,可以使用这种顺序结构。在程序 框上单击右键,在弹出的快捷菜单中选择Add Frame After或Add Frame Before,这样可以在本帧后或前再添加一帧,如图5-13(a) 所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用户自定义事件
LabVIEW自产的事件主要指那些由用户对界面对象进行操作的 事件,比如单击、改变某个控件的值以及程序自身状态变化等, 如果需要在程序中满足其他某种条件时也产生一个事件,就只 能用用户自定义事件了。
用户自定义事件是使用“创建用户事件”函数创建出来的事件。 当需要抛出一个用户自定义事件时,可以使用“产生用户事件”
数。
• 请谨慎选择通知或过滤事件。用于处理通知事件的事件分支,并将无 法影响LabVIEW处理用户交互的方式。如要修改LabVIEW是否处理用 户交互,或LabVIEW怎样处理用户交互,可使用过滤事件。
• 不要将前面板关闭通知事件用于重要的关闭代码中,除非事先已采取 措施确保前面板关闭时VI不中止。例如,用户关闭前面板之前,确保 应用程序打开对该VI的引用。或者,可使用前面板关闭?过滤事件,该 事件在面板关闭前发生。
函数发出一个事件。
程序抛出的用户自定义事件可以携带自定义的某些数据。 用户自定义事件可以作为一种规范的格式,用在VI的初始化、
终止等场合。处理VI被调用或开始运行时首先需要处理的事情 以及VI终止前必须处理的事情。
例:程序有两个输入控件:一是数值型控件A,二是字符串控件B,当A>10或B的长 度大于10个字符时,程序抛出一个用户自定义事件“警告”
可以明显地看出,过滤型事件比相应的通知型事件要先发出。
图4-25 事件结构框架0(过滤事继 事件
图4-26 事件结构框架1(通知事件)
(a)“确定”按钮动作前 (b)选择“是”的计算结果 (c)选择“否”的计算结果
图4-27 静态事件结构运行结果
5.3.3 事件结构的使用
通常,程序不可能只需要处理一个事件,往往在程序运行中不断有需要处理的各种 事件出现,所以,事件结构通常会被放在一个while循环结构内。我们把这种一个 事件结构外套一个while循环结构的程序模式称为“循环事件结构”。
循环事件结构非常适合应用于界面编程,所以它是LabVIEW中最常见的程序模式 之一。 实例:用量表显示旋钮和转盘的和,要求: 1. 程序自动连续运行; 2. 程序显示无卡顿; 3. 占用物理资源尽量少; 4. 可随时结束运行;
过滤型事件是在 LabVIEW 处理用户操作之前发出的,并等待相对应 的事件框架执行完成之后,LabVIEW 再处理该用户操作。这类事件的名 称之后都有一个问号。例如键盘按下?事件(Key Down? Event),当 用户处理该事件时,控件的值还没有被改变,因此,用户可以在该事件 对应的事件框架内决定是否让 LabVIEW先处理该事件,或改变键盘按下 的值之后再让LabVIEW继续处理该事件。
有时候,用户的一个操作会使得多个事件产生源都发出某一事件, 比如在“开关”上单击,则“开关”控件和“开关”控件所在的窗 格都会发出一个“鼠标按下”事件。
与键盘相关的事件,如键按下、键释放等,只在当前被选中的控件 上产生。
与鼠标相关的事件,如鼠标按下、鼠标释放等,按照从外向里的顺 序发生。
值改变事件按照从内向外的顺序发出。
注册事件节点可以注册两种 事件:LabVIEW自产事件和 用户自定义事件,前者包括 前述6类事件。
动态事件注册过程: 1、获得对象的引用,引用输 入到“注册事件”节点。 2、“注册事件”节点输出接 到动态端子上。 3、配置”动态事件“。 4、在结构外,加入”取消注 册事件“节点。
实例:编写一个VI,在VI的面板上单击时,显示出鼠标所在的坐标,但所有的事件 需要在一个子VI中处理。
件结构中处理该触发停止布尔控件。
• 如无需通过编程监视特定的前面板对象,考虑使用“等待前面板活动”函数。 • 用户界面事件仅适用于直接的用户交互。 • 避免在一个事件分支中同时使用对话框和“鼠标按下?”过滤事件。 • 避免在一个循环中放置两个事件结构。 • 使用动态注册时,确保每个事件结构均有一个“注册事件”函数。 • 使用子面板控件时,事件由含该子面板控件的顶层VI处理。 • 如需在处理当前事件的同时生成或处理其他事件,考虑使用事件回调注册函
2.本<VI>,这类事件反映当前VI状态的改变。例如:当前VI是否被关闭,是否 选择了菜单中的某一项等等。 3.动态事件(Dynamic),用于处理用户自己定义的或在程序中临时生成的事 件。 4. 窗格,包括与某一窗格有关的事件,比如鼠标进入离开窗格等。 5.分割栏,包括与分割栏先关的事件,比如鼠标拖动分割栏等。 6.控件,最常用的一种事件,用于处理某个控件状态的改变。例如,控件值的 改变,或者鼠标键盘的操作。
按照事件来源,Labview支持下列6类事件(“编辑事件” 对话框的“事件源”中)
1.应用程序,这类事件主要反映整个应用程序状态的变化,例如:程序是否关 闭,是否超时等。
事件结构中的默认事件“超时”就属于应用程序事件,如果不连接任何数据给它,默认“用 不超时”,在程序中可以传入一个表示毫秒的数值(n)给它,则每隔n毫秒,此事件会自动运 行超时处理分支中的代码;
程序运行时,禁用分支中的程序并不被生成可执行代码,因此,使 用禁用结构并不会影响程序的运行效率。而条件结构中的每一个分 支的代码都要生成可执行代码并装载在内存中。
5.2 条件禁用结构
与程序框图禁用结构类似,两者的区别在于:条件禁用结构是根据用户设定 的符号的值来判断决定执行哪个分支上的程序,类似于C语言中的#ifdef宏。
在编辑事件对话框中首先要选 择一个事件处理分支作为对象,然后 在事件源中选择合适的事件源。
编辑事件对话框中的事件列表 中放置的是选中事件源对应的所有可 能的事件名称,使用鼠标左键选择希 望的动作选项就可以为事件源创建事 件。
图4-23 编辑事件对话框
图4-24 事件结构示例
5.3.1 事件结构创建的注意事项
第五讲 LabVIEW的基本程序 结构2
5.1 程序框图禁用结构
与条件结构类似,两者的区别在于:禁用结构并非在运行时输 入分支选择条件,它执行哪一个分支是在编辑程序时就确定好 了的。
可以有多个分支,但是只有一个名为“启用”的分支,其他所 有分支都是“禁用”的,程序运行时,只运行名为“启用”的 那个分支。
上图虚线框内的程序,编写程 序时无法确定最后是否使用它,但 两种方案都需要调试。这时,应该 使用禁用结构,下图所示。
当需要运行它时,把这个分支 设为“启用”分支即可。
禁用结构会默认生成一个启用分支,需要修改一下启用分支,已保 证程序逻辑和输出数据无误。上例中,需要把文件句柄和错误数据 进出结构的隧道分别相连,才能保障后续程序得到正确的数据。
动态事件结构的创建就需要使用注册事件节点注册事件(指定 事件结构中事件的事件源和事件类型的过程称为注册事件),再将结 果输出到事件结构动态事件注册端子上。若要创建一个事件动态注册 端子,可以在事件结构框图上单击鼠标右键,在弹出的快捷菜单中选 择“显示动态事件接线端”选项即可。
图4-28 事件函数选板
事件结构和条件结构类似,区别在于:事件结构是根据发生的事件 决定执行哪一个分支中的代码;
事件发生,事件结构自动感知,不需要数据线把事件传递至事件结 构;
事件标签显示当前分支所对应的事件,事件发生时,事件结构除了 会得知是何事件发生,还会得到一些相关数据,比如事件发生的时 间、发生在哪一个控件上等,这些数据可以从事件结构左边内侧的 事件数据节点得到;
超时端子用来设定超时时间,其接入数据是以毫秒为单位的整 数值。-1为关闭超时事件。
事件数据节点由若干个事件数据端子构成,数据端子的增减可 以通过拖拉事件数据节点来进行,也可以通过单击鼠标右键从弹出的 快捷菜单中选择“添加/删除元素”选项进行。
事件结构同样支持隧道。
图4-22 添加事件分支
先在前面板 上放置控件, 然后,事件 源会自动把 它作为选项 列出。
5.3.1 事件结构的创建与简单示例
一个标准的事件结构由框架、超时端子、事件数据节点、递增/ 减按钮、选择器标签组成,如图4-21所示。和条件结构相似,事件结 构也可以由多层框架组成,但与条件结构不同的是,事件结构虽然每 次只能运行一个框图,但可以同时响应几个事件。
区域和分割线
图4-21 事件结构的基本构成
LABVIEW中的事件结构也是一种特殊的选择结构。 其他方式的事件可通过编程生成并与程序的不同部分进行通信。 LabVIEW支持用户界面事件和通过编程生成的事件,但不支持外部I/O 事件。
LabVIEW中的事件结构也是一种能改变数据流执行方式的一种结 构,使用事件结构可以实现用户在前面板的操作(事件)与程序执行的 互动。
常被用在跨平台的程序中,使程序能够适用于不同的操作系统。
配置条件对话框
符号-列出所有可用的符号。
==/!=-列出表达式中可用的比较运算符。有效的比较是:==,指定符号 与值相等;!=,指定符号与值不相等。 值-指定所选符号的值。值区分大小写,输入必须与下列有效值相同。
条件禁用结构还可以使用项目或项目运行的目标机器所定义的符号。
5.3.2 过滤事件和通知事件
按照事件的发出时间来区分,LabVIEW的事件可分为通知型事件 Notify Event)和过滤型事件(Filter Event)。
通知型事件是在LabVIEW处理完用户操作之后发出的,比如用户利 用键盘操作改变了一个字符串,LabVIEW 在改变了该控件的值之后,发 出一个值改变(Value Changed)通知型事件,告诉事件结构,控件的 值被改变了。如果事件结构内有处理该事件的框架,则程序转去执行该 框架。
连接常量数据给“创建用户事件”函数的“用户事件数据类型”参数,常量的数据 类型就是抛出事件的事件数据类型,常量的标签是创建出来的事件的名称。
项目浏览器“我的电脑”项的右键菜单“属性”对话框中添加属性
使用属性作为条件
5.3 事 件 结 构
所谓事件,是指对程序活动发生的异步通知。事件可以来自于用 户界面、外部I/O或其他方式。用户界面事件包括鼠标点击、键盘按键 等动作,外部I/O事件则指诸如数据采集完毕或发生错误时硬件触发器 或定时器发出信号。