2.4 虚拟仪器

2.4.1 概述

始自20世纪40年代末的计算机革命给当代社会的发展注入了活力,计算机的迅速发展和普及带动了各个行业的进步,有力地促进了多年来发展相对缓慢的仪器仪表技术的飞跃,给仪器仪表领域带来了深刻的变化:20世纪70年代初期将微处理器引入仪器设计时,出现了智能仪器;20世纪80年代初在个人计算机发展了个人仪器;而20世纪80年代后期将虚拟现实技术引入到仪器设计中,而最终发展成为虚拟仪器。虚拟仪器技术已经在现代液压测试技术中得到了成功应用。

测量仪器的主要功能都是由数据采集、数据分析和数据显示等三大部分组成的。在虚拟现实系统中,数据分析和显示完全用PC机的软件来完成。因此,只要额外提供一定的数据采集硬件,就可以与PC机组成测量仪器。这种基于PC机的测量仪器称为虚拟仪器。在虚拟仪器中,使用同一个硬件系统,只要应用不同的软件编程,就可得到功能完全不同的测量仪器。

美国国家仪器公司NI(National Instruments)提出的虚拟测量仪器概念,引发了传统仪器领域的一场重大变革(表2-2列出了传统仪器与虚拟仪器间的比较),使得计算机和网络技术得以长驱直入仪器领域,和仪器技术结合起来,从而开创了“软件即是仪器”的先河。从这一思想出发,基于电脑或工作站、软件和I/O部件来构建虚拟仪器。I/O部件可以是独立仪器、模块化仪器、数据采集板或传感器。

表2-2 传统仪器与虚拟仪器的比较  

传统的智能仪器主要在仪器技术中用了某种计算机技术,而虚拟仪器则强调在通用的计算机技术中吸收仪器技术。作为虚拟仪器核心的软件系统具有通用性、可视性、可扩展性和升级性,能为用户带来极大的利益。因此,它具有传统的智能仪器所无法比拟的应用前景和市场,是智能仪器发展的新阶段。

虚拟仪器是电子仪器与计算机技术更深层次结合的新型仪器模式,它具有如下优点。

①融合了计算机强大的硬件资源,突破了传统仪器在数据处理、显示、存储等方面的限制,仪器的功能显著提高。

②充分利用计算机丰富的软件资源,将部分仪器硬件软件化,提高了系统灵活性。通过软件技术和相应的数值算法,实现了对测试数据实时、直接的分析与处理。良好的图形用户界面(GUI)技术使得仪器界面友好,人机交互方便。

③基于计算机总线和模块化仪器总线,实现了硬件模块化、系列化,提高了系统的可靠性,且方便了系统的维护。

④基于计算机网络技术和接口技术,互联灵活、方便,可支持各种工业总线标准,利用VI技术很容易构建自动测试系统,实现测量、控制过程的智能化、网络化。

⑤基于计算机的开放式标准体系结构,虚拟仪器的硬、软件都具有开放性、可重复性使用及互换性等特点。因此,用户可根据自己的需要,选用不同厂家的产品,使仪器系统的开发更为灵活、效率更高,缩短了系统组建周期。

虚拟仪器走的是一条标准化、开放性、多厂商的技术路线,并沿着总线与驱动程序的标准化、硬件与软件的模块化、硬件模块的即插即用化、编程平台的图形化等方向发展。随着计算机网络技术、多媒体技术、分布式技术等的飞速发展,虚拟仪器技术的内容将会更加丰富。如简化仪器数据传输的Internet访问技术DateSocket、基于组件对象模型(COM)的仪器软硬件互操作技术OPC、软件开发技术ActieveX等。这些技术不仅能有效提高测试系统的性能,而且为 “软件仪器时代”的到来做好了技术上的准备。

虚拟仪器的发展随着微机的发展和采用总线方式的不同,可分为五种类型。

(1)PC插卡型虚拟仪器

这种方式借助于插入计算机内的数据采集卡与专用的软件(如LabVIEW)相结合构成测试系统,它充分利用计算机的总线、机箱、电源及软件的便利。但是受PC机机箱和总线限制,且有电源功率不足、机箱内部的噪声电平较高、插槽数目也不多、插槽尺寸比较小、机箱内无屏蔽等缺点。另外,ISA总线的虚拟仪器已经淘汰,PCI总线的虚拟仪器价格比较昂贵。

(2)并行口式虚拟仪器

可连接到计算机并行口的测试装置,并把仪器硬件集成在一个采集盒内,仪器软件装在计算机上,通常可以完成各种测试仪器的功能,可以组成数字存储示波器、频谱分析仪、逻辑分析仪、任意波形发生器、频率计、数字万用表、功率计、程控稳压电源、数据记录仪、数据采集器。美国LINK公司的DSO-2×××系列虚拟仪器,其最大好处是既可以与笔记本计算机相连,又可与台式PC机相连,实现台式和便携式两用,非常方便。

(3)GPIB总线式虚拟仪器

GPIB技术是IEEE488标准的虚拟仪器早期的发展阶段,它的出现使电子测量独立的单台手工操作向大规模自动测试系统发展。典型的GPIB系统由一台PC机、一块GPIB接口卡和若干台GPIB形式的仪器通过GPIB电缆连接而成。在标准情况下,一块GPIB接口可带多达14台仪器,电缆长度可达40m。GPIB技术可用计算机实现对仪器的操作和控制,替代传统的人工操作方式,可以很方便地把多台仪器组合起来,形成自动测试系统。

(4)VXI总线式虚拟仪器

VXI总线是一种VME总线在虚拟仪器领域的扩展,它具有稳定的电源,强有力的冷却能力和严格的RFI/EMI屏蔽。由于它的标准开放、结构紧凑、数据吞吐能力强、定时和同步精确、模块可重复利用、众多仪器厂家支持等优点,很快得到了广泛的应用。经过多年的发展,VXI系统的组建和使用越来越方便,尤其是组建大、中规模自动测试系统以及对速度、精度要求高的场合。然而,组建VXI总线要求有机箱、零槽管理器及嵌入式控制器,造价比较高。

(5)PXI总线式虚拟仪器

PXI总线方式是PCI总线内核技术增加了成熟的技术规范和要求形成的,增加了多板同步触发总线,用于相邻仪器模块的高速通信的局部总线。PXI具有高度可扩展性,它有8个扩展槽,而台式PCI系统只有3~4个扩展槽。通过使用PCI-PCI桥接器,可扩展到256个扩展槽。PXI总线式虚拟仪器结合了台式计算机的性能价格比和PCI总线面向仪器领域的扩展优势,将形成未来的虚拟仪器平台。

2.4.2 虚拟仪器的基本组成

(1)虚拟仪器的功能模块

与传统的计算机测试系统不同的是,虚拟仪器的基本功能模块并不是只针对某种或某几种仪器,它具有通用性。通过编制不同的测试程序形成不同的通用模块组合,可构成各种各样的仪器。与传统的计算机测试系统一样,虚拟仪器也是由信号的采集与控制、信号的分析与处理、测试结果的显示与存储三大基本功能模块组成的,如图2-18所示。

图2-18 虚拟仪器的功能模块

①信号采集与控制 数据采集与控制主要指的是A/D转换与D/A转换,其核心部件是数据采集卡,以及与数据采集卡接口相匹配的仪器和硬件设备。它将被测的模拟信号通过A/D转换器转换为计算机可以识别的数字信号,当虚拟仪器需要向外提供测试激励信号时,需要提供一个模拟信号产生设备,如任意波形发生器, D/A转换器把计算机产生的波形数据转换成波形信号。

②信号分析与处理 信号的分析与处理过程就是对测试信号进行去伪存真、排除干扰,从而获得所需的有用信息的过程,主要包括对各种信号的分析、整理、计算、编辑等的加工和处理。利用计算机提供的软件资源,通过时域分析和频域分析,可以研究信号的构成和特征值,还可对信号进行必要的变换以获得所需信息。

③结果显示与存储 信号分析和处理后的结果,可直接打印、图形显示、网络输出,或者将原始数据或计算的结果保存在存储器中,以供后续数据处理和分析。

(2)虚拟仪器的体系结构

虚拟仪器由硬件和软件两大部分构成,如图2-19所示。硬件是虚拟仪器的基础,软件是虚拟仪器的核心。

图2-19 虚拟仪器的体系结构

①虚拟仪器的硬件系统 虚拟仪器硬件通常包括基础硬件平台和外围测试硬件设备,它们共同组成通用仪器硬件平台。基础硬件平台采用各种类型的通用计算机,如笔记本电脑、台式计算机或工作站等,它管理着虚拟仪器的软件资源,是虚拟仪器的硬件基础。计算机技术在显示、存储能力、处理器性能、网络、总线标准等方面的发展,导致了虚拟仪器系统的快速发展。外围测试硬件设备可以选择GPIB系统、VXI系统、PXI系统、DAQ系统或串口系统等,也可以选择由两种或两种以上系统构成的混合系统。其中,最简单、最廉价的形式是采用基于ISA或PCI总线的数据采集卡(DAQ),或是基于RS-232或USB串行总线的便携式数据采集模块。

②虚拟仪器的软件系统 虚拟仪器的软件系统包括操作系统、应用软件、仪器驱动程序和VISA库。操作系统是虚拟仪器软件系统的基础平台,它可以选择Windows、VxWorks、μC/OS、Linux等。仪器驱动器软件是直接控制各种硬件接口的驱动程序,它建立在I/O接口操作软件的基础上,是连接应用软件与外围硬件模块的桥梁。每个仪器模块都有自己的驱动程序,由仪器厂商以源码的形式提供给用户。VISA库(I/O函数库)驻留于计算机系统之中执行仪器总线的特殊功能,是计算机与仪器之间的软件层连接,用以实现对仪器的程控,它对于仪器驱动程序开发者来说是一个可调用的操作函数集。

应用软件建立在仪器驱动程序之上,包括实现仪器功能的测试程序和实现虚拟面板的界面程序,它直接面向操作用户,通过提供直观、友好的操作界面以及丰富的数据分析与处理功能来完成自动测试任务。应用软件还包括通用数字处理软件,它包含用于数字信号处理的各种功能函数,如用于频率分析的功率谱估计、快速傅里叶变换(FFT)、快速哈特莱变换(FHT)、逆FFT、逆FHT和细化分析,用于时域分析的相关分析、卷积运算、反卷运算、均方根估计、差分积分运算和排序及数字滤波等。功能函数方便了用户进一步扩展虚拟仪器的功能。

2.4.3 基于LabVIEW的虚拟仪器的开发

(1)虚拟仪器系统的开发过程

虚拟仪器系统的开发过程主要包括测试需求分析、总体方案设计、硬件设计、软件设计、系统集成及调试等,如图2-20所示。虚拟仪器系统的组建方案主要包括底层硬件、软硬件接口、应用程序以及驱动程序的设计与开发。

图2-20 虚拟仪器系统的开发过程

①制定所设计仪器的接口形式 如果仪器设备具有RS-232串行接口,则直接用连线将仪器设备和计算机的RS-232串行口连接即可。如果是GPIB接口,需要额外配备一块GPIB-488接口板,将接口板插入计算机的ISA插槽,建立起计算机与仪器设备之间的通信桥梁。如果使用计算机来控制VXI总线设备,则需要配置一块GPIB接口卡,通过GPIB 总线与VXI主机箱零槽模块通信。零槽模块的GPIB-VXI翻译器将GPIB 的命令翻译成VXI命令,并把各模块返回的数据以一定的格式传回主控计算机。由于数据采集卡是基于计算机标准总线,因此可以将数据采集卡直接插到计算机的插槽上。

②开发硬件采集卡 先用传感器把非电的物理量转变成模拟电量,采样/保持器可以保持信号,实现对瞬时信号进行采集,以便A/D转换器进行数字转换,提高A/D转换器的转换精度。多路模拟开关可以分时选通来自多个输入通道的某一路信号,这样在多路开关后的单元电路,只需一套即可,也可以采用计算机进行多路选择控制。当传感器输出的信号比较小,可以用放大器放大和缓冲输入信号。如果采用的是可编程增益放大器,可以通过计算机进行增益选择控制确定增益倍数。

精度及性能是仪器系统的生命,而这完全依赖于提供基础数据的信号采集控制电路。因此在硬件采集电路的设计时,需根据所设计的虚拟仪器所要达到的性能指标和被测信号的特点,设计合理的系统结构。系统的结构合理与否,对系统的可靠性、性能价格比等有直接影响。在硬件和软件功能的设计上要尽量使虚拟仪器的结构简单、可靠性高、成本低廉,选用合适的单元器件,尽可能地提高采集卡采集的精度和速度。

③确定设计采集卡的驱动程序方案 采集卡的驱动程序是控制各种硬件采集卡的程序,是连接主控计算机与信号采集调理部件的纽带。驱动程序的实质是为用户提供用于仪器操作的较抽象的操作函数集,它是虚拟仪器核心软件之一。

④确定虚拟仪器应用程序编程语言 虚拟仪器软件结构的设计在体现整个系统的性能和灵活性方面作用很大。因此在开发虚拟仪器的软件部分时,首先要根据所开发的虚拟仪器功能和性能,确定应用程序和软面板程序的模块结构和功能,画出各部分的流程图,采用合适的编程语言。在编制虚拟仪器软件中可采用两种编程方法:一种是采用面向对象的可视化的高级编程语言,如VC++、VB和Delphi等编写虚拟仪器的软件,这种方法实现的系统灵活性高,易于扩充和升级维护;另一种是采用图形化编程方法,如LabVIEW、HPVEE,采用图形化编程的优势是软件开发周期短、编程较简单,特别适合工程技术人员使用。在编写程序时,要尽可能地让每一模块都有一定的独立性,模块之间明确定义接口,模块之间可以采用数据传递的形式进行联系。

⑤软件调试和运行 程序编写好后需要对各模块进行调试和运行,可以通过采集各种标准信号来验证虚拟仪器功能的正确性和性能的优良性。

(2)以LabVIEW为虚拟仪器开发平台软件

LabVIEW是美国NI公司研究开发的一个功能强大的仪器系统开发平台,最近又推出了LabVIEW 2014。LabVIEW是一种图形化的程序设计语言,采用工程人员所熟悉的术语、图标等图形化符号替代基于文字的程序语言,将复杂、烦琐的语言编程简化为简单、直观、易学的图形编辑,给不熟悉C、C++等计算机语言的开发者提供极大的方便,并节约了程序开发时间。此外,LabVIEW还提供了调用库函数及代码接口节点等功能,使用户可直接调用其他语言编制成的可执行程序,使得LabVIEW具有开放性的编程环境。

LabVIEW通过图形化编程的方法建立具有测试功能的虚拟仪器,对于复杂的测试,则按模块化设计概念,将测试任务分解为多项,每项任务再分解为若干子项,直到分解成最简单的测试任务子项为止。根据每个子任务可建立一个子虚拟仪器,根据分解后的一系列子任务,可建立包含所有任务的多层子虚拟仪器集合,其中每个子虚拟仪器相当于常规程序中的一个程序模块。低层子虚拟仪器可被上一层虚拟仪器无限制调用(如图2-21所示),以完成复杂的测试任务。

图2-21 VI间的层次调用结构

LabVIEW的基本程序单元是一个VI(Virtual Instrument),对于简单的测试任务,可以由一个VI之间的层次调用结构构成,高层功能的VI调用一个或多个低层的特殊功能的VI。可见,LabVIEW中的VI相当于常规语言中的程序模块,通过它实现了软件的重用。每个VI均有两个工作界面,一个称之为前面板(Front Panel);另一个称之为框图程序(Block Diagram)。

前面板是用户进行测试工作时的输入输出界面,可以通过Control模板选择多种输入控制部件和指示部件来构成前面板。控制部件用于将用户的输入数据送到程序中,指示部件用于显示程序产生的各种类型输出。

框图程序是用户用图形编程语言编写程序的界面,用户可以根据制定的测试方案通过Functions模板选择不同的图形化节点(Node),然后用连线的方式把这些节点连接起来,构成所需的框图程序。

建立LabVIEW VI过程由以下三部分组成:

①设计一个用户界面 从Control模板中选择所需的子模板,再从子模板中选取所需的选项,利用数以百计的内置的、可完全自定义的VI目标交互式地创建一个用户界面。

②编制图形化代码 从Functions模板中选择所需的选项,利用其图形化编程功能和自动代码生成功能来开发自定义的设计、控制和测试应用程序。

③调试和发布 利用集成的图形化调试工具确保操作的正确性,并且将应用程序发布至台式机、便携式计算机、工业计算机和嵌入式设备等各种目标设备。

图2-22所示为利用LabVIEW编制的液压测试系统正弦振动THD分析程序;图2-23为其运行界面图。从图中可以清楚地知道谐波分布、各次谐波的幅值大小,并可将分析后的数据保存为MATLAB格式,供后续分析计算用。由此可见,LabVIEW提供了一个理想的程序设计环境,它不但降低了测试系统开发的难度和成本,还增强了系统改造和升级的方便灵活性。当需要改变测试系统时,只需根据具体的目标,对功能方框作必要的补充、修改,或者对框图程序的软件结构进行调整,就可实现测试系统的改造和升级。

图2-22 LabVIEW振动信号分析程序

图2-23 LabVIEW运行界面