第4讲 LabVIEW的基本程序结构
LabVIEW虚拟仪器技术第4章-程序结构
基本程序结构
在各编程语言中,基本的程序结构有三种: 顺序结构、条件结构和循环结构。
LabVIEW中,除了具有上述三种程序结构外, 还提供了用于事件处理的事件结构。
此外,还有局部变量,属性节点和调用节点 等功能,为增加程序编写的灵活性提供了保障。
文本语言接口
在LabVIEW的图形化编程环境中,利用上述 程序结构可以解决很多非常复杂的问题。
范例
条件结构的输出隧道。
条件结构的输出方式
条件结构的输出有两种方式:
1.在条件分支内部输出数据
2.通过数据输出隧道,在条件结构外部输出数据
在分支内部输出数据更符合常规编程语言的编 程方式,但是从LabVIEW数据流的观点来看,并 不是最佳选择。
程序求输入数值的平方根,计算之前先判断 输入是否大于等于0。判断为真,结果由显示控件 输出,判断结果为假时,条件为真的分支不执行。
点击右键,在快捷菜单中我们可以添加或删 除每一帧。我们也可以通过拖曳的方式来改变每 一帧的大小。
顺序结构在执行时,会按照帧的顺序,从左 到右,依次执行每一帧。每一帧都有一个帧序号, 最小的帧序号为0,然后是1、2、3依次递增。
平铺式顺序结构因为代码是平铺的,因此代 码更直观,可读性较高。但是它的缺点是占用空 间较大。
针对于此,可以通过调用快捷菜单中的“替 换为层叠式顺序”功能,将平铺式的顺序结构转 换成层叠式的,以使VI看起来更为紧凑。
4.1.2 层叠式顺序结构
从本质上看,层叠式顺序结构和平铺式顺序 结构的功能完全相同,且二者可以相互转换。
层叠式顺序结构的创建
层叠式顺序结构外形类似于条件结构。它包 括一个或多个顺序执行的子程序框图或帧。
在很多情况下,程序员会需要多段代码按照预 先设定的顺序执行,这就需要顺序结构来帮忙了。
labview的基本构成
labview的基本构成LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化编程环境,主要用于测量和控制系统的设计。
LabVIEW的基本构成包括以下几个关键元素:1. 前面板(Front Panel):•用户界面:前面板是LabVIEW程序的用户界面。
它是用户与程序交互的地方,包括控件(如按钮、滑块、图表)和指示器(如图形、数值显示)。
•控件和指示器:控件用于接收用户输入,而指示器用于显示程序输出或中间结果。
2. 图形程序(Block Diagram):•数据流图:图形程序是LabVIEW的核心,用于实现程序的功能。
它是一个数据流图,其中各个图元表示不同的函数或操作。
连接这些图元的线表示数据流的方向。
•节点和连接线:图形程序由节点(图元)组成,节点执行特定的操作。
连接线表示数据的流向,沿着连接线传递数据。
3. 函数和VI(Virtual Instrument):•函数:LabVIEW中的函数是基本的操作单元,执行特定的任务,如数学运算、逻辑判断等。
• VI: VI是LabVIEW中的虚拟仪器,可以包含一个或多个前面板和图形程序。
VI可用于将程序模块化,实现可重用的代码。
4. 控制面板(Control Palette):•控制和显示元素:控制面板是LabVIEW中包含各种控制和显示元素的工具箱。
用户可以从控制面板中拖拽这些元素到前面板,用于构建用户界面。
5. 工具栏(Toolbar):•编辑和运行:工具栏包含各种工具,如编辑工具、运行工具等,用于编辑程序和执行程序。
6. 项目(Project):•项目资源:项目视图允许用户组织和管理LabVIEW项目,包括VI文件、数据文件、图标等。
项目视图使得对项目中的所有资源进行集中管理变得更加方便。
这些基本构成元素共同形成LabVIEW的整体框架,LabVIEW的独特之处在于其图形化编程环境,使得用户可以通过直观的方式设计、测试和部署测量和控制系统。
虚拟仪器LabVIEW 第4章 Case结构、Sequence结构和公式
4.1.4 Case结构应用举例(演示)
目的:求一个数的平方根,若该数 ≥ 0,计算该值平 方根并将计算结果输出;若该数 <0 时,则用弹出式 对话框报告错误,同时输出错误代码“-9999.00”。
4.2 顺序结构 4.2.1 顺序结构的创建与组成
图4.11单框架顺序结构
图4.12多框架顺序结构
有三个帧的顺序结构局部变量
源帧
顺序结构的输出通道仅能有一个数据源
数据源能被后续所有帧使用, 但在源帧前面的帧中不能使用
4.2.3 顺序结构应用举例
例4.2.1 :将一随机数发生器产生的数字与面板输入的给定数字进 行比较,计算当两个数匹配时所需要的时间。
4.3 公 式 节 点 (Formula
4.3.1 公式节点(Formula Node)的创建
选择 Case 结构
4.1.1
Case 结构的建立和组成
布尔型 Case 结构
数值型 Case 结构
字符串型 Case 结构
枚举型Case 结构
选择器的标识值的设定(演示)
1.单值: 2.数值列表: -1,0,5,10 (逗号分割) 3.数值范围的形式:10..20 (10~20) ..0(指所有≤0的数) 10.. (指所有≥10的数)
4.4 练 习 : 学 习 使 用 Case 结 构
目标:创建一个 VI 程序,连续以每 500 毫秒一次的速率测量
温度,如果温度高于或低于温度设定范围,告警灯点亮, 同时驱动蜂鸣器报警,工作状态栏显示“过量限”信息;若 检测温度在量程范围内,正常指示灯亮,同时工作状态栏 显示“正常”信息。按动 RUN 按钮,程序自动进入系统运 行状态,温度趋势图表逐点显示温度变化曲线,同时将上/ 下限设定值也显示在图表中。当点击运行控制开关时,程 序停止运行。 Temperature Limit.vi
第4章LabVIEW中的程序结构
第4章 LabVIEW中的程序结构
2020/4/2
精通LabVIEW虚拟仪器程序设计与案例实现
循环结构——For循环
移位寄存器初始化
移位寄存器可以存储的 数据类型有:数值型、布尔 型、数组、字符串型等。
“显式初始化” “非初始化”
不同初始化方式运行结果
第4章 LabVIEW中的程序结构
2020/4/2
循环次数和循环计数端
口的数值范围为0~2^31-1 的长整型数,如果给N的赋值 为0,则程序一次也不执行。
第4章 LabVIEW中的程序结构
2020/4/2
精通LabVIEW虚拟仪器程序设计与案例实现
实例——产生数据点数为1000的正弦波
在做算法仿真时,经常需要产 生指定点数的数据波形,最基本的 实现方法就是通过For循环+基本函 数的方式。
第4章 LabVIEW中的程序结构
2020/4/2
精通LabVIEW虚拟仪器程序设计与案例实现
循环结构——For循环
For循环的自动索引
正常情况下For循环是要指 定循环次数程序才能正常执 行的,但如果我们不知道具 体的循环次数,那又该如何 运用For循环呢?
For循环的自动索引功能默认 情况下是自动开启的,在自动索引 开启的状态下,数据进入循环体时 是降维的。
序,则要用到顺序结构。
平铺式顺序结构
LabVIEW中的顺序结构包括: 平铺式顺序结构 层叠式顺序结构
第4章 LabVIEW中的程序结构
层叠式顺序结构
它们的功能是相同的, 只是图形形式不同,也即编 程时所占用的空间不同。
2020/4/2
精通LabVIEW虚拟仪器程序设计与案例实现
平铺式顺序结构的数据流向
第四章 LabVIEW编程环境与基本操作
第四章 LabVIEW编程环境与基本操作
• 4.4 LabVIEW程序设计过程
(1)找出错误如果一个VI程序不能执行,运行按钮将会显示为一个折断的箭头。单击该按钮 , 则会弹出一个列有错误清单的对话框,选择任何一个所列出的错误,单击【Show Error】按钮就会显 示出错的对象或端口。 (2)设置执行程序高亮——在执行前单击高亮按钮 ,该按钮图标会变成高亮形式 。这种执行 方式一般用于单步模式,来跟踪程序框图中的数据流动。 (3)VI程序的单步执行——为了达到调试程序的目的,用户也许希望程序框图一个节点一个节点地 执行。要设置单步执行模式,只需单击单步按钮。这样下一个将要执行的节点就会闪烁,指示它将被 执行。用户也可以再次单击单步按钮,这样程序将会变成连续执行方式。
4
第四章 LabVIEW编程环境与基本操作
• 4.3 LabVIEW的编程环境
LabVIEW软件用“VI”作为图形化程序的简称,子程序即称为“子VI”,每个程序都包含类似 仪器调节控制用的“前面板(front panel)”和类似内部处理连接线路的“程序框图(block diagram)”两部分。当点击启动画面的“新建VI”菜单时,可以建立一个空白的程序,即VI。当 点击“打开”菜单时,可以浏览打开一个已有的VI。使用新建或打开菜单进入VI界面后,即可同 时打开两个窗口:“前面板”和“程序框图”。
图4-2前面板和控件选板 6
第四章 LabVIEW编程环境与基本操作
• 4.3 LabVIEW的编程环境
前面板窗口的工具栏包括用来控制VI的命令按钮和状态指示器,各功能介绍如下:
表4-1前面板工具栏功能说明
7
第四章 LabVIEW编程环境与基本操作
• 4.3 LabVIEW的编程环境
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】程序结构
【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支持各种常见的数据类型,包括整数、浮点数、字符串和数组等。
用户可以根据需要选择不同的数据类型,并进行转换和操作。
第4章LabVIEW中的程序结构讲诉
2018/9/14
精通LabVIEW虚拟仪器程序设计与案例实现
顺序结构
LabVIEW是图形化的编程语言, 程序的执行顺序是基本数据的流向的, 也即,数据的连接即指定了程序的执 行顺序,没有数据线连接的不同程序 块是并行执行的,所以一般情况下不 用顺序结构,但在某些特殊时候,如 果一定指定某几段程序执行的先后顺 序,则要用到顺序结构。
平铺式顺序结构
第4章
LabVIEW中的程序结构
2018/9/14
精通LabVIEW虚拟仪器程序设计与案例实现
定时结构——定时循环
定时循环根据指定的循环周 期顺序执行一个或多个子程序 框图或帧。 一般在以下情况中可以使 用定时循环结构:
平铺式顺序结构
LabVIEW中的顺序结构包括: 平铺式顺序结构 层叠式顺序结构
层叠式顺序结构 它们的功能是相同的, 只是图形形式不同,也即编 程时所占用的空间不同。 2018/9/14
第4章
LabVIEW中的程序结构
精通LabVIEW虚拟仪器程序设计与案例实现
平铺式顺序结构的数据流向
数据流向
执行效果
第4章
LabVIEW中的程序结构
2018/9/14
精通LabVIEW虚拟仪器程序设计与案例实现
层叠式顺序结构的数据流向
数据流向
执行结果
第4章
LabVIEW中的程序结构
2018/9/14
精通LabVIEW虚拟仪器程序设计与案例实现
定时结构
函数→编程→结构
定时循环 定时顺序 定时VI
第4章
LabVIEW中的程序结构
2018/9/14
精通LabVIEW虚拟仪器程序设计与案例实现
循环结构——For循环
LabVIEW的程序结构
在层叠式顺序结构的边框上面右击,选择Add Sequence Local即 可在当前帧创建一个顺序局部变量端口。
将本帧中的数据连接到该局部变量端口,该数据就可传到后面的 帧,该数据不会作用到它前面的帧。
如下图示意了层叠式顺序结构通过局部变量传递数据的 情况。在标识是1号帧的一个数据传递到标识是2号的帧 进行“或”运算,0号帧不能使用该数据。
下面是用移位寄存器(左图)和反馈节点(右图)实现 a++的框图程序。
2 While循环 For循环和While循环的区别:
For循环要执行预先指定的循环次数。
而While循环只有在条件端口接收到的值为 False(or:True)时才停止循环。While循环不必知道循 环次数。 While循环不满足条件也要执行1次。 For循环当N<1时1次都不执行。
在message数据端口新建一个常量,输入“超时或单 击了OK按钮”。
在超时端口连接值为5000的一个数字常量。
运行程序,如果单击了“OK Button”按钮或等待5秒都 会显示出对话框“超时或单击了OK按钮”。
法2:
在事件结构边框的快捷菜单中选择Add Event Case…来 创建事件结构的一个分支 。 在弹出的对话框中,选取“EventSources”事件源窗口 中的“OK Button” 。并在“Event”事件窗口中选择 “Value Change” 。 后面的设置与法1类似。
超时端口,默认
值为-1,表示无 限等待 。
事件数 据端口
结构框
2.事件结构的使用
可有一个或多个子图形代码框,该图形代码框可以设置为响应多 个事件。 右击事件结构边框,从弹出的快捷菜单中选择Edit Events Handled by ThisCase…,这时将弹出编辑事件对话框。 显示当前建立的事件, 默认“Timeout’事件。 增加事件 删除事件
labview第四讲 程序结构
优点: 把每个帧平铺开来比较直观,方便代 码阅读,不需借助局部变量这种机制在 帧之间传递数据。 缺点:浪费空间。
例:求循环时间
四、公式节点
通过公式节点,用户可以实现复杂的数学
公式,还可以通过文本编程写一些基本的
逻辑语句,如if…else、case、while循环
之类的语句,弥补了图形化开发语言相对
(三)全局变量 与传统编程语言中的全局变量类似, 可以在不同的VI之间进行数据传递。 1、创建 2、属性:读和写 3、使用(举例)
4、特点 (1)以独立文件的形式存在 (2)一个全局变量中可以包含多个对 象,拥有多种数据库类型 (3)与子VI不同,不能进行编程,只 能用于简单的数据存储。 (4)速度快 (5)其中的数据可以分别访问
Local variaval
3、本地变量的属性: 读(Read)和写(Write) 4、使用 前面板对象的本地变量相当于其端口 的一个拷贝,它的值与该端口同步。
举例: 例1、用一个布尔开关同时控制两个循环
例2、给一个控制赋值,从一个指示中读 出数据。
例3、在顺序结构中的使用:创建一个 VI, 计算生成等于某个给定值的随机数所需 要的时间。
例1:用While循环
创建一个可以产生 并在图表中显示随 机数的VI。 前面板 有一个控制旋钮可 在0到10秒之间调 节循环时间,还有 一个开关可以中止 VI的运行。学习怎 样改变开关的动作 属性,以便不用每 次运行VI时都要打 开开关。
随机信号 1.0 0.8 0.6 0.0 0.4 0.2 0.0 0 1023 10.0 2.0 循环延时 4.0 6.0 8.0
(二)本地(局部)变量 相当于传统编程语言中的局部变量,可以 在同一个程序内使用。 1、引入理由: (1)每个控制或指示的数据端口只有一 个; (2)需要在同一个VI的不同位置多次为 指示赋值;或多次从控制中取出数据;或者 为控制赋值,从指示中取出数据。
LabVIEW程序设计基础结构
常用的一种LabVIEW程序架构: 状态机
• 典型用途
– 界面响应: 在程序运行的
不同阶段响应不同的用 户输入
– 状态控制: 控制测控系统
在各种不同状态下的行 为和状态转移
状态机的代码形式
• 由While循环和条件结构组成
程序框图 有 初始化 首次执行 再次执行
Output = 5
Output = 5
无 初始化
Output = 4
Output = 8
移位寄存器的堆栈
• 可以“记住”前若干次循环的数据
反馈节点
LabVIEW中使能结构(/* */)
框图使能
程序架构
• 程序架构的重要性
– 好的程序架构可以简化编程和调试的复杂度
返回执行次数 (从0开始)
隧道 (Tunnel)
While 循环
输入值为真时停止
输入值为假时停止
While 循环注意事项
设置终止循环条件
While 循环注意事项
隧道
While 循环注意事项
放置定时器
延时
• 为何需要延时?
– 控制循环执行的频率
– 使处理器有资源处理其他任务 (如界面刷新等)
For Loop While Loop
• 按照约定的次数执行 (除非增加
• 循环终止执行由终止条件决定
了条件终止端)
• 可以一次也不执行 • 默认情况下,隧道输出的是一 个数组 (需要禁用索引才能输出
• 至少会执行一次
• 默认情况下,隧道输出的是一 个值 (需要开启索引才能输出数 组)
Labview_简明教程
绪论虚拟仪器(virtual instrumention)是基于计算机的仪器。
计算机和仪器的密切结合是目前仪器发展的一个重要方向。
粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。
随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。
另一种方式是将仪器装入计算机。
以通用的计算机硬件及操作系统为依托,实现各种仪器功能。
虚拟仪器主要是指这种方式。
下面的框图反映了常见的虚拟仪器方案。
虚拟仪器的主要特点有:⏹尽可能采用了通用的硬件,各种仪器的差异主要是软件。
⏹可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。
⏹用户可以根据自己的需要定义和制造各种仪器。
虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。
虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。
目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的Lab VIEW。
虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。
PC机出现以后,仪器级的计算机化成为可能,甚至在Microsoft公司的Windows诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0以前的版本。
对虚拟仪器和Lab VIEW长期、系统、有效的研究开发使得该公司成为业界公认的权威。
普通的PC有一些不可避免的弱点。
用它构建的虚拟仪器或计算机测试系统性能不可能太高。
目前作为计算机化仪器的一个重要发展方向是制定了VXI标准,这是一种插卡式的仪器。
每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。
这些卡插入标准的VXI 机箱,再与计算机相连,就组成了一个测试系统。
VXI仪器价格昂贵,目前又推出了一种较为便宜的PXI标准仪器。
虚拟仪器labview程序结构.pptx
case n:语句n; default:语句n+1; }
第10页/共39页
5.3 条件结构
第11页/共39页
5.3 条件结构
Case结构的组成 最基本的Case结构由:Case框架、选择端 口、框图标识符和递增/递减按钮构成。
第12页/共39页
5.3 条件结构-应用
第30页/共39页
5.6 公式节点
假如程序中有一些复杂的数学计算,编写图 形代码是比较麻烦的。如x>0,y=mx3+3nx2-x+1; x<=0,y=-2mx3+x-5。
第31页/共39页
5.6 公式节点
假如程序中有一些复杂的数学计算,编写图 形代码是比较麻烦的。如,y=x3+6,z=5y+x。
第13页/共39页
5.3 条件结构-应用
第14页/共39页
5.4 顺序结构
在代码式的传统编程语言中,默认的情况是, 程序语句按照排列顺序执行,称为控制流程; 但LabVIEW中不同,它是一种图形化的数据流 式编程语言,具有并发、多任务的特点。
在LabVIEW7.0 以前只有一种顺序结构。 从 LabVIEW7.0开始,旧版本的顺序结构称 为Stacked Sequence Structure(堆叠顺序 结构),同时引入新的Flat Sequence Structure(平铺顺序结构)。
3.公式节点框架内每个公式后以分 号”;”结束。
第35页/共39页
5.6 属性节点
前面板对象属 性是指前面板 上控件的外观 和功能特征, 如显示的颜色、 可见性、闪烁、 位置、比例等。 以达到最佳的 人机交互效果。
虚拟仪器-第4章 LabVIEW的程序结构
数据隧道
条件结构内部与外部之间的数据也是通过隧道来交换传递的。 向条件结构边框内输入数据时,各个子程序框图连接或不连接这个数 据的隧道都可以。从条件结构边框向外输出数据时,各个子程序框图都必 须为这个隧道连接数据,否则隧道图标是空的,程序也不能运行。 如果允许没有连线的子程序框图输出默认值,可以在数据隧道上右击, 在弹出的快捷菜单中选择“未连线时使用默认”命令,在这种情况下,程 序执行到没有为输出隧道连线的子程序框图时,就输出相应数据类型的默 认值。
【实训练习】
用条件结构来实现两个数的加、减、乘、除四则运算,要 求用组合框作为条件结构的选择器。
4.3 顺序结构
LabVIEW作为一种图形化的编程语言,有其独特的程序执行顺序——数据 流执行方式,数据流经节点的动作决定了程序框图上VI和函数的执行顺序。 但在实际中希望节点按一定的次序执行,这就需要引入顺序结构执行。 LabVIEW顺序结构的功能是强制程序按一定的顺序执行。
种变量的操作方法
第4章 LabVIEW的程序结构
程序结构对任何一种计算机编程语言来说都是十分重要的,它控制整 个程序语言的执行过程,一个好的程序结构,可以大大提高程序的执行效率。 LabVIEW作为一种图形化的高级程序开发语言,执行的是数据流驱动机制, 在程序结构方面除支持循环、顺序、条件等通用编程语言支持的结构外,还 包含一些特殊的程序结构,如事件结构、使能结构、公式节点等等。
条件接线端是一个布尔变量,接入布尔 值用于控制循环执行。条件接线端有两种 使用状态。
循环框架 为真时停止
计数接线端 条件接线端
为真时继续
与For循环是在执行前检查是否符合条件不同,While循环是在执行后再检查条 件端子,因此,在While循环的执行流程中,循环框架中的代码至少执行一次。
LabVIEW编程基本框架
LabVIEW编程基本框架赵忠欣1.读取配置文件:该文件(config.ini)位于主程序的上级目录,这样有利于打包安装时正常调用。
2.[数据文件目录]:该目录下,保存数据库(*.mdb)、报表模块、用户手册、原始数据等除配置文件以外的所有数据操作文件;这样,只要在配置文件里快速定位该目录,即可以地读、写相关数据文件,方便移植。
3.检查[数据文件目录]:该功能的作用在于首次安装程序时,根据自定义安装路径,来修改配置文件中的[数据文件目录]的绝对位置。
这样,保证用户选择不同的安装路径后,不需要手动调整,即可以正常工作。
4.创建数据文件:此指原始数据文件,文件以二进制形式存储,体积小;文件头应该包括,采集速率、通道数量、通道名称,如果存储数据为整型,还应该保存量程、偏置等信息;注意,在读取原始数据文件时,要保证读取数据的长度、类型对应正确。
5.退出:必须结束所有循环,然后使用关闭窗口;不建议使用。
这样做好处多多,一是能保证硬件设备停止工作,二是不会关闭LabVIEW主程序,三是不会关闭其它窗口。
另外,退出时,将所有隐藏的控件还原显示,可以方便调试。
6.回放试验:该模块的功能可以根据项目的实际需要,进行增、减;包括播放速率、数据处理、报表、打印等功能都可以根据需求来规划。
7.数据查询:该模块的功能可以根据项目的实际需要,进行增、减;常用的操作:读取表、记录查询、记录添加、记录删除等。
8.事件响应菜单事件,包括了退出功能,即不在主程序界面设[退出]按钮。
控件事件,可以方便、快速地配合前三个工作循环的有效执行。
9.主界面:10.流程图:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例子
第一帧与第三帧间如何传递数据?
图4-16 层叠式顺序结构界面
层叠式顺序结构中的数据要借助于顺序结构变量来传递。
(a)未赋值的局部变量 (b)连接数据 (c)赋值后的局部变量 (d)结果
图4-17 顺序局部变量的创建与使用
和移位寄存器一样,反馈节点也是用来实现数据在前后两 次循环中的传递。但与移位寄存器相比,使用反馈节点有时能 让程序更加简洁易懂。
循环中一旦连线构成反馈,就会自动出现反馈节点的符号。 反馈节点符号由两部分构成,分别为初始化端子和反馈节点箭 头。
4.1.5 反馈节点在Fo环框图外,默认为位于For循环框图内。
相比于层叠式顺序结构,平铺式顺序结构各帧之间同样可以传输数据, 而且平铺式顺序结构传递数据的方式与层叠式顺序结构相比较而言更加简单和 直观,只需直接在两帧间连线就可以自动创建一个循环隧道传输数据,如图420所示。
图4-20 平铺式顺序结构的数据传输
空 心 框
(a)不正确的连接—边框上的数据通道为中空状态
实 心 框
(b)正确的连接—边框上的数据通道为实心状态
图4-13 连接数据的输入与输出
4.3.6 选择函数
4.3.7 条件结构示例
图4-14 执行两个数相乘或相加运算的Case条件结构示例
图4-15 执行两个数相乘或相加运算的Case条件结构示例
当在条件接线端图标上单击鼠标右键选择“真(T)时继 续”,则图标变成如图4-9所示,此时表示当条件为真时循环继 续。当每一次循环结束时,条件端口检测通过数据连线输入的布 尔值和其使用状态决定是否继续执行循环。
图4-9 条件端子变换后的While循环界面
与For循环是在执行前检查是否符合条件不同,While 循环是在执行后再检查条件端子。因此,While循环至少 执行一次。
图4-10 简单While循环示例
4.3 条件结构
条件结构同样位于“函数”选板下的“结构”子选板中。 与创建循环的方法类似,我们可以从结构选板中选择条件结 构,用鼠标在程序框图上任意位置拖放任意大小的条件结构 图框。条件结构由结构框架、分支选择器、选择标签等组成, 如图4-11所示。
图4-11 条件结构界面
隧道可使用数据类型的默认值,不是每个隧道都必须连线。 右键单击输出隧道,从快捷菜单中选择未连接时使用默认,这样所 有未连线的隧道都将使用隧道数据类型的默认值。 将隧道配置为未连线时自动连接输入和输出隧道,这是推荐的方法
注: 每个条件分支的同一输出隧道可以定义不同的数据源,但各个条件必须兼容这些数据类型。
4.1 For循环
4.1.1 For循环的组成
LabVIEW中的循环与结构位于程序框图的“函数” 选板下的“结构”子选板中,如图4-1所示。
图4-1 “结构”子选板界面
找到For循环后,用鼠标左键单击For循环后会发现鼠标箭头
变成一个表示For循环的小图标,此时用户可在程序框图上用鼠
标拖放一个任意大小和位置的For循环边框,如图4-2所示。最基
4.4 顺 序 结 构
4.4.1 程序执行顺序
4.4.2 创建顺序结构
要让相互间没有数据线相连的几部分 代码按照特定顺序执行,可以使用顺 序结构;
4.4.3 两种顺序结构
顺序结构顺序地执行子框图,而这些子框图看起来就像一帧帧 的电影胶片,因此称之为帧。
顺序结构根据帧排列的不同共有两种类型:层叠式顺序结构、 平铺式顺序结构;
LabVIEW中的结构放置在程序框图中,其外形一般是一 个大小可以缩放的边框,当它与其他节点的连线有数据传递时, 边框内的一段代码将反复执行或有条件执行或按某一定的顺序 执行。结构内的该段代码则被称为子框图。
结构框图可以看成是个代码容器。容器内的代码按照某种 条件反复执行。
本讲将介绍LabVIEW中的for循环结构、while循环结构、 条件结构和顺序结构
? 没有 连加
图4-3 简单For循环示例
FOR循环简单示例
4.1.3 自动索引在For循环内的应用
自动索引的功能是使循环框外面的数组成员逐个进入循环 框内,或使循环框内的数据累加成一个数组输出到循环框外面。
循环内--》循环外, 元素--》数组,一维---》二维, 自动索引值,在完成循环后才一次性输出。 For循环的索引可通过鼠标右键单击循环边框的数据通道来 启动。
后续帧中只需根据需要通过连线把顺序局部变量中的数据引出来
图4-18 顺序结构中的数据通道
平铺式顺序结构的一 个鲜明的特点是它的 多个框架不是层叠在 一起,而是自左至右 平铺,并按从左至右 的顺序执行。
图4-19 平铺式顺序结构界面
层叠式顺序结构与平铺式顺序结构的功能完全相同。他们的主要区别 在于平铺式顺序结构的所有框架在一个平面上,视觉上较为直观,不需要用 户在框架之间的切换;当在编写项目程序时通常使用层叠式顺序结构,使框 图中程序更加简洁。层叠式顺序结构和平铺式顺序结构之间是可以互相切换 的。在顺序框架的右键选单中按需要选择相应选项即可。
4.1.3 自动索引在For循环内的应用
尽管For循环和While循环都支持自动索引功能,但其主 要区别在于:For循环的数组默认为能自动索引,如不需要索 引,可在数组进入循环的通道上单击鼠标右键弹出快捷菜单选 择“禁用索引”选项;而While循环中的数组默认为不能自动 索引,如果需要索引,可在循环的通道上单击鼠标右键弹出快 捷菜单选择“启用索引”选项。另外,在创建二维数组时一般 使用For循环而不使用While循环。
4.1.3 自动索引在For循环内的应用
图4-4 For循环自动索引示例
自动索引示例
自动索引示例2
4.1.4 移位寄存器在For循环内的应用
移位寄存器是LabVIEW的循环结构中的一个附加变量对象, 其功能是在循环的不同迭代间传递数据。
一般来说,移位寄存器可以存储任何类型的数据,但是连接 在同一个寄存器两个端子上的数据必须是同一类型的。移位寄存 器的类型与第一个连接到其端子之一的对象数据的类型相同。
字符串、整数和枚举类型的数据都可以作为条件结构的条件。 这些数据类型与布尔数据的区别在于,布尔型数据只有两个值: “真”或“假”;而其余数据类型可能值都是无穷的。条件结 构不可能为每一个可能值都设置一个分支,因此,这时需要选 择一个分支作为默认分支,在数据不能满足其他分支的条件时 就执行默认分支的代码。
创建新的分支后可以为新分支添加 分支名。
4.3.2 布尔类型的条件选择结构
条件结构的一种常见程序模式是:首先比较某个数据,然后把比较的结 果传递给分支选择器。条件结构中的两个分支分别是比较结果为“真”、 “假”时需要执行的代码。
最为常见的布尔型条件结构是用来处理错误数据线的。
4.3.3 其他数据类型的条件选择结构
条件接线端有两种停止模式,既可以接收“真”值,让循环 停止运行,也可以接收“假”值,让循环停止运行。当条件 接线端显示为一个红色圆形 时,表示收到“真”值,停止 循环运行。单击条件接线端,使其变成绿色环形箭头 ,则 表示在收到“假”值时,停止循环。
4.2 While循环
4.2.1 While循环的组成
与For循环的计数接线端一样,While的计数接线端也是 输出循环已执行次数的数字输出端子。While的条件接线端 是一个布尔变量,需要输入一个布尔值。
条件接线端用于控制循环是否继续执行时,有两种使用 状态: 默认状态的条件接线端属性为“真(T)时停止”, 此时的图标是一个方框圈住的实心的红色圆点,如图4-8右 下角所示,这表示当条件为真时循环停止。
起到C语言中,i++的作用。在LABVIEW中,不支持变量的 自赋值。只能通过移位寄存器解决。
使用LabVIEW时,凡是循环内需要使用变量的地方,应首先
上次循环的 结果值
上一次的i
当前的i
当前循环的 结果值
图4-5 For循环移位寄存器示例
图4-6 For循环中不添加移位寄存器的结果
移位寄存器成对出现,在程序中使用同一块内存; 使用移位寄存器需要赋初值;
反馈节点箭头 表示连线上的数据流动方 向,它可以是正向的,也可以是反向的。
图4-7 For循环中使用反馈节点示例
此处没有开启自动 索引功能。实心框
4.1.6 结束条件
在for循环结构的右键菜单中选择“条件接线端”,可以为for 循环创建一个接收停止循环命令的接线端,它类似于C语言 中跳出循环的break语句。
变换一下程序的条件判断逻辑,即可避免条 件结构嵌套,优化程序代码,改善程序的可 读性和效率。 把共同的代码放在结构之外,这个原则在条 件结构中务必遵循
4.3.5 条件结构隧道
可为条件结构创建多个输入输出隧道。条件结构的各个分支上都有 输入,但是不是每个分支都必须使用输入。
在条件结构一个分支的边框上创建输出隧道时,其他分支边框上也 会出现输出隧道。只要有一个输出隧道没有连线,则条件结构每个分支 边框上的输出的隧道都显示为白色正方形。
在如图4-1所示的界面中找到While循环后,用鼠标左键 单击While循环后会发现鼠标箭头变成一个表示While循环的 小图标,此时用户可在程序框图上用鼠标拖放一个任意大小 和位置的While循环边框,如图4-8所示。
图4-8 While循环界面
最基本的While循环由循环框架、条件接线端 (输入端)和计数接线端(输出端)组成。
4.3.1 添加、删除与排序分支
图4-12 分支的添加和排序
在条件结构框架上单击鼠标右键, 在弹出的快捷菜单中选择“在后面添加分 支”菜单项用户就可以为条件结构添加新 的分支,如图4-12所示。
添加完新分支后可在快捷菜单中选 择“重排分支”菜单项打开重排分支对话 框,在对话框的分支列表中用鼠标拖动列 表项可以对分支重新排序。通常,排序按 钮以第一个选择值为基准对选择器标签值 进行排序。删除分支的操作与添加分支相 同。