资讯 > 正文

基于Applet与Servlet的虚拟仪器远程测控系统模型

发布时间:2009-08-11 来源:www.cechina.cn

        0 引 言
        虚拟仪器产生后,出现了软件代替硬件、虚拟仪器代替传统仪器以及虚拟仪器远程测控代替传统仪器远程测控的趋势。现阶段实现虚拟仪器远程测控的技术方案主要有基于DataSocket、Remote Device Access、COM/CORBA、DCOM、ActiveX以及数据流等的技术。但不同开发者或由同一开发者开发的不同单机版虚拟仪器,在增加远程测控功能后,多数存在软件修改工作量大幅度增加的现象,在不修改虚拟仪器软件的情况下,难以解决虚拟仪器远程测控的问题。
        SUN公司的Java Applet在网络通信应用方面有着很大的优势。本文构建了一种采用BSS结构并基于Applet与Servlet的虚拟仪器远程测控系统(remote measurement and control system of virtual instrument based on Applet and Servlet,AS-VIRMCS)模型,利用此模型实现的远程测控摒弃了较为复杂的UDP/IP底层编程,在虚拟仪器软件零修改情况下实现了虚拟仪器的远程测控。
        1 系统模型的构建
        1.1 系统的模型
        虚拟仪器远程测控系统按客户端的不同可以分为C/5结构和B/S结构,有C/S结构的远程虚拟仪器监控系统和采用B/S结构且基于Web的网络化虚拟仪器系统。
        本文所研究的AS-VIRMCS是一种采用B/S结构且基于Applet与Servlet的虚拟仪器远程测控系统。系统的设计思想是:由研究者设计的客户端虚拟仪器通过远程操作服务器端虚拟仪器来间接实现对被控对象的远程测控。客户端虚拟仪器(client virtual instrument,CVI)是指由Applet程序实现的嵌人在浏览器中的虚拟仪器。服务器端虚拟仪器(server virtual instrument,SVI)是指被安放在服务器端,只具有某种业务逻辑功能而不具有远程测控功能的虚拟仪器。
        AS-VIRMCS模型如图1所示,它是一种多层体系结构。Web浏览器模块是客户端虚拟仪器模块,直接与客户打交道,客户可以向其发送命令来远程操作服务器端虚拟仪器,并最终间接实现对被控对象的监测和控制。虚拟仪器库模块是一个服务器端虚拟仪器集,直接对被控对象进行监测和控制。Web服务器模块由具有CGI程序功能的Servlet程序和支持Servlet的Web服务器组成,用来完成客户端虚拟仪器和服务器端虚拟仪器间的通信.资源模块是一个用于保存JPEG或GIF格式的服务器端虚拟仪器操作面板数据以及其他类型数据的数据库系统。通信库模块是用来远程操作和实时监视服务器端虚拟仪器并响应客户命令的部分,一般由EJB组件集或DLL动态库集组成,是系统设计的重点,承担着整个系统的通信任务.被控模块由被控对象组成,这些对象一般是由硬件构成的,如采集卡,步进电机等。

系统的模型


        图1 系统的模型

        1.2 系统工作原理
        (1)客户端虚拟仪器的实现。客户端虚拟仪器是由Applet程序实现的,其操作面板是通过加载资源模块中保存的服务器端虚拟仪器操作面板来实现的。
        (2)实时监测的实现。首先,服务器端虚拟仪器对被控对象进行实时监测,并将监测的结果显示在仪器操作面板上。然后,Servlet程序以特定的频率f将服务器端虚拟仪器操作面板图像数据保存到内存中。最后,在允许的网络延迟下,通过对f的调整(f根据具体的应用场合而定),将内存中保存的图像数据同步发送到客户端虚拟仪器中,从而间接实现对被控对象的实时监测。
        (3)远程控制的实现。客户向客户端虚拟仪器发送控制命令,通过Servlet程序和通信库模块远程操作相应的服务器端虚拟仪器来间接控制被控对象。
        这样客户就可以通过浏览器登陆到服务器,并通过Applet程序、Servlet程序以及通信模块把服务器端虚拟仪器间接下载到浏览器中实现客户端虚拟仪器。
        2 系统的总体设计
        UML“4+1”视图模型中的“1”是指描述系统功能性需求的用例视图,“4”是指逻辑视图、进程视图、实现视图以及部署视图。逻辑视图表示系统的概念设计,进程视图描述系统中并发执行和同步的情况,实现视图介绍系统构成的组成结构及物理显示,部署视图则体现系统硬件的物理结构。AS-VIRMCS的总体设计正是根据UML“4+1”视图模型中的用例视图和逻辑视图开展的。
        2.1 系统用例视图的设计
        AS-VIRMCS用例视图的设计如图2所示,图中所涉及的活动者(又称角色)有客户、SVI、资源模块和被控对象。
        客户作为一个活动者来激活“登录CVI”用例、“启动5VI"用例、“远程操作”用例以及“实时监视”用例。“登录CVI”用例囊括了客户通过浏览器登陆服务器、启动Java虚拟机加载仪器操作面板等过程.“启动SVI”用例响应客户的命令,远程启动虚拟仪器库中的服务器端虚拟仪器。“远程操作”用例通过通信库来完成客户端虚拟仪器对服务器端虚拟仪器的远程操作,间接实现对被控对象的实时监测和控制。“实时监视”用例通过通信库实现客户端虚拟仪器显示状态与服务器端虚拟仪器显示状态的同步。

 系统的用例视图


        图2 系统的用例视图


        活动者SVI负责启动“监测和控制”用例。“监测和控制”用例实现对被控对象进行实时监测和控制。
        2.2 系统逻辑视图的设计
        AS-VIRMCS逻辑视图的设计工作主要体现在客户端虚拟仪器的设计上。Applet程序通过加载资源模块中保存的服务器端虚拟仪器操作面板,来实现与服务器端虚拟仪器具有相同仪器操作面板的客户端虚拟仪器。但这样生成的客户端虚拟仪器操作界面不具有捕获客户命令及实现远程测控的功能。针对此问题,基于构件技术自定制了一系列具有网络通信功能的类,并通过类视图来描述这些类之间的关系,如图3所示。

 客户端虚拟仪器控件通信类图


        图3 客户端虚拟仪器控件通信类图


        2.2.1 定制控件识别类
        类EnsureWidget是自定制的控件识别类,它具有判断客户命中控件类型的功能,即封装了控件自动识别的功能。
        2.2.2 定制网络控件类
        类Button、类Slider、类Menu和类Edit等是自定制的网络控件类,它们继承自接口Widget且分别封装了客户端虚拟仪器中矩形按钮、滑块控件、菜单和旋转按钮等控件响应客户命令,并具有向 Servlet程序和通信库模块发送消息的功能。
        2.2.3 定制仪器通活类
        类VI1、VI2,VIn-1和VI,等是为各种类型的服务器端虚拟仪器自定制的仪器通信类。每一个仪器通信类对应一种型号的服务器端虚拟仪器,所有的仪器通信类都继承自接口Communcator,负责客户端虚拟仪器和服务器端虚拟仪器之间的通信,一般是由EJB组件或DLL动态库来封装实现的。
        (1)接口的设计。接口Communicator中只定义了抽象方法,它由客户端虚拟仪器操作面板上的控件(按钮、菜单等)决定。每一个控件对应一个抽象方法。这样在每一个自定制的网络控件的信息响应中,就可以调用相应的抽象方法远程操作服务器端虚拟仪器。
        (2)仪器通信类的设计。仪器通信类由公有方法、私有方法和属性成员组成。公有方法就是接口Communicator中定义的抽象方法的实现,它是公有的,可以被外部访间。私有方法主要包括获取服务器端虚拟仪器窗口句柄及仪器界面上各个控件句柄的方法。私有方法在公有方法内部被调用,来辅助公有方法的实现。属性成员是用来保存私有方法所获取的一些关键量的类成员变量。
        客户端虚拟仪器首先调用仪器通信类的公有方法,通过私有方法间接获取仪器通信类的属性成员所保存的服务器端虚拟仪器的窗口句柄和面板上的控件句柄,然后通过服务器端虚拟仪器窗口句柄识别操作对象,最后通过控件句柄确定操作方法。
        2.2.4 类之间的关系
        控件识别类和网络控件类之间的关系是一对多的关系,即一种控件识别类可以处理识别多种网络控件类。控件识别类的对象决定了网络控件类的对象的路由。
        网络控件类和仪器通信类之间的关系是多对多的关系,即一种网络控件类可以调用多种仪器通信类的通信功能,一种仪器通信类包含了多种网络控件类所需的功能。
        AS-VIRMCS通过控件识别类、网络控件类和仪器通信类之间的相互调用来完成实时监测和远程控制。客户通过鼠标或键盘命中客户端虚拟仪器上的控件时,系统首先调用控件识别类去识别何种网络控件被命中,然后在被识别出的网络控件的消息响应中调用Communicator接口实现仪器通信类的路由,接着由路由得到的仪器通信类远程操作相应的服务器端虚拟仪器来实时监测和控制被控对象,最后由Servlet实现客户端虚拟仪器对服务器端虚拟仪器的实时监视,做到客户端和服务器端虚拟仪器的同步显示。
        3 系统实现
        AS-VIRMCS的实现是根据UML“4+1”视图模型中的进程视图、实现视图和部署视图开展的,由于视图模型中的实现视图和部署视图很容易相互转换,故只进行了进程视图和部署视图的设计。
        3.1 系统进程视图的设计
        系统的进程视图在UML建模中一般用交互图来描述。交互图通常用来描述一个用例行为,实现一个用例,完成对系统的动态行为建模。由于实时监测和远程控制用例是系统的核心,故对其进行详细设计。
        图4是一个包括客户、客户端虚拟仪器、Servlet、通信库、服务器端虚拟仪器及被控对象等6个对象,用来实现实时监测和远程控制的交互图。

信用例交互图
        图4 通信用例交互图


        以鼠标控制为例,详细的交互顺序如下:
        (1)发送鼠标消息。客户操作客户端虚拟仪器,客户端虚拟仪器接收鼠标消息。
        (2)判断鼠标命中位置。客户端虚拟仪器收到鼠标消息后,确定鼠标的位置参数。
        (3)确定消息ID。首先通过向控件识别类的对象传递鼠标位置参数确定鼠标点击的网络控件类的对象类型,然后生成标示命中此对象的消息ID,并使之处于等待发送的状态。
        (4)建立网络连接。建立客户端虚拟仪器到Servlet的网络连接。
        (5)若连接成功,则Servlet回答客户端虚拟仪器的网络连接请求。若连接失败,则再回到(4)。
        (6)发送消息ID。将(3)确定的ID通过网络发送到Servlet程序。
        (7)消息ID处理。调用接口Communicator中的方法,通过接口Communicator路由到通信库中相应的仪器通信类,进行消息ID对应的处理并发送至(8),以获取图像数据的消息。
        (8)获取图像数据。发送获取服务器端虚拟仪器操作面板图像数据的消息。
        (9)消息工D映射。由路由得到的仪器通信类中的方法实现远程操作相应的服务器端虚拟仪器。
        (10)监测和控制。找到消息ID所对应的业务逻辑处理,以实现服务器端虚拟仪器对被控对象的监测和控制。
        (11)显示监测结果。将对被控对象监测的结果显示在服务器端虚拟仪器的显示屏上。
        (12)和(13)响应(8),获取屏幕图像数据的消息,返回服务器端虚拟仪器操作面板图像数据,将此数据通过Servlet传到客户端虚拟仪器中。
        (14)显示结果。将服务器端虚拟仪器的显示状态实时显示在客户端虚拟仪器中,实现实时监测。
        3.2 系统部署视图的设计
        系统的所有模块物理部署如图5所示。本地数据库和浏览器被配置在本地客户端,而资源模块、通信模块、Web服务器、被控模块、虚拟仪器库、网页、Applet程序以及Servlet程序被部署在远程服务器端。

系统的物理部署
        图5 系统的物理部署

        4 应用实例
        服务器端虚拟仪器是VC开发的动态信号分析仪(由VB、LabVIEW等工具开发的虚拟仪器同样适用),则基于Applet与Servlet的动态信号分析仪远程测控系统运行结果如图6和表1所示。


        表1系统资源使用情况
系统的物理部署

客户端实时监测结果


        图6 客户端实时监测结果


        图6是客户端动态信号分析仪通过远程操作服务器端动态信号分析仪来间接控制PC;I-9111采集卡进行信号采集并实时监测采集的结果(被采集信号以噪声信号为例)。从图6中显示的时域波形可以看出,AS-VIRMCS可以在不修改单机版动态信号分析仪的情况下实现远程测控。对于网络状况不好的客户,只要不应用实时监测功能,远程控制功能可以完全正常的实现。
        表1描述了两个客户连接到服务器时系统资源的使用情况。实验数据表明系统运行时占用的资源比较少,具有一定的应用价值。
        从图6和表1的实验结果可知,AS-VIRMCS实现了服务器端动态信号分析仪的网络化。
        5 系统的实时性评估
        在不考虑网络本身的硬件性能情况下,影响AS-VIRMCS的实时性因素主要有网络的通信协议和信息量。
        网络的通信协议主要包括网络通信协议的层次结构和有无连接控制等。AS-VIRMCS是一种多层结构,层数结构比较复杂,对实时性有一定的负面影响,而其底层连接采用面向无连接服务的UDP协议,对实时性是有利的。
        网络的信息量是指一定时间内需要传送信息量的多少。网络传送信息量越少,实时性越高。结合上文中叙述的应用实例来对AS-VIRMCS所需传送的信息量进行分析。服务器端动态信号分析仪的面板图像数据约为25KB,采样频率为100kHz,且每采集4KB个数据点就刷新屏幕一次,即刷屏率为25Hz。故而要实现客户端动态信号分析仪同步实时显示,则网络传输信息量就需要达到625KB/s。从当今网络速度来看,所需传送的信息量较少,实时性较高。
        综上所述,在允许的网络延迟前提下,AS-VIRMCS实时性较高。
        6 结论与未来发展方向
        AS-VIRMCS是一种采用了Java Applet、Servlet、网页设计、网络通讯、UML建模等技术实现的多层结构系统模型。从应用实例可知,利用AS- VIRMCS实现的虚拟仪器远程测控与其他方式相比有以下几个优点:①能在零网络编程和零虚拟仪器软件修改情况下实现虚拟仪器的远程测控;②使用Java Applet将传统的虚拟仪器嵌入到浏览器中;③由于系统采用了B/S结构,从而避免了客户端软件的安装以及软件更新带来的诸多问题。
        系统还可以有以下需要改进的地方:①目前系统的通信库模块中的各种型号虚拟仪器的仪器通信类不具有通用性,在未来的研究中,可以将它们标准化并统一于一个模块;②目前系统的实时监测是通过实时传输整个服务器端虚拟仪器操作面板图像数据米实现的,在未来的研究中,可以增加面板图像数据的分辩处理功能,实现只传输面板上变化的像素,减少数据传输量,改善系统的性能。

标签:Applet,Servlet,仪器,远程测控

相关文章