正文:
一种虚拟仪器的实现
1.引言
现代科技的发展日新月异。计算机技术则尤为如此。计算机强大的处理能力,使得
它成为一种很好的工具,其应用范围也越来越广泛。在工业自动化和测试及测量领域,
传统的方法有许多重复建设,显然已经不能适应时代发展的需要了。如何利用先进的计
算机技术提高效率则成为该领域迫切需要解决的问题。1986年,美国NI公司(Nation I
nstrument)提出了虚拟仪器的概念,提出了"软件即仪器"的口号,彻底打破了传统仪器
只能由生产厂家定义,用户无法改变的局面,从而引起仪器和自动化工业的一场革命。
随着现代软件和硬件技术的飞速发展,仪器的智能化和虚拟化已经成为未来各级实验室
以及研究机构发展的方向。虚拟仪器,顾名思义,它应具有传统仪器的功能,又有别于
其传统仪器。它的特点体现在其灵活性上,它能够充分利用和发挥现有计算机先进技术
,使仪器的测试和测量及自动化工业的系统测试和监控变得异常方便和快捷。
下面我们就以NI公司的LabVIEW软件为例,简述一种虚拟仪器的开发过程。
2.LabVIEW简介
2.1 LabVIEW概览
LabVIEW(Laboratory Virtual Instrument Engineering Workbench实验室虚拟仪
器工程平台)是一个程序开发环境。类似于C、BASIC。但LabVIEW的特点在于,它使用图
形化编程语言G在流程图中创建源程序,而非使用基于文本的语言来产生源程序代码。L
abVIEW还整合了与诸如满足GPIB、VXI、RS-232和RS-485以及数据采集卡等硬件通讯的全
部功能。内置了便于TCP/IP、Active X等软件标准的库函数。虽然LabVIEW是一个通用编
程系统,但是它也包含为数据采集和仪器控制特别设计的函数库和开发工具。LabVIEW程
序被称为虚拟仪器(VIs),是因为它们的外观和操作能模仿实际的仪器。由于LabVIEW
所使用的术语、图标和概念都是技术人员、科学家、工程师所熟悉的,故而即使用户没
有多少编程经验,同样也能利用LabVIEW来开发自己的应用程序。
创建虚拟仪器的过程共分三步:(1)虚拟仪器的交互式用户接口被称为前面板,因
为它模仿了实际仪器的面板。前面板包含旋钮、按钮、图形和其它的控制与显示对象。
通过鼠标和键盘输入数据、控制按钮,可在计算机屏幕上观看结果。(2)虚拟仪器从流
程图中接收命令(用G语言创建)。流程图是一个编程问题的图形化解决方案。流程图也
是虚拟仪器的源代码。(3)一个虚拟仪器的图标和连接就象一个图形(表示某一虚拟仪
器)的参数列表。这样,其它的虚拟仪器才能将数据传输给一个子仪器。图标和连接允
许将此仪器作为最高级的程序,也可以作为其它程序或子程序中的子程序(子仪器)。
2.2图形化编程环境
该环境包含前面板、流程图、图标和连接。在软件启动时,系统会建立一个缺省名
为Untitled.1的文件(VI)。该文件包含两个窗口,一个用以编辑前面板,另一个用作
编辑流程图。前面板就象是虚拟仪器的用户接口,尤如实际仪器的面板。前面板基本上
是控制和显示对象的集合。用以控制模拟仪器输入设备,为虚拟仪器的流程图提供数据
。显示模拟仪器的输出设备及流程图中获得或产生的数据 。
流程图窗口用以编辑虚拟仪器的图形化源代码。通过连线将输出、接收数据的对象
连接起来创建流程图,就能实现特定的功能,控制执行的流程。需特别指明的是:LabV
IEW运行是数据流驱动的。简单地说,就是只有当所有的输入数据都准备好的时候,一个
节点才能执行其功能,当节点执行完后,它所有的输出端口都会产生一个数据值。数据
都是从源端流到目的端。数据流不同于执行一个传统程序的控制流方法(通过执行一系
列的指令来实现的)。控制流执行是指令驱动。而数据流执行是数据流驱动或依赖数据
的。这里提到的节点是程序执行的元素。它们类似于传统编程语言中的状态、操作、函
数和子程式。LabVIEW包含广泛用于数学计算、比较、转换、输入/输出的函数库。另一
类节点类型是结构。结构就是传统编程语言的循环、条件描述的图形表示,不断的重复
和执行代码。LabVIEW也提供了用于连到外部基于文本的代码和用于计算基于文本的公式
的特殊节点。
图标和连接--当一个虚拟仪器的图标被放置在另一个虚拟仪器的流程图中时,它就
是一个子仪器或说是LabVIEW的一个子程序。子仪器的控制和显示对象从调用它的仪器流
程中获得数据,然后将处理后的数据返回给它。连接是对应于子仪器控制和显示对象的
一系列连线端子。图标既包含虚拟仪器用途的图形化描述,也包含仪器连线端子的文字
说明。连接更象是功能调用的参数列表。连线端子就是类似于参数。每个终端都对应于
前面板的一个特别的控制和显示对象。连接从它的输入连线端子接收数据,然后通过子
仪器的控制对象将数据传输给子仪器的代码。每个虚拟仪器都有一个缺省的图标,位于
两个窗口的右上角。当然,图标可根据用户的需要进行修改。每个虚拟仪器都有一个连
接。在前面板的仪器图标上右击鼠标,选择Show Connector,即可看到该仪器的具体连
接。第一次显示时,会有缺省的模式。若用户想修改,则可选择Pattern或Use/Remove
Terminal来进行新的模式设置。
2.3 编程工具介绍
LabVIEW提供了三个模板来编辑虚拟仪器:工具模板(Tools Palettes)、控制模板
(Controls Palettes)、功能模板(Functions Palettes)。工具模板提供用于图形操
作的各种工具,诸如移动,选取,设置卷标、断点,文字输入等等。控制模板则提供所
有用于前面板编辑的控制和显示对象的图标以及一些特殊的图形。功能模板包含一些基
本的功能函数,也包含一些已做好的子仪器。这些子仪器能实现一些基本的信号处理功
能,具有普遍性。其中控制、功能模板都有预留端,用户可将自己制做的子仪器图标放
入其中,便于日后调用。
3 仪器的开发
熟悉了环境之后,便可以来开发自己的虚拟仪器了。由于实验条件的限制,本实验
只做虚拟仪器的后两部分,实验中所采用的信号不是来自外部采集所得,而是通过软件
的方法获得,也就是在流程图中编制一个简单的信号发生器,产生一些周期信号,冲激
波及一些虚拟数据(用于拟合)。前面板的设计分为两部分--显示部分和控制部分,并
以左右形式排列在前面板编辑窗口中。其中显示部分包含原始信号的显示和信号处理后
的结果显示。控制部分包含一些参数的设置,功能的选择,还有系统控制。为了便于用
户使用该虚拟仪器,发挥虚拟仪器的特点,在前面板上加了一个More Info的控制钮,当
运行时,点击该按钮即可看到该仪器使用的详细说明,类似于传统仪器的说明书。另外
,为了使面板更接近于真实的仪器面板,利用控制模板中Decorations>>Recessed box实
现凸凹的效果;为了使控制部分和显示部分一一对应起来,防止用户的误操作,对于某
些暂不使用的按钮,利用属性Visible、Disable来实现按钮的隐藏、灰显效果。
至于流程图,它是和前面板一一对应的。整体上采用一个While Loop结构,由系统
控制按钮来控制。其内部大体包含两部分:信号发生器和信号处理部分。这两部分均用
Case窗来实现。信号处理部分的功能实现较多,因而对每一个功能采用定制子仪器的方
法将其做成一个个子仪器,用特定的图标表示。此法可减少流程图的复杂程度,便于数
据流的跟踪和调试。下图就是执行功率谱分析和虚拟数据拟合时的前面板,从两个图形
的比较中可体会本次实验的设计思路。
4 结束语
本次实验对LabVIEW软件作了初步探索,对其环境进行了较为详细的介绍,并以此为
平台,开发了一种简单的虚拟仪器,实现了一些基本的数字信号处理的功能,由此讲述
了虚拟仪器的一般开发过程。由于是初探,一些深层次的能够充分体现其跟上时代发展
的功能使用诸如远程通信,与传统语言接口还未涉及到,由待日后探讨。在此实验中,
虽说是初探,但我们已能体会到LabVIEW软件的强大的开发功能和实用功能。
--
FROM 106.120.122.*