第1篇 入门篇
第1章 LabVIEW概述
本章主要介绍LabVIEW这种图形化编程语言的基本特点,以及用LabVIEW编写程序时所要涉及的基本概念。
本章主要内容包括:
➢ LabVIEW与G语言
➢ LabVIEW与虚拟仪器技术
➢ LabVIEW中的基本概念
1.1 LabVIEW与G语言
LabVIEW(Laboratory Virtual Instrument Engineering),即实验室虚拟仪器集成环境,是一种图形化的编程语言——G语言。和Visual Basic、Visual C++、Delphi、Perl等基于文本型程序代码的编程语言不同,LabVIEW采用图形模式的结构框图构建程序代码,因而,在使用这种语言编程时,基本上不写程序代码,取而代之的是用图标、连线构成的流程图。它尽可能地利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW是一个面向最终用户的工具。它可以增强用户构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。
LabVIEW是一个工业标准的图形化开发环境,它结合了图形化编程方式的高性能与灵活性以及专为测试、测量与自动化控制应用设计的高端性能与配置功能,能为数据采集、仪器控制、测量分析与数据显示等各种应用提供必要的开发工具,因此,LabVIEW通过降低应用系统开发时间与项目筹建成本帮助科学家与工程师们提高工作效率。
LabVIEW被广泛应用于各种行业中,包括汽车、半导体、航空航天、交通运输、高校实验室、电信、生物医药与电子等。无论在哪个行业,工程师与科学家们都可以使用LabVIEW创建功能强大的测试、测量与自动化控制系统,在产品开发中进行快速原型创建与仿真工作。在产品生产过程中,工程师们也可以利用LabVIEW进行生产测试,监控各个产品的生产过程。总之,LabVIEW可用于各行各业产品开发的阶段。
LabVIEW的功能非常强大,它是带有可扩展函数库和子程序库的通用程序设计系统,不仅可以用于一般的Windows桌面应用程序设计,而且还提供了用于GPIB设备控制、VXI总线控制、串行口设备控制,以及数据分析、显示和存储等应用程序模块,其强大的专用函数库使得它非常适合编写用于测试、测量以及工业控制的应用程序。LabVIEW可方便地调用Windows动态链接库和用户自定义的动态链接库中的函数,还提供了CIN(Code Interface Node)节点使得用户可以使用由C或C++语言,如ANSI C等编译的程序模块,使得LabVIEW成为一个开放的开发平台。LabVIEW还直接支持动态数据交换(DDE)、结构化查询语言(SQL)、TCP和UDP网络协议等。此外,LabVIEW还提供了专门用于程序开发的工具箱,使得用户能够很方便地设置断点,动态地执行程序来非常直观形象地观察数据的传输过程,而且可以方便地进行调试。
当我们困惑于基于文本模式的编程语言,陷入函数、数组、指针、表达式乃至对象、封装、继承等枯燥的概念和代码中时,我们迫切需要一种代码直观、层次清晰、简单易用却不失功能强大的语言,G语言就是这样一种语言,而LabVIEW则是G语言的杰出代表。LabVIEW基于G语言的基本特征——用图标和框图产生块状程序,这对于熟悉仪器结构和硬件电路的硬件工程师、现场工程技术人员及测试技术人员来说,编程就像是设计电路图一样;因此,硬件工程师、现场工程技术人员及测试技术人员们学习LabVIEW可以驾轻就熟,在很短的时间内就能够学会并应用LabVIEW。
从运行机制上看,LabVIEW——这种语言的运行机制就宏观上讲已经不再是传统的冯·诺伊曼计算机体系结构的执行方式了。传统的计算机语言(如C语言)中的顺序执行结构在LabVIEW中被并行机制所代替;从本质上讲,它是一种带有图形控制流结构的数据流模式(Data Flow Mode),这种方式确保了程序中的函数节点(Function Node),只有在获得它的全部数据后才能够被执行。也就是说,在这种数据流程序的概念中,程序的执行是数据驱动的,它不受操作系统、计算机等因素的影响。
LabVIEW的程序是数据流驱动的。数据流程序设计规定,一个目标只有当它的所有输入有效时才能执行;而目标的输出,只有当它的功能完全时才是有效的。这样,LabVIEW中被连接的方框图之间的数据流控制着程序的执行次序,而不像文本程序受到行顺序执行的约束。因而,我们可以通过相互连接功能方框图快速简捷地开发应用程序,甚至还可以有多个数据通道同步运行。
1.2 LabVIEW与虚拟仪器技术
提到LabVIEW就不得不提“虚拟仪器技术”,可以说LabVIEW是依托“虚拟仪器技术”的发展需要而诞生的,是“虚拟仪器技术”的精髓理念——“软件就是仪器”中的软件部分,或者说是“虚拟仪器技术”实现的核心环节。正因为LabVIEW与“虚拟仪器技术”有着千丝万缕的联系,要想了解乃至用好LabVIEW就需要先了解“虚拟仪器技术”。通过这一节的学习,在了解LabVIEW与“虚拟仪器技术”关系的同时,读者将会体会到LabVIEW的强大功能和学习LabVIEW这种图形化编程语言的重要意义。
1.2.1 虚拟仪器的概念及其相对于传统仪器的优势
传统仪器大多由以下三大功能模块组成:对被测信号的采集与控制模块、分析与处理模块,以及测量结果的表达与输出模块。传统仪器的这些功能都是以硬件(或固化的软件)的形式存在的。将这些功能移植到计算机上完成,在计算机上插上数据采集卡,然后利用软件在屏幕上生成仪器面板,并且用软件来进行信号的分析处理,这就构成了一台虚拟仪器。
虚拟仪器是一种全新的仪器概念,它是利用计算机的硬件资源(CPU、存储器、显示器、键盘、鼠标)、标准数字电路(GPIB、RS-232接口总线、新型的VXI接口总线、信号调理和转换电路、图像采集电路、现场总线等)以及计算机软件资源(数据分析与表达、过程通信、图像用户界面等),经过有针对性的开发测试,使之成为一套相当于使用者自己专门设计的传统仪器。
简单地说,虚拟仪器技术就是用户自定义的基于PC技术的测试和测量解决方案。相对于传统仪器,它有四大优势:性能高、扩展性强、开发时间少、完美的集成功能。
● 性能高
虚拟仪器是在PC技术的基础上发展起来的,所以完全“继承”了以现成的PC技术为主导的最新商业技术的优点,包括功能卓越的处理器和文件I/O,使用户在数据导入磁盘的同时就能实时地进行复杂的分析。随着数据传输到硬盘功能的不断加强,以及与PC总线的结合,高速数据记录已经较少依赖大容量的本地内存。以一台60G的示波器为例,在采用虚拟仪器技术的情况下,构建这样一台示波器是相当简单的,只要将一台基于PC的数字转换器放置在PC机中,就能以高达每秒100MB的速度将数据导入磁盘。
虚拟仪器技术的另一突出优势就是不断提高的网络带宽。因特网和越来越快的计算机网络的数据分享进入了一个全新的阶段,将因特网和NI(National Instrument,美国国家仪器公司)的软硬件产品相结合,用户就能够轻松地与地球另一端的同事共享测量结果,分享“天涯若比邻”的便捷。
图1.1很好地说明了虚拟仪器的性能,随着计算机存储器、图形处理器、I/O单元,以及CPU速度与性能的提高,虚拟仪器的性能会随之提高,而这都有赖于虚拟仪器“软件就是仪器”的概念,换言之,这种性能的提高有赖于软件,而LabVIEW就是这种“虚拟仪器软件”最好的开发平台和开发环境之一。
图1.1 虚拟仪器的性能有赖于计算机的性能
● 扩展性强
虚拟仪器的软、硬件工具使得工程师和科学家们不再圈囿于当前的技术中。得益于虚拟仪器软件的灵活性,只需更新用户的计算机或测量硬件,就能以最少的硬件投资和极少的、甚至无须软件的升级即可改进用户的整个系统。在利用最新科技的时候,用户可以把它们集成到现有的测量设备中来,最终以较少的成本加速产品上市的时间。
图1.2诠释了虚拟仪器技术扩展性强的特点。应用虚拟仪器开发平台(如LabVIEW)开发出的虚拟仪器,可以将商业技术应用于运动控制、工业自动化、测试与测量等领域,并快速将其转化为产品,而这一转化过程的关键是用LabVIEW开发出来的软件。
图1.2 虚拟仪器具有很强的扩展性
● 开发时间少
在驱动和应用两个层面上,虚拟仪器技术高效的软件构架能与计算机、仪器仪表和通信方面的最新技术结合在一起。NI设计这一软件构架的初衷就是为了方便用户的操作,同时还提供了灵活性和强大的功能,使用户轻松地配置、创建、部署、维护和修改高性能、低成本的测量和控制解决方案。
● 完美的集成
虚拟仪器技术从本质上说是一个集成的软硬件概念。随着产品在功能上不断地趋于复杂,工程师们通常需要集成多个测量设备来满足完整的测试需求,但是这些不同设备间的连接和集成总是耗费大量时间,不是轻易可以完成的。NI的虚拟仪器软件平台为所有的I/O设备提供了标准的接口,例如数据采集、视觉、运动和分布式I/O等,帮助用户轻松地将多个测量设备集成到单个系统中,减少了任务的复杂性。为了获得最高的性能、简单的开发过程和系统层面上的协调,这些不同的设备必须保持其独立性,同时还要紧密地集成在一起。NI的结构可以使开发者们快速地创建测试系统,并随着要求的改变轻松地完成对系统的修改。得益于这一集成式的构架带来的好处,用户的系统可以更具竞争性,因为用户可以更高效地设计和测试高质量的产品,并将它们更快速地投入市场。
虚拟仪器与传统仪器特点的对比如表1.1所示。
表1.1 虚拟仪器与传统仪器特点的对比
1.2.2 虚拟仪器的特点
虚拟仪器是计算机技术和仪器测量技术相结合的产物,它充分利用了计算机强大的运算处理功能,突破了传统仪器在数据处理、显示、传输、存储等方面的限制。目前,基于PC的A/D及D/A转换,开关量输入、输出,定时计数的硬件模块,在技术指标及可靠性等方面已相当成熟,而且价格低廉。常用传感器及相应的调理模块也趋向模块化、标准化,因而减少了硬件的重复开发,这使得使用者可以方便地对其进行硬件维护、功能扩展和软件升级。
虚拟仪器的特点如下:
● 具有可变性、多层性、自助性的面板
虚拟仪器的面板可以做到与传统仪器一样,可以有显示器显示波形,有LED指示数字,有指针式的表头指示刻度,有旋钮、滑动条、开关按钮,有报警指示灯和声音等。而虚拟仪器的优越之处在于传统仪器面板上的元器件是硬件,是由厂商设计确定的,不可改变地安装在专用的面板上。而虚拟仪器的面板由计算机的显示器构成,面板上的各种显示控制元件是软件图库中的各种功能图形,由用户设计面板,调用图形块,用户可以不受“标准件”和“加工工艺”限制,随意增、删、移动元器件,变化尺寸、色彩等。还可以制作多层下拉面板、帮助文件等,做出远远超过传统仪器的全汉化、生动美观、界面友好的面板。
● 强大的信号处理能力
用适当的硬件接口电路,对信号进行采集、放大、滤波、隔离、A/ D转换后,虚拟仪器就可以灵活、充分地利用通用计算机的大量实用软件工具,对信号进行各种计算、分析、判断、处理、图形或数字显示,经过D/A转换后控制执行器件的动作。
● 虚拟仪器的功能、性能、指标可由用户定义
一方面可以根据用户的不同要求对同一仪器的功能、性能、指标进行修改或增删,彻底打破了传统仪器一经设计、制造完成后,其功能、性能、指标不可改变的封闭性、单一性。另一方面也可以将多种仪器的功能、性能、指标等以软件的形式集成在一个“功能软件库”——虚拟仪器库内,通过它们的不同组合以及与各种不同类型的硬件接口搭配,使得在一台个人计算机就可实现各种仪器的不同功能,大大提高了仪器功能的灵活性,甚至可以进行非常复杂的测试工作。
● 具有标准的、功能强大的接口总线、板卡及相应软件
GPIB通用接口总线(General Purpose Interface Bus)又称IEEE488国际标准接口总线,三十年来广泛应用于仪器领域。但是只适用于消息级器件的互操作,不适用于寄存器级器件。VXI总线1987年被首次推出,迅速成为IEEE1155国际标准。VXI硬件的通用性,使任意厂家、各种类型仪器接口不会发生电气和机械方面的冲突。VXI总线的开放性,保证任何系统一旦建立,将来仍能得到很好的应用。VXI能保持每个仪器之间精确定时和同步,具有40 M Bytes/ s的高数据传输率。VXI模块化仪器被认为是虚拟仪器最理想的硬件平台,是仪器硬件的发展方向。此外,还有VISA、PCI等标准I/O卡及其相应的驱动程序库,这些都为虚拟仪器的数据采集和控制提供了强大支持。
● 虚拟仪器具有开发周期短、成本低、维护方便、易于应用的特点
这些特点决定了应用“虚拟仪器技术”可以快速、低成本地开发出具有相当大柔性的仪器,并且这种仪器便于维护和升级。
1.2.3 LabVIEW是著名的虚拟仪器开发平台
上面两节分别介绍了虚拟仪器的概念、虚拟仪器相对于传统仪器的优势,以及虚拟仪器的特点。从虚拟仪器的概念出发,不难发现,软件——虚拟仪器的开发平台是虚拟仪器的精髓,而LabVIEW正是一款优秀的虚拟仪器软件开发平台。
作为美国国家仪器公司(National Instrument,简称NI公司)推出的虚拟仪器开发平台,LabVIEW以其直观、简便的编程方式,众多的源码级的设备驱动程序,多种多样的对分析和表达功能的支持,为用户快捷地构建自己在实际生产中所需要的仪器系统创造了基础条件。
由于采用了图形化编程语言——G语言,LabVIEW产生的程序是框图的形式,易学易用,特别适合硬件工程师、实验室技术人员、生产线工艺技术人员的学习和使用,可以在很短的时间内掌握并应用到实践中去。因此,硬件工程师、现场工程技术人员及测试技术人员们学习LabVIEW驾轻就熟,在很短的时间内就能够学会并应用LabVIEW,也不必去记忆那眼花缭乱的文本式程序代码。
LabVIEW程序又称为虚拟仪器,它的表现形式和功能类似于实际的仪器;但LabVIEW程序很容易改变设置和功能。因此,LabVIEW特别适用于实验室、多品种小批量的生产线等需要经常改变仪器和设备的参数和功能的场合,以及对信号进行分析、研究、传输等场合。
总之,由于LabVIEW能够为用户提供简明、直观、易用的图形编程方式,能够将烦琐复杂的语言编程简化成为以菜单提示方式选择功能,并且用线条将各种功能连接起来,十分省时简便,深受用户青睐。与传统的编程语言比较,LabVIEW图形编程方式能够节省85%以上的程序开发时间,其运行速度却几乎不受影响,体现出了极高的效率。使用虚拟仪器产品,用户可以根据实际生产需要重新构筑新的仪器系统。例如,用户可以将原有的带有RS232接口的仪器、VXI总线仪器,以及GPIB仪器通过计算机连接在一起,组成各种各样新的仪器系统,由计算机进行统一管理和操作。
可以预见,由于LabVIEW这些其他语言无法比拟的优势,已经成为该领域的一朵奇葩,最终将引发传统的仪器产业一场新的革命。
1.3 LabVIEW中的基本概念
为了让读者更快地熟悉LabVIEW的编程模式和编程方法,了解其中的基本概念是很有必要的,这一节主要结合LabVIEW 8.0的编程环境介绍LabVIEW中的基本概念。
1.3.1 VI的概念
用LabVIEW开发出的应用程序被称做VI(Virtual Instrument的英文所写,即虚拟仪器)。VI是由图标、连线以及框图构成的应用程序,由Front Panel(前面板)和Block Diagram(后面板)两部分构成。
前面板是应用程序的界面,是人机交互的窗口,主要由Controls(控制量)和Indicators(显示量)构成。当程序运行时,用户通过控制量(例如用户输入数据的文本框以及一些按钮、开关等)输入数据和控制程序的运行,而显示量(例如显示波形的示波器控件等)则主要用于显示程序运行的结果。如果将一个VI程序比作一台仪器的话,那么,控制量就是仪器的数据输入端口和控制开关,用于给程序提供输入数据和控制信号,而显示量则是仪器的显示窗口,用于显示经过程序分析、处理后的结果。
图1.3 展示了用LabVIEW编写的程序的前面板,其中有四个控制量和一个显示量。这个程序将产生的频率、幅值可控的正弦波叠加了一个幅值可控的噪声信号,然后用“示波器窗口”显示出来。其中控制正弦波的幅值、频率,以及控制噪声幅值的文本框都是“控制量”,控制程序停止运行的“STOP”按钮也是“控制量”,而显示波形的“示波器窗口”则是显示量。简单地说,控制量和显示量构成了一个VI的基本输入和输出组件。
图1.3 LabVIEW程序的前面板
提示:在LabVIEW中,控制量是可以接受用户输入的量,其背景是白色的,表示它的取值可以被用户改变;而显示量的背景则是灰色的,表明它的取值不能被改变和调节,只能作为程序运算结果的显示。
图1.4展示了上述程序的后面板。后面板是VI的代码部分,也是VI的核心。从图1.4中可以看出VI的后面板主要由图标、连线和框图构成。这些图标、连线和框图实际上是一些常量、变量、函数、VIs和Express VIs,正是它们构成了VI的主体。
图1.4 LabVIEW程序的后面板
如果把VI的前面板比作一个仪器的操作面板,用于信号的输入、结果的显示以及控制仪器的运行,那么后面板就是仪器中的电路板和电路元件,主要用来进行信号的分析和处理。
提示:细心的读者可能已经发现前面板上面的每一个控制量和显示量在后面板上都有一个对应的图标,例如正弦波的幅值(Amplitude)、频率(Frequency),以及噪声的幅值(Noise amplitude)。LabVIEW正是利用这种一一对应的关系在前面板和后面板之间传递数据的。
VI的前、后面板分别作为人机交互界面和代码窗口,用LabVIEW编写程序的主要过程就是对前、后面板的编辑和调试。
技巧:用快捷键【Ctrl+E】可以快速切换VI程序的前面板和后面板。
1.3.2 图标、连线和框图
在上一节中已经介绍过,LabVIEW的后面板主要由一些图标、连线和框图构成,这一节将主要介绍这些用于构建LabVIEW后面板的元素。
图标是LabVIEW作为G语言这种图形化编程语言的特色之一,是图形化了的常量、变量、函数,以及VIs和Express VIs。在一般情况下,LabVIEW中的每个图标至少有一个端口,用来向其他图标传递数据。
图1.5列出了LabVIEW 8.0中的一些基本的图标。
图1.5 LabVIEW 8.0中的一些基本的图标
连线是图标的数据端口间的数据通道,它们类似于普通程序中的赋值语句。数据是单向流动的,从“源数据端口”向一个或多个“目的数据端口”流动。不同的线型代表不同的数据类型。在显示器上,每种数据类型以不同的颜色予以强调。
图1.6展示了LabVIEW 8.0中不同数据类型的连线所使用的颜色。
图1.6 LabVIEW 8.0中不同数据类型的连线所使用的颜色
框图用以实现LabVIEW中的流程控制。如循环控制、条件分支控制和顺序控制等,编程人员可以使用它们控制VI程序的执行方式。在LabVIEW中,框图的使用是保证其结构化程序设计特征的重要手段。
在图1.7中列出的是LabVIEW 8.0中部分用于结构控制的框图。
图1.7 LabVIEW 8.0中部分用于结构控制的框图
技巧:在LabVIEW中,单击某一条连线可以选中连线中的一条直线段,如图1.8(1)所示;双击一条连线可以选中整条连线,如图1.8(2)所示。
图1.8 (1)选中连线中的直线段
图1.8 (2)选中整条连线
1.3.3 子VI与子程序
和其他编程语言一样,在LabVIEW中也存在子程序的概念,在LabVIEW中的子程序被称做子VI。在程序中使用子VI有以下优点:
● 将一些代码封装成为一个子VI(即一个图标),可以使程序的结构变得更加清晰、明了。
● 将整个程序划分为若干模块,每个模块用一个或者几个子VI实现,易于程序的编写和维护。
● 将一些常用的功能编制成为一个子VI,在需要的时候可以直接调用,不用重新编写这部分程序,因而子VI有利于代码复用。
正因为子VI的使用对编写LabVIEW程序有很多益处,所以在使用LabVIEW编写程序的时候经常会使用子VI。基于LabVIEW图形化编程语言的特点,在LabVIEW环境中,子VI也是以图标的形式出现的,在使用子VI时,需要定义其数据输入和输出的端口,然后就可以将其当做一个普通的VI来使用了。
1.3.4 LabVIEW 8.0的新特色
图1.9所示的LabVIEW 8.0的【新特性】对话框中显示了LabVIEW 8.0和以往版本的不同之处,读者在阅读和使用LabVIEW 8.0时可以参考。
图1.9 LabVIEW 8.0的【新特性】对话框
提示:图1.12中显示的LabVIEW 8.0与以往版本不同的【新特性】对话框可以在Tools菜单中的Options菜单项中找到,在Options菜单项中选择“New and Changed in 8.x”就可以看到LabVIEW 8.0.x的新特性以及与从前版本相比的改变。
1.4 本章小结
这一章概述了LabVIEW的相关背景知识,介绍了LabVIEW作为一种图形化编程语言——G语言的基本特征及其相对于传统编程语言的优势。为了让读者详细了解LabVIEW产生的背景及其强大功能,本章介绍了LabVIEW与虚拟仪器技术的关系,以及LabVIEW在虚拟仪器技术中所担当的重要角色。
在本章的最后讲解了LabVIEW中的VIs、图标、连线、框图和子VI、Express VIs等基本概念,这对深入了解LabVIEW以及使用LabVIEW进行程序设计是不无裨益的。