在了解什么是虚拟仪器(Virtual Instrumentation,VI)之前,这里先简单回顾一下仪器技术的演进历程。在测试、测量领域,仪器经历了与电话类似的发展过程。它们或者被植入CPU、内存中,安装上软件,具备了计算机的基本功能;或者被拆解开来,取其核心部件插入到计算机中去,使计算机具备测试功能。这两种发展方向都使得仪器的功能更强大,速度更快,而其区别之处在于,把仪器移植到计算机中,更多考虑的是降低成本;而把计算机移植到仪器中,则更多的是为了满足仪器小型化的需要。
在计算机运算能力强大到一定程度之后,以“虚拟”为前缀的各项技术开始纷纷出现,比如虚拟现实、虚拟机和虚拟仪器等。虚拟现实是指用计算机表现真实世界;虚拟机是指在一台计算机上模拟多台计算机;虚拟仪器是指在计算机上完成仪器的功能。虚拟仪器的概念最早由美国国家仪器公司(National Instrument,NI)提出,虚拟仪器是相对于传统仪器来说的。在传统的实验室里做各种物理/电子学实验时,常常用到万用表、示波器等仪器,它们每台仪器就是一个固定的方盒子,它们所有的测量功能都在这个盒子内完成,这就是所谓的传统仪器。而进入到虚拟仪器时代,这种单一功能的方盒子开始逐渐被计算机所取代。
用户看不到传统仪器的方盒子的内部,更无法改变其结构。因此,一台传统仪器一旦离开生产线后,其功能和外观就固定下来了。用户只能利用一台传统仪器完成某个功能固定的测试任务,一旦测试需求改变,就必须再次购买满足新需求的仪器。而虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化应用的。灵活高效的软件能帮助用户创建完全自定义的用户界面(传统仪器的软件通常被称为固件,无法由用户改变),模块化的硬件能方便地提供全方位的系统集成(传统仪器就是一个个单独的盒子),标准的软硬件平台能满足用户对同步和定时应用的需求(传统仪器的平台各个厂商各不相同)。
虚拟仪器技术除了基础的信号采集部分,其他软硬件全部采用通用的计算机软硬件设备。这些通用的软、硬件设备可以低廉的价格进行升级,或者被使用者按自己意愿进行配置。比如,在虚拟仪器上,用户可以通过升级CPU来加快仪器的处理速度,可以自己编写程序来改变仪器的测试功能和交互界面。图1-1给出了传统仪器与虚拟仪器之间的结构对比。我们很容易在图1-1b中找到虚拟仪器所独有的灵活高效的软件、模块化的硬件以及标准的与通用PC相兼容的软硬件平台。
图1-1 传统仪器与虚拟仪器的结构对比
a)传统仪器 b)虚拟仪器
在后面的项目中将介绍如何构建一个典型的虚拟仪器测控系统,这里首先来认识一个常常与“虚拟仪器”成对出现的名称——LabVIEW。在很多情况下,LabVIEW容易和虚拟仪器混为一谈,这里有必要着重指出,虚拟仪器技术依赖于灵活高效的软件+模块化的硬件+标准的软硬件平台,而LabVIEW是灵活高效软件的最重要代表之一。
实验室虚拟仪器工程平台(Laboratory Virtual Instrumentation Engineering Workbench,LabVIEW)是NI创立的一种功能强大而又灵活的仪器和分析软件应用开发工具,它是一种编程语言,与其他常见的编程语言相比,其最大的特点就是图形化的编程环境。
常见的编程语言(如C语言等)都是文本式的编程语言。文本语言是抽象的,但是效率高,能用简短的语言表达丰富的含义。而对于使用者而言,无疑需要花费较长的时间和较多的精力去熟悉精通这些语言。
对于大多数的工程师,尤其是非精通软件的工程师,他们的精力更多的是投入在所希望实现的功能上,而非编程语言的掌握上。NI提供的这样一款图形化的编程软件,恰恰符合了这样的需求。对于软件初学者,LabVIEW只需要两、三天便可以入门,工程师就可以运用LabVIEW来实现很多简单的功能。
LabVIEW不但在设计程序前界面部分使用了图形化的方式,在程序代码的编写和功能实现上也使用了图形化的方式。由于LabVIEW采用的是图形化开发环境,所以也经常会被称为G语言(Graphical Programming Language)。LabVIEW不仅可以应用于测控行业,而且被广泛地用于仿真、教育、快速开发、多硬件平台的整合使用等方面。同时LabVIEW还支持实时操作系统和嵌入式系统(如FPGA等)。