虚拟仪表的可视化技术
2009-02-17
作者:顾郁莲 蔡宣平 颜飞翔
摘 要: 结合一个基于网络的虚拟仪表系统的开发过程,介绍了采用面向对象技术进行VI通用面板可视化软件的设计以及实现网络间数据传输的方法。
关键词: 虚拟仪器 可视化 面向对象 Socket
虚拟仪器是指具有虚拟仪器面板的个人计算机仪器,它是计算机资源、模块化功能硬件与用于数据分析、过程通信及图形用户界面的应用软件的有机结合[1][2]。
它利用软件在屏幕上生成各种仪器面板,完成对数据的处理、表达、传送、存储、显示等功能[3][4]。虚拟仪器与传统仪器相比,其主要优点是可以由用户自己定义、自己设计仪器系统,以满足不同的要求,使仪器的功能更加强大、灵活,而且很容易同网络、外设及其他应用相连接。这样既降低了价格,节省开发、维护的费用,又缩短了技术开发周期[4]。
虚拟仪器的关键技术之一就是应用软件[1][5][6],这是因为,虚拟仪器的主要功能是由软件来体现的,即“软件就是仪器”。虚拟仪器的软件开发平台应该提供一个图形化的编程设计环境,值得一提的是NI的LabView和LabWindows及HP的VEE[4] 。
本文介绍的基于网络的虚拟仪表系统是一个不包含数据采集及总线控制系统的虚拟测试平台,主要用于对测试数据文件的事后处理或对被测对象进行实时仿真测试,形成网络化测试仿真系统。
1 基于网络的虚拟仪表系统
系统利用软件在计算机屏幕上生成仪表面板,通过数据接口接收需要处理显示的仪表数据或软件产生的仿真数据,实时显示刷新数据、波形和图像。该系统具有两个主要的特点:一是具有方便的交互性;二是实现了网络数据传输和绘制的实时性,可以在不同的网络端点显示不同的虚拟仪表,达到多机并行处理的目的。
1.1 系统组成
整个软件系统划分为两个独立的子系统:编控子系统和播出子系统。系统组成如图1所示。
编控子系统的主要工作是建立、编辑演示模型并控制仿真的启动和结束。编控子系统又可以划分为两个子模块:编辑模块和播出控制模块。通过编辑模块,允许用户设计建立满足自身需要的虚拟仪表模型,也可以对一个现有的仪表模型进行编辑。通过播出控制模块可以实现网络仿真功能,建立和播出子系统之间的连接关系;并通过数据接口不断接收外部输入的仪表参数,向已建立连接关系的各播出子系统发送相应的指令/数据包以更新仪表显示状态。
播出子系统负责接收播出控制系统发来的指令/数据包(包括数字仪表模型、各种参数等),对指令进行解释,不断刷新显示当前仿真结果。在播出子系统中可以指定某可视化对象是否可见,这样可以使在不同的计算机上运行的播出子系统显示不同的仪表面板来达到分布式并行处理的目的。
1.2 参数的网络传输
系统需要在不同计算机之间进行参数传输,因此网络通信是必不可少的条件。本系统采用的是客户/服务器结构的应用程序,这种结构非常适用于分布式处理的计算机网络环境。由于系统是面向PC机平台的应用,因此采用基于TCP/IP协议的Winsock接口实现网络间的数据传输。
2 虚拟仪表面板对象
2.1 面向对象的设计方法
在虚拟仪表的可视化设计过程中,采用了面向对象方法[7]。一个虚拟仪表系统由许多仪表组成,每个虚拟仪表均由面板控制,因此按照面向对象的设计思想将面板分解为具有继承关系的面板对象(Panel Object),每个面板对象都有各自的独立属性和行为。
对于虚拟仪表系统,可以将其仪表面板对象划分为基本的图形元素和专用面板对象两类,如图2所示。基本的图形元素即图元包括直线、矩形、椭圆、多边形和文本等;专用面板对象包括按钮、开关、旋钮、动态调节器等面板控制控件和指示灯、数字仪表、指针仪表、图像显示器、示波器等面板显示控件以及其它特殊显示控件。
2.2 面板对象数据结构
在虚拟仪表系统中,面板对象是以图形的方式显示的,系统允许用户通过人机交互的方式对仪表对象的属性参数进行修改。对象的描述包括了定义面板对象各组成部分形状的几何坐标数据,对象的属性如线型、颜色等,还有非几何的文字或数值,如对象名称和可见信息等,它对于后处理程序或交互作用的使用是非常有用的。
各种面板对象都具有共同的属性,因此基于各种面板对象的数据类型和结构,可抽象出通用的基类数据结构。综上所述,可以如下定义面板对象的基类数据结构:
class base{
m_csObjectName; 面板对象名称
m_bVisible; 可视信息,0——不可见;1 —— 可见
m_crPosition; 面板对象的位置信息及其包围框大小信息
m_logbrush; 绘制该面板对象时采用的画刷,决定填充属性
m_logpen; 绘制该面板对象时采用的画笔,决定线属性
};
具体的面板对象的数据结构均继承基类的数据结构,并在基类的基础上,根据不同的面板对象的属性和参数,添加相应的数据类型就可以确定特定的面板对象数据结构。
2.3 虚拟仪表实例
用户通过系统提供的虚拟仪表面板对象,在计算机屏幕上通过鼠标可以方便地建立满足自身测试需要的虚拟仪表系统。图3为利用该开发平台建立的一个虚拟仪表操作面板实例。
3 可视化设计与实现
虚拟仪表的可视化[9]技术主要有两个方面:一是面板对象及其相关参数的可视化,即将数据转换为图形或图像,实现面板对象的可视化;二是基于面向对象技术的图形用户界面(GUI)设计,即可视界面设计。
在系统设计中采用面向对象直接操纵的图形交互方式(即GUI),便于用户直接操纵屏幕上不同的可见面板对象图元。
3.1 面板对象图元集
定义了一个可扩充的面板对象图元集,这些对象是面板对象图形属性和操作的抽象表示。当建立一个面板对象或编辑其属性时,用户只需指定面板对象,直接进行绘制、移动、复制、删除等操作,该对象能够自己重新绘制或重画,用户不须关心如何做图。
3.2 交互绘图工具类
对于交互反馈,没有集成在面板对象内,而是定义了交互绘图工具类(面板对象类的友元),用于处理施加在面板对象上的交互操作,这样保证了通用性、独立性和可扩充的能力。图4给出了交互绘图工具的类层次关系。
3.3 数据的动态图形显示
数据可视化(Data Visualization)就是将数据以特定的动态图形方式显示在计算机屏幕上,供用户监控之用。在虚拟仪表中,诸如仪表的指针偏转和示波器的波形变化等都反映了数据的动态变化,即面板对象图形在测试过程中具有动画的效果。
虚拟仪表的数据可视化就是构造一个从数据集到面板对象集的映射函数F:DG→V,它需要刻划每一(dg,v)对的可视化语义。这样,对于不同的面板对象可以建立图形相对于其相应的输入变量变化的函数关系。
在应用系统的设计中,当数据变化频繁时,对应的面板对象实时刷新将造成屏幕闪烁。事实上,当数据变化时,面板对象图形的许多单元是固定不变的,变化的只是与数据存在参数映射的部分区域。因此在设计时,构造了用于显示动态数据的绘图函数。
在本系统中,虚拟仪表测试仿真计算机的数据是通过网络从主控计算机传来的。仿真计算机运行播出程序,启动面板对象显示线程,并通过网络不断地获取数据,同时为面板对象分派输入数据,实时显示刷新仪表面板画面。
在Windows环境下,我们应用VC++面向对象的类编程技术开发的虚拟仪表可视化通用系统,具有友好的图形用户接口,用户可以方便地设计满足自己需要的仪表系统。同时该系统支持网络运行方式,实现了网络可视化仿真。
参考文献
1 刘 阳.虚拟仪器的现状及发展趋势.电子技术应用,1996(4)
2 王晓霞,孙 健,夏士智.虚拟仪器、仪表的一种新的发展模式.计算机自动测量与控制,1997(4)
3 C.H.Small,Virtual Instruments,EDN,Sept.1,1988
4 虚拟仪器技术及其发展.国外电子测量技术,1997(2)
5 牛仁朝,赵乃煌.虚拟仪器技术的研究及应用.电子仪器仪表用户,1998;(5)4
6 祝中山,赵 伟,庞海波.PC卡式虚拟仪器软件标准化探讨.电测与仪表,1988;35(6)
7 朱海滨.面向对象技术——原理与设计.国防科技大学出版社,1992.10
8 李晓梅,黄朝晖.科学计算可视化导论.国防科技出版社,1996.6