跨平台的虚拟仪器开发研究与实现

2010-04-26 02:31涂天佳秦树人
中国测试 2010年5期
关键词:跨平台虚拟仪器分析仪

涂天佳,王 见,秦树人

(重庆大学测试中心,重庆 400044)

1 引 言

随着计算机软硬件技术、电子技术、总线技术等的快速发展,虚拟仪器系统以传统仪器无法比拟的速度迅猛发展,在电子、石化、冶金、机械、航天航空、能源、科研和教学等领域得到了广泛应用,并得到广大测试工作者的青睐。然而,作为测试分析工具,虚拟仪器也存在着不足之处。例如,目前大多虚拟仪器系统采用在PC或工业控制计算机中插入基于PC总线的数据采集板卡构成硬件系统,并通过编写Windows系统平台的驱动程序和软面板构软件系统的方式形成测试系统。然而,在嵌入式系统平台则更为有利,此时,先前在面临野外或恶劣的测试环境下,采用集成的Windows平台下开发的优秀的测试系统不能很好地发挥作用,或根本不能使用,则需重新进行开发,增加了大量的开发费用,浪费了资源,加大了项目工程或产品的成本,这对仪器使用者和开发者来说都是极为不利的。因此,提出一种可在多个平台上运行使用的虚拟测试仪器是很有必要的,有较大的科研价值和商业使用价值。

2 虚拟仪器跨平台开发

2.1 虚拟仪器技术[1-2]

虚拟仪器是由高效的软件和模块化的硬件有机结合的一种应用于测试的系统工具。由于这种仪器的专业化功能和面板控件都是由软件形成,因此它把仪器的核心部件由传统的硬件转移到软件,使得软件成为这类仪器的核心,因此虚拟仪器也被称为“软件即仪器”[1]。

虚拟仪器的软件主体大致有3部分组成,分别是数据采集模块、信号处理运算模块和人机交互界面。数据采集模块主要完成对硬件采集卡的控制和采集;信号处理运算模块是对获取的信号做合理的分析运算,得到信号的特征分析结果,最后通过人机交互界面清晰地显示出来。如图1所示。

2.2 软件跨平台开发技术[3]

跨平台(Cross-Platform)(或独立于平台)是指编程语言、应用软件或硬件设备,可以在多种系统平台(比如 Unix、Linux、Windows以及 Mac OS) 上工作。目前跨平台开发主要分为两个层次,即目标代码级跨平台和源代码级跨平台。

图1 虚拟仪器示意图

目标代码级上实现跨平台,其特点是可以做到“一次开发,处处运行”。其实现原理是使用特殊编译器把源程序编译成特定字节码文件,使用虚拟机代理运行在多个平台上。也就是说程序的源代码并不能被操作系统直接执行,需增加虚拟机解释这层功能。编写的程序在不同平台上运行时,都需要运用虚拟机解释后才能运行,运行速度较慢,特别在要运行需大量运算和图形显示交互频繁的虚拟仪器软件时,运行效率是个问题。

另一种源代码级上实现跨平台,就是利用大多数平台所共同支持的一种计算机语言,用同一个源程序在不同平台上编译链接,生成目标代码文件,并取得相同的运行效果的方式,被称为“一次编写,随处编译”。此种方法跨平台,可以解决运行效率问题,并且可以较好地发挥各个平台的优势,充分利用每个平台自身的特点。因此,针对虚拟仪器软件的特点,采用源代码级跨平台方案更加合适。

3 可行性分析

各个系统平台间存在着较大差异,而虚拟仪器主体软件属于应用程序,需要所在的系统平台的支撑。因此,要实现跨平台虚拟仪器的开发,就需要对开发语言选择、操作系统间的差异性和开发工具包等结合虚拟仪器的特点进行分析和论证,并找到一个有效可行的开发方案。

3.1 开发语言[4]

目前开发语言种类很多,有C、C++、JAVA、VB等,其中JAVA被称为跨平台开发语言,但其跨平台开发特性实质为目标跨平台开发方案,不适合用于虚拟仪器应用程序的开发。方案选择C/C++作为开发语言,理由有以下两点:

(1)C/C++是高级编程语言,适合开发大型程序,且提供了低级访问,符合虚拟仪器软件同底层硬件紧密结合的特点。

(2)C与C++已经形成了广泛标准,几乎每个系统都能进行编译,并可生成本机代码,不需要虚拟机代理,避免了虚拟仪器运行效率问题。

3.2 系统差异性分析[5]

虚拟仪器的开发运行都离不开系统平台的支撑,系统平台间的差异也就严重影响着虚拟仪器的跨平台特性。例如,各系统拥有不同的文件系统,对文件数据有不同的识别方式,因此,仪器在存储数据和提取数据时就应采取各系统共同认可识别的数据格式进行存储和提取。其次,同样使用C++编写出的程序,因各系统的编译器不同,从而导致对程序文件无法识别和编译等。各系统间存在的差异细节较多,此处略过。

当前,针对系统差异性问题,跨平台软件开发技术一般采取以下两种应对策略:

(1)采用条件编译的形式,在编译器识别差异处进行条件判断后编译。

(2)利用面向对象开发的虚函数机制,引入中间抽象层。如图2所示。

图2 策略使用前后的模型

在项目开发过程中,采用第一种方案可以有效保留各平台自己的优势特点,但程序运行效率会受到较大的影响。而采取第二种策略可以提高程序运行效率,但会使程序千篇一律。鉴于以上特点,方案将采取两者结合的方式,将在程序效率、效果和开发周期等中做一个权衡,合理运用以上两个策略。

3.3 开发工具包

由挪威奇趣科技公司提供的Qt是一个完善的C++应用程序开发框架,可以实现“一次编写,随处编译”的跨平台解决方案,使开发出的应用程序能完美运行于Windows各版本,Mac OS X,Linux以及基于X11的诸多UNIX平台之上。

Qt是一个“模拟的”多平台工具包,是建立在所支持平台的底层API上,这使得Qt灵活而高效。所有窗口部件都由Qt绘制,程序员可以通过重新实现其虚函数来扩展或自定义。Qt的体系结构如图3所示。

图3 Qt的体系结构

4 方案设计与验证

选择当前较流行的Windows操作平台、Linux平台和嵌入式WinCE平台作为目标平台,实例完成一台虚拟式频谱分析仪,并对其仪器跨平台性进行验证。

4.1 虚拟式频谱分析仪设计

频谱分析是信号分析处理中常用的分析方法,主要是在频域上对信号进行处理、分析以及显示。目前,频谱分析在生产实践与科学研究中获得了日益广泛的应用。例如,在声纳系统中,为了寻找海洋水面舰艇或潜艇,需要对信号进行频谱法分析,以提取有用信息,来判断舰艇运动速度、方向、位置、大小等信息;又如,对飞机、轮船、汽车、汽轮机、电机、机床、齿轮箱等主体或部件进行实际运行的频谱分析,从而可以提供其设计数据和用以检验设计效果,或者寻找振源和诊断故障,以便及时排除潜在的故障因素,保证安全运行等。

早期传统的频谱分析仪是将一组滤波器连在一起,每个滤波器都是一个调谐到不同中心频率上的带通滤波器,其输出与检波器相连,将交流信号变为仪表显示的直流电平。由于带通滤波器由电感、电容等多种无源、有源元件构成,频谱分析仪显得很笨重,而且频率分辨率不高。随着电子电路技术的发展,出现了以傅里叶变换为基础的现代频谱分析仪,这类频谱分析仪以电子电路来实现傅里叶变换,从而实现频谱分析。但是,这类频谱分析仪仍然是以硬件电路来实现的传统意义上的频谱分析仪,它们有着自身无法克服复杂性、封闭性和昂贵性的缺点等。

随着计算机技术的发展和普及,虚拟仪器技术应用到频谱分析仪中,克服了传统硬件化频谱分析仪自身无法克服的缺点,形成了当前使用应用较多的虚拟式频谱分析仪。该虚拟式频谱分析仪的工作原理是通过设置仪器相关参数采集获取到现实中的实际信号并实时显示,而后通过滤波加窗等处理后进行频域分析,得到幅值谱、相位谱、自相关函数、互相关函数、相干函数等的过程。该系统流程图如图4所示。

图4 频谱分析仪系统流程图

该频谱分析仪的信号处理过程大致分为记录、分析和后处理3个部分。记录部分主要完成对输入信号的抗频混滤波、幅值调节和采样等操作,为FFT做准备;分析部分是将数据缓冲器内分段读出数据并进行加窗处理,而后作FFT变换得到频谱图、自谱图和互谱图等;后处理部分是根据以上获得的3组函数做相互运算,并获得系统频率响应函数和其他有关函数等。该仪器的系统框图如图5所示。

4.2 仪器跨平台性验证

该仪器有6种显示类型,分别是实时幅值谱、实时相位谱、自相关函数图、互相关函数图、相干函数图、脉冲响应函数图。并拥有双通道采集AB通道,在线采集和离线分析功能选择。软件编写可在任意平台上完成,而后将编辑好的头文件、源文件、ui文件以及资源rc文件等复制传输到各自平台上编译,从而获得能运行在各平台上的Makefile文件和可执行文件。

该仪器是在Windows系统平台下编写并调试,获得较好效果后,再将上述文件传输到Fedora 9 Linux系统平台下,重新编译生成可执行文件。生成基于WinCE系统下的仪器程序是采用交差编译的方式,其Qt Enbeded工具包编译器安装在Windows系统下,运用该编译器直接对编辑好的程序文件进行编译,即可得到基于WinCE系统的可执行程序,再通过串口同步传输,将仪器程序传输到基于ARM9处理器的开发板上运行。

图5 频谱分析仪系统框图

图6 各平台的效果示意图

图6是该频谱分析仪在Windows下、Fedora 9 Linux下以及WinCE5.0系统的运行效果图。

5 结束语

由以上跨平台的频谱分析仪实例表明该文提出的方案可行、可靠、正确。该方案可以很好地解决虚拟仪器因其操作系统平台差异而不可使用的缺点,有效屏蔽了各平台间的差异,并且运行效果良好。该方案拓宽了虚拟仪器的应用范围,增强了其开发灵活性,实现了平台间较好的移植,减短了异平台开发时间,提高了生产效率。

[1] 秦树人.虚拟仪器[M].北京:中国计量出版社,2003.

[2]秦树人,汤宝平,钟佑明,等.智能控件化虚拟仪器系统——原理与实现[M].北京:科学出版社,2004.

[3] 李艳明.基于Qt跨平台的人机交互界面的研究和应用[D].重庆:重庆大学,2007.

[4]Brian Hook.跨平台软件开发-C&C++[M].胡光华,贺春雨,译.北京:清华大学出版社,2006.

[5]尚海忠,朱培彦,等.操作系统抽象层——一种支持跨平台的新技术[J].计算机工程,2002,28(2):109-111.

猜你喜欢
跨平台虚拟仪器分析仪
跨层级网络、跨架构、跨平台的数据共享交换关键技术研究与系统建设
Sievers分析仪(苏伊士)
一款游戏怎么挣到全平台的钱?
一种用于深空探测的Chirp变换频谱分析仪设计与实现
基于C++语言的跨平台软件开发的设计
PCB 刻制机功能开发及在虚拟仪器实验室建设中的应用
虚拟仪器及其在电工电子实验中的应用
一种基于虚拟仪器的电控柴油机实验台的设计
虚拟仪器技术在农业装备测控中的应用
全血细胞分析仪配套操作台使用体会