LabVIEW经典结构-组合动作执行模型
- 格式:doc
- 大小:60.50 KB
- 文档页数:1
执行结构:详细说明While循环与文本编程语言中的Do循环或Repeat-Until循环类似,必须满足特定条件之后,While循环才会执行其内的程序代码,如图1所示。
图1. LabVIEW中的While循环;具备While循环功能的流程图;还有While循环功能的伪码范例While 循环位于Structures面板上。
从面板上选择While Loop之后,针对所要重复的代码区块,可用鼠标拖拽出矩形并将之圈住。
放开鼠标之后,即会有While循环圈住用户所选的区块。
只要将对象拖拽至While循环中,即可将其新增至While循环中。
只要条件接线端接收特定的布尔值之后,While循环随即执行代码也可通过While 循环的条件接线端来处理基本错误。
若将错误簇连接至条件接线端,则只有Status参数的真或假值传送至接线端。
同样,Stop if True和Continue if True快捷菜单项目,将分别变更为Stop if Error和Continuewhile Error。
计数接线端属于输出端点,其中包含已完成的循环次数。
While循环的循环计数均从零开始。
注意: While循环将至少执行一次。
无限循环无限循环为常见的程序错误,即无法停止的循环。
若条件接线端 i为True时停止,而用户又在While循环外部放置布尔控件接线端。
一旦循环开始,控件值即成为FALSE,就会形成无限循环。
图2.While循环之外的布尔控件因为在循环开始之前,仅读取该值一次,所以改变控件的值并无法停止无限循环。
若要通过控件停止While循环,则必须在循环中配置控件接线端。
若要停止无限循环,则按下工具栏上的Abort Execution按钮,即可终止该VI。
在图3中的While 循环将不断执行,直到随机数函数的输出大于或等于10.00,且Enable控件为TRUE时才会停止。
当且仅当“与”函数的两个输入都为真时,函数的返回值才为真。
labview 条件结构组合框
LabVIEW是一种流行的系统设计软件,它使用图形化编程语言G
语言。
条件结构是LabVIEW中的一种结构化编程元素,用于根据特
定条件执行不同的代码块。
条件结构通常由一个条件表达式和两个
或多个分支组成,当条件表达式为真时,执行相应的代码块。
在LabVIEW中,条件结构可以与组合框结合使用,以根据用户
在组合框中做出的选择来执行不同的代码块。
组合框是一种用户界
面控件,允许用户从预定义的选项列表中进行选择。
通过将条件结
构与组合框结合使用,可以根据用户的选择来控制程序的行为,从
而增强程序的交互性和灵活性。
当用户在组合框中做出选择时,可以使用条件结构来检测用户
的选择,并根据不同的选择执行不同的代码。
这样可以实现根据用
户输入动态改变程序行为的效果,使程序更加灵活和智能。
总之,通过将条件结构与组合框结合使用,可以实现根据用户
输入来动态控制程序行为的效果,增强程序的交互性和灵活性。
这
种结合使用的方法可以在实际的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会把它们放置到不同的线程中,并行执行。
图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:层叠式顺序结构三. 顺序结构的使用好的编程风格应尽可能少使用层叠式顺序结构。
层叠式顺序结构的优点是及部分代码重迭在一起,可以减少代码占用的屏幕空间。
LabVIEW设计模式汇总本文归纳了LabVIEW中常用的几种设计模式,介绍了各种设计模式的特点及适用范围,并提供了每种设计模式对应的典型应用实例。
1 标准状态机1.1简介状态机(State Machine)是编程中经典的设计模式之一。
状态机对系统所有可能的状态进行罗列,在每个状态分支中执行该状态的代码,并指明系统要执行的下一个状态。
状态机能清晰和准确地完成与状态密切相关的任务。
1.2结构图1-1为典型的标准状态机结构。
系统包含“Initialize”,“Idle”,“Case1”,“Case2”,“Stop”五个状态;系统可以在“Initialize”中初始化系统参数,在“Idle”中专门做状态选择处理,“Case1”和“Case2”为用户自定义的状态分支,“Stop”状态使系统停止运行。
图1-1 标准状态机结构1.3要点(1)状态枚举常量该枚举常量包含了系统所有可能的状态,每次可以选择一个指定的状态。
(2)带移位寄存器的while循环状态机通过while循环上的移位寄存器传递下一个要执行的状态,每次循环只能执行一个条件分支。
(3)条件结构该条件结构的每个分支对应一个系统的可能的运行状态。
Tips:●可以将枚举常量设计为自定义控件类型。
当系统状态需要修改时,只需要修改一次“自定义控件”即可更新整个程序中所有的枚举常量。
●将枚举常量连接到条件结构的选择器接线端后,右击条件结构边框,选择“为每个值添加分支”,可以轻松地为条件结构实现分支配置。
1.4实例(1)情景:使用温度监控系统监测当前温度,当温度超过高温阈值时发出“高温警报”,当温度低于冷冻阈值时发出“冷冻警报”。
(2)代码:详见附件中的“标准状态机”项目文件。
图1-2 前面板设计图1-3 程序框图设计1.5小结标准状态的应用非常广泛,它的特点是:(1)系统的所有状态和转换条件都是可以提前预期设定的,而不是随机产生的;(2)系统一次只能执行一个状态,不适合做并行任务处理。
中大型LABVIEW软件三层设计架构目录一、总览 (2)二、详解 (3)(1) Driver Level﹔ (3)a.组态(configuration):开启或关闭与仪器的连结、将仪器初始化及设定组态等。
(3)b.量测(measurement):由仪器读出测量值或特定的资料。
(3)c.动作/状态(action/status):一个流程的启始或结束动作、检查错误等。
(3)(2) Test Level: (4)(3) Main Level: (4)a) 可让操作者设定或更改操作参数: (5)b) 在特定的情况下使用适当的Control: (5)c) 要将众多的Control及Indicator依使用功能分类,并适当地利用页面切换来显示。
5d) 在执行程序时可以选择cancel或abort: (5)e) 在Front Panel上多使用图形,避免过多的文字或数据。
(5)f) 在Main Level中统一处理所有的exception massage: (6)一、总览通常一个VI若包含三、四十个以上的subVI(不包含LabVIEW本身在Functions中提供的VI)时,就可算是一个中大型的软件计划(software project)了。
虽然比起软件工程中的一些作业环境软件(如Windows系列)或大型应用软件(如Word、Excel)等仍算是小工程,但其复杂性亦在一定程度之上,若没有事先想好在撰写程序时的一些规划与方法,想要完成这类中大型的软件绝对不是一件简单的事。
尤其这类软件通常不是由一个人,而是由一个团队所共同完成的,因此整个软件的结构,就要能让团队中的每一成员都能清楚的了解,而且要够简单,才算是好的软件结构。
以下将参考由Rick Bitter等人所着”LabVIEW Advanced rogramming Techniques”,中之第4章的部分内容,介绍所谓软件计划中的三层式结构(the Three-Tiered Structure)的概念及其优点。
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代表的币值作为参数传递给函数。
LabVIEW经典结构——组合动作执行模型
在LabVIEW应用程序开发中,广泛使用了一种高效的程序结构——组合动作执行模型。
该模型由While、Evnet(事件)、For、Case、enum(枚举)等向种结构和数据类型构成。
执行机理:面向对象的事件结构,响应前面板发生的针对控件的鼠标、键盘的动作,产生事件,并输出一个枚举数组,该数组作为For循环执行的索引,同时数组元素定义了执行的Case。
将各种事件响应进行分解为基本的动作单元,利用枚举数组定义出若干个由动作单元组合而成的动作序列,依据控件事件选择执行枚举数组,顺序完成对应的动作单元。
模型特点:重复利用各基本动作单元,增加代码复用率,程序更加简洁。
通过新建事件,可以定义任意组合的动作序列,灵活高效。
具有很强的模块化设计思想。
图1组合动作执行模型。