第4章LabVIEW中的程序结构
- 格式:ppt
- 大小:1.03 MB
- 文档页数:37
LabVIEW 完全自学手册加入书架
登录
•书名页
•版权信息
•前言
•第1部分入门篇
•第1章初识LabVIEW
•第2章 LabVIEW 基本操作
•第3章 LabVIEW 基本数据类型及其相互转换
•第4章 LabVIEW 程序结构
•第5章 LabVIEW 数据运算函数
•第6章 LabVIEW 控件及其使用方法
•第7章 LabVIEW 数据表达与显示
•第2部分提高篇
•第8章 LabVIEW 文件I/O
•第9章 LabVIEW 中的字符串操作
•第10章 LabVIEW 数学分析
•第11章 LabVIEW 信号处理
•第12章 LabVIEW 与其他软件通信
•第13章 LabVIEW 时间相关操作
•第14章 LabVIEW 应用程序控制
•第15章 LabVIEW 网络编程技术
•第16章 LabVIEW 总线技术与仪器控制
•第17章 LabVIEW 数据库的访问
•第18章 LabVIEW 程序发布
•第3部分应用篇
•第19章多通道温度检测记录系统
•第20章温湿度检测管理系统
•参考文献
是否关闭自动购买?
关闭后需要看完本书未购买的章节手动确认购买。
For循环自动索引实例移位寄存器反馈节点(禁索引)
Case条件结构不正确的连接—边框上数据通道为中空状态;相反,实心为正确连接。
层叠式顺序结构要借助于顺序结构变量来传数据;平铺式可以各帧间直接传递。
过滤事件和通知事件:编程事件对话框中的事件列表,左侧箭头红色为过滤;蓝色通知
改错节点框图程序(数组大小、两个索引数组、簇中捆绑、实心点禁用索引,空心启用索引极坐标显示在前面板控件选板下“新式—图像模板—控件”子选板中数据为一维数组DEL1D)。
【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(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会把它们放置到不同的线程中,并行执行。
图1、2:顺序执行和并行执行的例子顺序执行(图1):数据会从控制控件流向显示型控件,因此数据流经的顺序为“error in”控件,“SubVI A”,“SubVI B”,“error out”控件,这也是这个VI的执行顺序。
并行执行(图2):“SubVI A”,“SubVI B”没有数据线相互连接,它们会自动被并行执行。
所以这个VI的执行顺序是“SubVI A”,“SubVI B”同时执行,当它们都执行完成以后,再执行“Merge Errors.vi”。
二. 顺序结构如果需要让几个没有互相连线的VI,按照一定的顺序执行,可以使用顺序结构来完成(Sequence Structure)。
图3:Menu Palette当程序运行到顺序结构时,会按照一个框架接着一个框架的顺序依次执行。
每个框架中的代码全部执行结束,才会再开始执行下一个框架。
把代码放置在不同的框架中就可以保证它们的执行顺序。
LabVIEW 有两种顺序结构,分别是层叠式顺序结构(Stacked Sequence Structure)、平铺式顺序结构(Flat Sequence Structure)。
这两种顺序结构功能完全相同。
平铺式顺序结构把所有的框架按照从左到右的顺序展开在VI 的框图上;而层叠式顺序结构的每个框架是重叠的,只有一个框架可以直接在VI 的框图上显示出来。
在层叠式顺序的不同的框架之间如需要传递数据,需要使用顺序结构局部变量(Sequence Local)方可。
图4:层叠式顺序结构三. 顺序结构的使用好的编程风格应尽可能少使用层叠式顺序结构。
层叠式顺序结构的优点是及部分代码重迭在一起,可以减少代码占用的屏幕空间。
绪论虚拟仪器(virtual instrumention)是基于计算机的仪器。
计算机和仪器的密切结合是目前仪器发展的一个重要方向。
粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。
随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。
另一种方式是将仪器装入计算机。
以通用的计算机硬件及操作系统为依托,实现各种仪器功能。
虚拟仪器主要是指这种方式。
下面的框图反映了常见的虚拟仪器方案。
虚拟仪器的主要特点有:⏹尽可能采用了通用的硬件,各种仪器的差异主要是软件。
⏹可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。
⏹用户可以根据自己的需要定义和制造各种仪器。
虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。
虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。
目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的Lab VIEW。
虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。
PC机出现以后,仪器级的计算机化成为可能,甚至在Microsoft公司的Windows诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0以前的版本。
对虚拟仪器和Lab VIEW长期、系统、有效的研究开发使得该公司成为业界公认的权威。
普通的PC有一些不可避免的弱点。
用它构建的虚拟仪器或计算机测试系统性能不可能太高。
目前作为计算机化仪器的一个重要发展方向是制定了VXI标准,这是一种插卡式的仪器。
每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。
这些卡插入标准的VXI 机箱,再与计算机相连,就组成了一个测试系统。
VXI仪器价格昂贵,目前又推出了一种较为便宜的PXI标准仪器。
LabVIEW程序设计模式(四)—状态机和事件结构的结合上两节分别解决了基本状态机的第(1~5)个问题,但是是否具备一种模式能够综合队列型状态机模式和用户界面事件型模式的优点呢?这样可以同时避免基本状态机的第(1~5)个问题。
答案是肯定的,本节将介绍如何将状态机与事件结构结合起来形成一种新的、稳定的模式。
状态机模式的基本构成元素是while 循环和case 结构,而事件结构模式的基本构成元素是while 循环和event 结构,因此新的模式应该由while 循环、case 结构和event 结构组成。
而while 循环的目的是为了保证程序的持续运行,因此必须在最外层,这样就只剩下了图20 所示的两种组合方式。
在第一种方式中,每次循环的运行需要经过一个事件结构才能够实现case 中各个分支的运行,那么到底需要多少个分支呢?一般而言不同的事件都会有不同的事件处理函数(这些函数可以在case 结构中共用),显示这是无法满足要求的,它从本质上而言仍然是一种事件结构。
在第二种方式中,程序的主体是一个状态机结构,不同的是在某一个状态分子中有一个事件结构。
我们可以回忆状态机模式中的空闲Idle 状态,这正是长时间占用CPU 资源的源头,如果在Idle 中加入一个事件结构后就有效地规避了这个问题。
图20 三种结构的组合方式因此图20 中的第二种结构综合了状态机和事件结构的优点,有效地克服了基本状态机的第(1~5)个问题。
此外,在【应用2_自动贩卖机】例程中,按钮1USD、2USD 和5USD 的作用是相同的,唯一不同的是它们的代表的币值不同。
如果我们希望系统共用币值相加这个功能,即当这三个按钮任何一个被按下后都调用同一个函数(该函数的功能是将系统中原来的货币值与新加入的币值相加得到新的值)。
这样,需要有一种途径把1USD、2USD 和5USD 代表的币值作为参数传递给函数。
图21 所示为带参数的状态机结构,在消息队列的状态机模式中,加入了一个变体型的变。
LabVIEW程序设计模式(四)—状态机和事件结构的结合LabVIEW程序设计2009-05-04 14:25:19 阅读497 评论0 字号:大中小订阅上两节分别解决了基本状态机的第(1~5)个问题,但是是否具备一种模式能够综合队列型状态机模式和用户界面事件型模式的优点呢?这样可以同时避免基本状态机的第(1~5)个问题。
答案是肯定的,本节将介绍如何将状态机与事件结构结合起来形成一种新的、稳定的模式。
状态机模式的基本构成元素是while循环和case结构,而事件结构模式的基本构成元素是while循环和event结构,因此新的模式应该由while循环、case结构和event结构组成。
而while循环的目的是为了保证程序的持续运行,因此必须在最外层,这样就只剩下了图20所示的两种组合方式。
在第一种方式中,每次循环的运行需要经过一个事件结构才能够实现case中各个分支的运行,那么到底需要多少个分支呢?一般而言不同的事件都会有不同的事件处理函数(这些函数可以在case结构中共用),显示这是无法满足要求的,它从本质上而言仍然是一种事件结构。
在第二种方式中,程序的主体是一个状态机结构,不同的是在某一个状态分子中有一个事件结构。
我们可以回忆状态机模式中的“空闲Idle”状态,这正是长时间占用CPU资源的源头,如果在Idle中加入一个事件结构后就有效地规避了这个问题。
图20 三种结构的组合方式因此图20中的第二种结构综合了状态机和事件结构的优点,有效地克服了基本状态机的第(1~5)个问题。
此外,在【应用2_自动贩卖机】例程中,按钮1USD、2USD和5USD的作用是相同的,唯一不同的是它们的代表的币值不同。
如果我们希望系统共用“币值相加”这个功能,即当这三个按钮任何一个被按下后都调用同一个函数(该函数的功能是将系统中原来的货币值与新加入的币值相加得到新的值)。
这样,需要有一种途径把1USD、2USD和5USD代表的币值作为参数传递给函数。