2.3 LabVIEW编程的基本概念

LabVIEW是一个功能完整的程序设计语言,具有区别于其他程序设计语言的一些独特结构和语法规则。

应用LabVIEW编程的关键是掌握LabVIEW的基本概念和图形化编程的基本思想。

2.3.1 VI与子VI

用LabVIEW开发的应用程序称为VI(Virtual Instrument的英文缩写,即虚拟仪器)。

一个最基本的VI是由节点、端口以及连线组成的应用程序。

VI运行采用数据流驱动,具有顺序、循环、条件等多种程序结构控制。

在LabVIEW中的子程序被称为子VI(SubVI)。在程序中使用子VI有以下优点:

1)将一些代码封装成为一个子VI(即一个图标或节点),可以使程序的结构变得更加清晰、明了。

2)将整个程序划分为若干模块,每个模块用一个或者几个子VI实现,易于程序的编写和维护。

3)将一些常用的功能编制成为一个子VI,在需要的时候可以直接调用,不用重新编写这部分程序,因而子VI有利于代码复用。

正因为子VI的使用对编写LabVIEW程序有很多益处,所以在使用LabVIEW编写程序的时候经常会使用子VI。

子VI由3部分组成,除前面板对象、程序框图外,还有图标的连接端口。连接端口的功能是与调用它的V1交换数据。

基于LabVIEW图形化编程语言的特点,在LabVIEW环境中,子VI也是以图标(节点)的形式出现的,在使用子VI时,需要定义其数据输入和输出的端口,然后就可以将其当作一个普通的VI来使用。

因此在使用LabVIEW编程时,应与其他编程语言一样,尽量采用模块化编程的思想,有效地利用SubVI,简化VI程序框图的结构,使其更加简洁,易于理解,以提高VI的运行效率。

2.3.2 前面板

前面板就是图形化用户界面,用于设置输入数值和观察输出量,是人机交互的窗口。由于VI前面板是模拟真实仪器的前面板,所以输入量称为控制,输出量称为指示。

在前面板中,用户可以使用各种图标,如仪表、按钮、开关、波形图、实时趋势图等,这可使前面板的界面像真实的仪器面板一样。

图2-11所示是一个调压器程序的前面板。

前面板对象按照功能可以分为控制、指示和修饰三种。控制是用户设置和修改VI程序中输入量的接口,如旋钮;指示则用于显示VI程序产生或输出的数据,如仪表。

如果将一个VI程序比作一台仪器的话,那么控制就是仪器的数据输入端口和控制开关,而指示则是仪器的显示窗口,用于显示测量结果。

978-7-111-61476-0-Chapter02-19.jpg

图2-11 调压器程序的前面板

在本书中,为方便起见,将前面板中的控制和指示统称为前面板对象或控件,控制即输入控件,指示即显示控件。

修饰的作用仅是将前面板点缀得更加美观,修饰并不能作为VI的输入或输出来使用。在控制选板中专门有一个修饰子选板。

2.3.3 程序框图

每一个前面板都有一个程序框图与之对应。上述调压器的程序框图如图2-12所示。程序的功能是通过调压旋钮产生数值,送到电压表显示,当数值大于等于8时,上限灯改变颜色。

978-7-111-61476-0-Chapter02-20.jpg

图2-12 调压器的程序框图

程序框图用图形化编程语言编写,可以把它理解成传统编程语言程序中的源代码。用图形来进行编程,而不是用传统的代码来进行编程,这是LabVIEW最大的特色。

程序框图由节点、端口和连线组成。

1.节点

节点是VI程序中的执行元素,类似于文本编程语言程序中的语句、函数或者子程序。上述调压器的程序框图中数值常量、比较函数就是节点。

LabVIEW共有4种类型的节点,见表2-6。

表2-6 LabVIEW节点类型

978-7-111-61476-0-Chapter02-21.jpg

2.端口

节点之间、节点与前面板对象之间通过数据端口和数据连线来传递数据。

端口是数据在程序框图部分和前面板对象之间传输的通道接口以及数据在程序框图的节点之间传输的接口。端口类似于文本程序中的参数和常数。

端口有两种类型:输入/输出端口和节点端口(即函数图标的连线端口)。输入或输出端口用于前面板,当程序运行时,从输入控件输入的数据就通过输出端口传送到程序框图。而当VI程序运行结束后,输出数据就通过输入端口从程序框图送回到前面板的显示控件。

当在前面板创建或删除输入控件或显示控件时,可以自动创建或删除相应的输出/输入端口。

一般情况下,LabVIEW中的每个节点至少有一个端口,用于向其他图标传递数据。

3.连线

节点之间由数据连线按照一定的逻辑关系相互连接,以定义程序框图内的数据流动方向。

连线是端口间的数据通道,类似于文本程序中的赋值语句。数据是单向流动的,从源端口向一个或多个目的端口流动。

不同的线型代表不同的数据类型,每种数据类型还以不同的颜色予以强调或区分。

连线点是连线的线头部分。接线头是为了帮助端口的连线位置正确。当把连线工具放到端口上,接线头就会弹出。接线头还有一个黄色小标识框,显示该端口的名字。

连接端口通常是隐藏在图标中的。图标和连接端口都是由用户在编制VI时根据实际需要创建的。

2.3.4 数据流驱动

由于程序框图中的数据是沿数据连线按照程序中的逻辑关系流动的,因此,LabVIEW编程又称之为“数据流”编程。“数据流”控制LabVIEW程序的运行方式。

对一个节点而言只有当它的输入端口上的所有数据都被提供以后,它才能够执行下去。当节点程序运行完毕以后,它会把结果数据送到其输出端口中,这些数据很快通过数据连线送至与之相连的目的端口。

“数据流”与常规编程语言中的“控制流”类似,相当于控制程序语句一步一步地执行。

例如,两数相加程序的前面板如图2-13所示,与之对应的程序框图如图2-14所示,这个VI程序控制a和b中的数值相加,然后再把相加之和乘以100,结果送至指示c中显示。

978-7-111-61476-0-Chapter02-22.jpg

图2-13 两数相加程序的前面板

978-7-111-61476-0-Chapter02-23.jpg

图2-14 两数相加的程序框图

在这个程序中,程序框图从左向右执行,但这个执行次序不是由其对象的摆放位置来确定的,而是由于相乘节点的一个输入量是相加节点的运算结果。只有当相加运算完成并把结果送到相乘运算节点的输入端口后,相乘节点才能执行下去。