《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 基于Web的网络控制及其Java技术实现

基于Web的网络控制及其Java技术实现

2009-01-05
作者:刘其成

    计算机控制系统与国际互联网络Internet的融合可以使人们能够通过现有的数据网存取、监测和控制多种设备。当传统的控制系统发展为现场总线控制网络(Infranet)时,构建Infranet到Internet的网络结构就成为可能,一旦Infranet和Internet相结合,控制网络就可利用Internet上丰富的资源,从而为控制领域日益发展的远程控制铺平了道路。

1.Internet中网络远程控制系统体系结构 

    所谓远程控制是指本地计算机通过网络系统,主要是Internet,实现对远端的生产过程的监视和控制。能够实现远程控制的计算机软硬件系统称为远程控制系统。现场总线系统接入Internet,在一定条件下,便可通过Internet控制这些生产系统和现场设备的运行状况及各种参数,即不必亲临现场,通过网络实现对远程被控对象的控制,以节省大量的交通、人力。还可以根据需要,建立起地区级的、国家级的乃至世界级的控制中心,便于大型企业集团对所属工厂的整体管理,从而提高经济效益。对于制造商来说,可以对自己产品进行及时维护,对产品性能进行及时跟踪调查以便进一步改进设计。

    远程控制的原理:远程控制实质上是通过远程控制软件使本地计算机与远程计算机之间进行的点对点间的信息传递过程。在进行远程控制之前,首先要在本地计算机和远程计算机上安装远程控制程序。当对远程计算机进行远程控制时,本地计算机首先向远程计算机发出控制请求,远程计算机收到控制请求后,先验证本地计算机是否有访问的权限,如果验证通过,远程计算机向本地计算机发出接受信号,这样就可以通过本地计算机来控制远程计算机了。

    要实现远程控制,第一要有一个能够稳定运行的现场总线的控制系统;第二要有一个能够通过Internet进行远程访问的数据通信系统;第三要有远程控制系统的各个组成部分间建立的虚拟通信关系,通过Internet接通远程异地控制网络,并利用公用数据网络丰富的软硬件资源,以便通过Internet来控制生产现场。

    根据远程控制网络的任务和要求,可以考虑整个系统采用B/S(浏览器/服务器)结构,因为B/S结构便于信息的发布,它可以很方便地将现场数据发向Internet,同时简化了客户端的信息处理,只要在远程客户端装上Internet浏览软件,即可查阅现场数据,而Internet浏览软件操作简单,无需培训。系统的总体结构如图1所示。

图1  基于Internet的远程控制系统总体结构框图

    远程控制所支持的网络方式有:LAN、WAN、拨号上网的方式、Internet方式。远程控制一般是通过一定的软件或命令,使用NetBEUI、NetBIOS、IPX/SPX、TCP/IP等协议来实现的。当然,这里所说的远程计算机,只能是一定距离范围内的计算机。

2.Java技术在网络远程控制中的应用 

    本文所研究的基于Java的网络控制系统的实现主要表现在下面几个方面:基于J2ME技术的无线网络控制;JNI技术在计算机控制实时采集系统中的应用;Java串行通信技术及其对PLC、单片机、变频器等的控制;在Intranet中基于Java的虚拟现实技术及其在计算机控制系统仿真研究中的应用。框图如图2所示:

 

2.1  J2ME技术

    虽然从Java 1.0发表后,Java就被广泛的应用在桌上型应用程序以及Applet的开发上,但从Java 1.1开始,Java又回到了它的设计初衷——嵌入式系统和消费类电子产品上了。当时,Sun Microsystems发表了针对嵌入式系统和消费类电子产品的Embedded Java与Personal Java(简称Pjava)两项Java规范。其中,Embedded Java是为资源十分有限且没有显示设备的装置设计的;Personal Java则是为能够与Internet联网,并拥有显示系统(如彩色LCD)的消费类电子产品设计的。

    Sun公司为了使Java语言进入嵌入式系统和消费类电子产品领域,在Java 2中推出了J2ME。摩托罗拉是J2ME的主要支持者,第一个在手机上移植了KVM,又领导全球手机厂家制定了MIDP规范。在2000年的Java One大会上,摩托罗拉总裁宣布:摩托罗拉的主要手机都将支持J2ME。

    与WAP相比,在传输层,J2ME提供了一组面向应用程序的高层协议,包括HTTP和TCP(或UDP)等,实际的传输可以基于其它方式(如CSD或GPRS等)。在应用层,J2ME提供了全功能的Java开发环境,可以用Client/Server方式访问Internet上的所有数据。如果需要,软件开发商甚至可以开发出HTML Browser。

    J2ME具有很多Java技术特性,主要有:可以在各种支持Java的设备上运行;代码短小;充分利用Java语言的优势;安全性好;用J2ME实现的应用可以方便的升级到J2SE和J2EE。为了支持用户和嵌入式市场提出的灵活性和可定制的要求,J2ME在设计中非常注重模块伸缩性。J2ME在设备原有的操作系统上建造了三层软件,即JVM层、配置层、框架层,实现模块化和伸缩性。

2.2  JNI技术

    对于底层的硬件系统的状态,纯粹的Java语言当然是无法得知,要想得知底层的硬件系统的状态,必须借助于Java的JNI技术:

    本机方法Java Native Interface(JNI)是Java平台的强大特征之一。使用本地方法的应用程序可以与用其他编程语言(例如C和C++)编写的本地代码,也可以与Java语言编写的代码取得一致。当然,JNI允许程序员充分利用Java平台的功能,因为JNI是Java平台的一部分。

    JNI增强了JDK的功能,将Java语言与其它编程语言联合使用,主要运用于以下方面:

    (1)Java编程者可能需要访问特殊的操作系统设备或声卡、调制解调器等外围设备使可用功能尽量让人满意,而这些设备不能通过JDK来访问。

    (2)Java程序可能需要具有与第三方中间件和通信系统(例如Lotus Notes等等)或专用的企业软件系统(例如SAP R/3、Bean等)之间的接口,而这些企业的应用软件的解决方法带有它们自己的专用接口API,这些专用接口通常是使用C或C++来编写的,因此需要使用Java本地方法。

    (3)可以无缝集成大量的已存在的程序而不需要考虑用户接口。

    (4)实时Java系统中的某些时间高度紧张的操作可能需要利用汇编程序来进行这样使用JNI是唯一的选择。

2.3 串口通信技术 

    在科研和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道。串行通信方便易行,应用十分广泛。Java语言本身并不能直接对串行通信进行编程控制,但是我们可以先使用其它语言(例如C/C++)编写好对硬件控制的方法,然后借助于Java的本地方法调用来达到控制串行通信的目的。由Sun公司推出的javax.comm类库已经做好了这部分工作,我们只需要调用javax.comm API,就可以编写出Java串行通信程序,非常方便方便。

javax.comm类库提供了6个类,分为3个层次,如表1所示。

    类库提供的功能:

    (1)搜索系统中的可用端口。由CommPortIdentifier.getPortIdentifiers()静态方法返回一个CommPortIdentifier对象,里面包含系统中所有可用的端口信息。CommPortIdentifie对象是javax.comm类库中最重要的对象,所有对端口的操作都是基于该对象进行的。

    (2)用上层类通过CommPortIdentifie对象打开端口,并且声明对端口的所有权。

    (3)协调多个应用程序之间对端口的所有权冲突。它通过事件消息来告知相关的应用程序,并使得当前占用端口的应用程序放弃所有权。如果打开端口失败,程序将抛出PortInUseException异常。

    (4)实现通讯端口的同步和异步I/O。底层类(例如SerialPort)都提供有管理通讯端口I/O的方法。

2.4  虚拟现实技术

    创建虚拟现实环境可以用以下两种方法,Java 3D和VRML与Java结合。

2.4.1 Java 3D 

     Java 3D API可以用来编写独立的三维图象应用程序和基于Web的3D Applets,它提供了产生和操作3D几何对象和用于描述几何特性的高层构件,使得开发者可以用构件来描述广大的虚拟现实。

    Java 3D包含了一种相当完整而且有机的立即模式,它的设计使所有用Java 3D API编写的应用程序实现了跨平台操作的能力。Java 3D的立即模式提供了通用立即模式层特性的最佳折中,同时还能得到满意的性能。

    Java 3D提供了复杂的基于视点模型的虚拟现实,但从典型的应用角度看,Java 3D的视点模型是很简单的。如果一项应用想在现存的使用基于摄像机来建立镜头的参数即刻。但是,Java 3D视点模型不能置于现存的基于摄像机的视点模型之上。

    Java 3D能够支持六自由度的跟踪模型。AWT提供了最普通的桌面交互外设:鼠标和键盘,Java 3D同样使用它们,而不是另选一种不兼容的I/O模型。Java 3D提供了能力位,保证了节点对象的大部分可修改状态,它们的默认值对于现场图景是不授权路径的。当今的绝大部分3D环境是运行时环境,而不是编辑环境。如果应用程序只识别那些会改变的对象,Java 3D就能对大部分的图形进行优化操作,于是Java 3D提供了能力位,使得应用程序可以定义这样的重要信息。   

2.4.2 Java与VRML 

    VRML的动画效果其实就是依靠一个给定的时间传感器和一系列各种各样的内插节点来控制场景中各种动画效果。其基本的方法就是时间传感器给出一个控制动画效果的时钟,这个时钟包含了动画效果的开始时间、停止时间、时间间隔和是否循环等动画控制参数,然后通过这个时钟的输出在虚拟世界中驱动各种内插节点产生各种相应的动画效果,而在内插节点中将给出各种动画效果的关键点和关键值,VRML浏览器将自动地根据这些关键点通过线性插值的方法来完成整个动画过程。另外,在VRML中虚拟世界和用户之间的交互是通过一系列检测器来实现的,通过这些检测器节点,使浏览器感知用户的各种操作,这样用户就可以和VRML虚拟世界中的三维对象进行直接交互。

    利用时间传感器和内插节点创造的动画效果在虚拟空间中都是自发进行的,也就是说和浏览者没有任何的交互性可言,各种动画效果只是有给定的时间传感器来控制。所以我们使用Java技术来改变这一弱势。

    外部创作接口(External Authoring Interface,EAI)是由SGI公司的Chris Marrin设计并提出来的,主要目的是增强VRML场景与外部环境通信联系和融合能力的一个高层次的Java类包,它使得一个外部程序使用VRML的事件模型可以访问和控制VRML场景中的节点。这里的外部程序主要是指和VRML虚拟场景嵌在同一个网页中的Java Applet程序。在VRML的事件模型中,一个给定节点的出事件(EventOut)可以被路由(Route)到另一个节点的入事件(EventIn)。当出事件对象产生了一个事件,入事件对象就会得到通知并处理接收到的事件。如果一个脚本节点中有一个指向给定节点的域,它就可以对该节点直接发送入事件,并可以读取该节点的任何一个出事件的最后发送值。

    通过使用EAI,用户不再仅仅局限于作为一个观众,而是可以参与、介入到虚拟场景的构建过程中去。用户借助自己丰富的想象力,可以去更改所看到的VRML场景、修改场景的物体、改变这些物体的表现形式、设计场景中的动画、定义场景中各个角色的行为方式。

3.结束语 

    本文从J2ME、JNI、javax.comm和Java3D及Java与VRML结合等几方面,粗略地探讨了Java技术在基于Web的远程控制中的应用。在后续的研究中,将具体地研究各个部分的具体编程实现。在具体实现时,将会设计Java安全性技术。另外,如何使用Java技术中的Jini技术构建分布式网络控制,如何将Smart Card等嵌入式技术运用于嵌入式控制网络等问题也将进行深入研究。

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。