基于Internet的远程控制系统(湖南省自然科学基金“高速网络自适应拥塞控制研究”,湖南省科技厅,编号:06JJ50135,本文作者为项目主持人)Internet-based Remote Control System(广东商学院)高文宇摘要:基于局域网的控制系统已应用得非常广泛,但是真正基于Internet的远程控制系统还面临诸多挑战,如跨平台性、实时性和安全性等。
本文以一个Java实现的远程监控系统为例,深入研究了系统中的跨平台性支持,Java对底层硬件的控制实现,实时性问题,安全性问题等,应用实践表明,该系统基本满足了设计要求。
关键词:远程控制;实时性;安全性中图分类号:T27 文献标识码:BAbstract:LAN-based control system has been wildly used for a long time, but Internet-based remote control system is still a great challenge. Such problems as cross-platform support, real timing, security cannot be solved easily in an Internet-based system. We try to solve such problems through a remote control system implemented by Java; special discussion is given to above problems. Operation of this system showed it meet most of the demand.Keywords:Remote control;Real-timing;Security1 引言随着计算技术的飞速发展,越来越多的工业控制系统通过计算机来完成,而网络技术的进步也为网络控制提供了更多的可能性。
在传统的工控领域,以汇编和C语言实现的控制系统居多,而控制系统的实时性要求又将多数的网络控制系统局限在局域网内。
真正通过Internet来实现远程工业控制系统还面临许多挑战[1-3]。
首先,基于Internet的远程工控系统要考虑到控制终端的多样性,因此系统要具有良好的平台适应性,传统的C和汇编难以很好地满足系统要求,而Java良好的可移植性和封装性为系统的设计提供了更好的选择,因此采用Java实现的Web方式的工控系统成了更好的选择。
其次,基于Internet的远程工控系统,控制指令和数据的传输需要经过一个公共的,不可控的Internet,数据传输的实时性、安全性都无法像在可控的局域网里那样有保障,因此需要采用一些有效的技术措施来提高系统的实时性和安全性。
2 系统结构某单位在几个不同的城市分别设置了几个无人值守的观测站,用于收集一些环境信息,同时,远程控制终端还可发送控制指令对被控设备的运行参数进行调整,以调节数据采集的频率等,每个观测站还配置了监控器,用于对观测站的现场情况进行监测。
系统体系结构见图1。
系统主要包括被控设备、控制机、控制服务器和控制终端。
控制机通过RS232接口与多个被控设备相连,主要包括环境数据采集设备、监控器等;控制机通过Internet与控制服务器相连,接收来自控制服务器的控制指令,另外,控制机也通过网络上传一些系统状态,监控录像等;控制终端有两种,一种是与控制服务器处于同一个局域网的控制终端,这些控制终端通过LAN访问控制服务器,经过服务器的验证后,可以发送控制命令给服务器,由控制服务器将控制命令转发给控制机,实现对远程设备的控制;另一种控制终端是直接连在Internet上的控制终端,理论上,任何一台可以访问Internet的机器都可以当作控制终端来使用。
对于这类通过Internet接入的控制终端,同样需要先连接到控制服务器请求认证,经验证后方能实现对远程设备的控制,这里最重要的问题就是如何保证远程控制的安全性,这在后面专门给予讨论。
系统采用Java及相关技术实现。
图1 系统体系结构图3 系统实现中的关键问题3.1 通过JNI技术实现对底层硬件的控制Java具有良好的平台无关性,因此在应用系统的开发中应用越来越广泛,但是也正是由于Java跨平台性的要求,使得标准Java中不包含对底层硬件访问的支持。
而在工控系统中经常遇到需要直接操作物理设备的情况,使用纯Java编程无法解决这个问题。
同时,许多工控设备自带的驱动程序和操作函数也都是用C或汇编实现的。
幸运的是,Java中提供的JNI(Java Native Interface)技术可以很好地解决这一问题。
在Java中通过JNI技术来利用C 或汇编实现的API,实现Java与硬件的交互。
使用JNI基本本地方法的过程如下,首先在一个Java程序中使用native关键字声明一个本地方法,用System.loadLibrary( )方法加载所需的动态链接库,然后编译该Java程序。
接着使用JDK中的javah命令创建一个C语言头文件,并创建一个Stub文件,Stub文件中包含与其C结构紧密联系在一起的C代码,Stub文件建立后编写相应的C代码;最后再将C程序编译成DLL模块供前面实现的Java程序调用。
关键Java代码如下:3.2 Java实现串口通信在监控系统中,控制机与被控设备之间是通过串口进行通信的。
而标准的J2SE中由于考虑到跨平台性没有提供对串口支持,串口通信开发包是以独立的comm.jar包形式发布在网站上,称之为Java Communication API,它是J2SE的标准扩展,事实上comm.jar 就是使用前面提到的本地方法实现的。
comm.jar提供了对RS232串行端口和IEEE1284并行端口通信的支持。
Java Communication API的核心是抽象的类CommPort及其两个子类,SerialPort类和ParallePort类。
其中,SerialPort用于串口通信,ParallePort用于并行口通信。
CommPort类还提供了常规的通信模式和方法,如getInputStream( )方法和getOutputStream( )方法,用于与端口上的设备进行通信。
使用串口通信,首先要打开串口,设定事件监听器,设定串口通信参数如波特率、数据长度、数据停止位长度、数据校验类型等,关键代码如下:被控设备向计算机发送数据时会在串口产生一个端口事件,监听器截获端口事件后将消息传递给主程序处理。
关键代码如下:3.3 控制系统的实时性策略由于控制服务器和控制机,以及控制终端和服务器之间的连接是通过Internet来实现的,因此这对于控制事务的完整性和实时性都提出了很大的挑战。
对此在系统中主要采用了缓存和探测的这两种策略。
所谓缓存就是控制机对收到的所有控制命令都进行缓存,只有收到完整的命令集才对被控设备发出控制命令,避免不完整的命令导致错误的控制行为。
而探测则是针对一些数据量交互较大的控制行为,在最终执行这些控制命令前,控制机会向发出控制命令的控制终端发送一些探测数据包,通过对探测数据包延时的变化情况的考察来了解当前网络状况,以确定当前网络状况是否满足将要执行的控制命令的实时性要求,如果当前网络较为繁忙,无法满足要求,控制机就给控制终端发送提示信息,建议等待或取消控制命令。
探测数据包延时变化情况分析的原理参见文献[4]。
3.4 控制系统的安全性策略从前面对系统的描述中可以看到,系统的控制终端有两种类型。
一种是与控制服务器同处于一个局域网的计算机,另一种是任何接入到Internet的计算机理论上都可以实施对远端设备的控制,因此这对系统的安全性提出了更大的挑战。
在这个系统中,对于从Internet接入的控制终端主要采用两种模式来实现对远端设备的控制。
在第一种模式中,从Internet接入的控制终端通过Internet访问控制服务器,服务器验证远程控制终端的账号和密码,通过验证后,远程控制终端可通过服务器与远程的控制机实现通信,从而实现对远程被控设备的控制。
在这种模式中,服务器就像是远程控制终端和远程控制机的一个代理,控制终端和控制机之间的控制和反馈都通过服务器代理。
这种方式有较高的安全性,控制服务器可以对控制终端实施严格的验证,并对控制终端的行为进行监督和约束。
但是由于控制服务器的代理和转发,会降低控制终端和控制机之间的通信效率,特别是控制终端和控制服务器是通过Internet相连,而非通过LAN相连时。
因此在系统中还提供了第二种模式。
在第二种模式中,首先,从Internet接入的控制终端也是通过Internet访问控制服务器,向服务器提交账号和密码以及控制请求,通过服务器的验证后,控制服务器向控制终端和被控的控制机分别发送一个有时间限制的对称密钥,随后,控制终端可以使用该密钥直接与控制机进行加密的通信,而没有密钥的机器是无法与控制机进行直接的通信的,这样就保证了控制过程的安全性,只有通过服务器验证并持有密钥的控制终端才能直接与远程控制机直接通信。
4 结束语随着应用需求的进一步发展,将有更多的控制系统通过Internet来实施。
而在一个开放的,提供“尽力而为”服务的Internet上实现安全,可靠的远程控制的确是一件非常困难的工作。
在系统的开发中,我们对这些问题做了较为深入的研究和探讨,通过在网络应用层的一些措施取得了较好的效果。
但在今后,这两个问题仍然有待改进,更为安全和可靠的基于Internet的远程控制的实现需要底层协议的支持,而且协议还需与现有的网络结构兼容。
另外,将控制终端的实现进一步小型化,使其能移植到通用的无线通信平台上,从而实现可靠的无线控制终端也是值得进一步研究的问题。
本文作者的创新点在于对基于Internet的远程控制系统中的一些问题如跨平台性、实时性、安全性进行了较为深入的研究,并给出了可行的解决方案,实践表明这些方案取得了较好的效果。
参考文献:[1]陆颖瑜, 张永林. 利用Java 实现对云台和镜头的远程控制[J]. 工程设计学报, 2007,14(4):324-328[2]贾少锐,王亚军,薛红梅,马小进. 基于JSP 的网络控制家电软件系统的实现[J]. 微计算机信息,2007,1-3:190-192[3]宗群, 李然, 王波. 嵌入式Internet 控制系统的设计与分析[J]. 中国工程科学,2005,7(5)53-56[4]Jain M, Dovrolis C. End-to-end available bandwidth: Measurement methodology, dynamics,and relation with TCP throughput[J]. IEEE/ACM Transactions on networking. 2003,11(4): 537–549.作者简介:高文宇(1972-),男(汉族),湖南省永州市人,广东商学院信息学院教授,博士,主要从事计算机网络、软件工程研究。