1.3 虚拟仪器的软件结构与开发平台
虚拟仪器的核心就是仪器功能的软件化。就是利用计算机的软件和硬件资源,使本来需要硬件或电路实现的技术软件化和虚拟化,最大限度地降低系统成本,增强系统的功能与灵活性。
1.3.1 虚拟仪器的软件结构
虚拟仪器的软件结构如图1-3所示。
从低层到顶层,虚拟仪器的软件系统框架包括三个部分:VISA库、仪器驱动程序和应用程序。
图1-3 虚拟仪器的软件结构
1.VISA库
即虚拟仪器软件体系结构,其实质就是标准的I/O函数库及其相关规范的总称。一般称这个I/O函数库为VISA库。它驻留于计算机系统之中,执行仪器总线的特殊功能,是计算机与仪器之间的软件层连接,以实现对仪器的程控。对于仪器驱动程序开发者来说,VISA库是一个可调用的操作函数集。
2.仪器驱动程序
仪器驱动程序主要用来初始化虚拟仪器,设置特定的参数和工作方式,使虚拟仪器保持正常的工作状态,用户在设计应用程序时需调用仪器驱动程序。
对于市场上的大多数计算机内置插卡,厂家都配备了相应的设备驱动程序。用户在编制应用程序时,可以像调用系统函数那样,直接调用仪器驱动程序,进行设备操作。如果所用计算机内置插卡和外设插卡没有仪器驱动程序,用户也可以采用高级语言自行编写。
3.应用程序
应用程序建立在仪器驱动程序之上,直接面对操作用户,并提供直观、友好的操作界面,丰富的数据分析与处理功能来完成自动测试任务。
应用程序包含两个方面的程序:
1)实现虚拟面板功能的前面板软件程序。对于每个虚拟仪器模块来说,必须提供一个虚拟仪器面板。在系统集成初始化时,软面板既可用于实现仪器功能,又能帮助用户理解和熟悉仪器特性。软面板是一个可独立运行的Windows应用程序。
2)定义测试功能的流程图软件程序。应用软件直接面对操作用户,通过提供直观、友好的操作界面、丰富的数据分析与处理功能,来完成虚拟仪器的测试功能,它体现了虚拟仪器的优点和本质。用户可方便、直观地对应用程序进行后期开发。
1.3.2 虚拟仪器的开发平台
虚拟仪器的软件开发平台目前主要有两类:
第一类是基于传统语言如C、Visual Basic、Visual C++等通用的软件开发平台。这类语言具有适应面广、开发灵活的特点。但这种开发方式对测试人员要求很高,需要自己将各种数据处理方法用计算机语言实现,还要对用于数据通信的各种连接总线(如RS-232、GPIB、USB等)非常熟悉,绝大多数测试工程人员难以做到,或者需要花费大量的时间来研究,而懂得这些编程方法的人员又不一定懂得测试。因此,用这种平台开发测试工程软件难度大、周期长、费用高、可扩展性差。
从实现虚拟仪器功能的角度出发,开发虚拟仪器软件的平台应提供以下功能:
1)直观、丰富的仪器图形控件。由于虚拟仪器是用图形化的界面来模拟传统仪器的控制面板等交互部件,因此开发平台必须预置种类丰富的图形化控件,供软件开发者使用。
2)强大的数据处理功能。虚拟仪器的优点之一就是能利用PC机强大的处理能力对被测信号进行数据处理、频谱分析等。因此,开发虚拟仪器的软件平台应提供大量的数据处理功能模块供开发者调用。
3)友好的人机界面。虚拟仪器的测试结果应具备按照用户的要求,有以直观、友好的图形化方式显示、输出的能力,相应的开发平台也应该提供便捷的方式来实现这一目标。
从以上的分析可以看出,通用的软件开发平台无法全部满足虚拟仪器开发的要求。
因此,虚拟仪器的主导公司纷纷推出了专为虚拟仪器开发而设计的第二类虚拟仪器软件开发平台,即图形化的编程软件。这类软件都通过建立和连接图标来构成虚拟仪器工作程序并定义其功能,而不是用传统的文本编辑形式。它们具有编程效率高、通用性强、交叉平台互换性好的特点,适用于大批量多品种仪器的生产。
作为测试工程领域的强有力工具,近年来,由美国国家仪器公司(National Instruments,简称NI)开发的虚拟仪器软件LabVIEW得到了业界的普遍认可,在测试系统分析、设计和研究方面得到广泛应用。
LabVIEW的全称是实验室虚拟仪器工程平台(Laboratory Virtual Instrument Engineering Workbench),是一种基于G语言(Graphics Language,图形化编程语言)的测试系统软件开发平台。它采用了工程人员熟悉的术语、图标等图形化符号来代替常规基于文字的语言程序。它把复杂、烦琐、费时的语言编程简化成选择功能图标,并用线条把各种功能图标连接起来的简单图形编程方式。利用LabVIEW,用户可通过定义和连接代表各种功能模块的图标,方便迅速地创建虚拟仪器。
LabWindows/CVI是NI公司开发的另一种交互式开发平台。它将C语言开发平台与用于数据采集分析和显示的测控工具结合起来,将开发平台与交互式编程方法、功能面板及库函数集成起来,从而为熟悉C语言的开发人员建立检测系统、自动测量环境、数据采集与处理系统、过程监控系统等提供一个很好的软件开发环境。