通信网络-基于Internet的远程控制系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Internet的远程控制系统(湖南省自然科学基金“高速网络自适应拥塞控制研究”,湖南省科技厅,编号:06JJ50135,本文作者为项目主持人)

Internet-based Remote Control System

(广东商学院)高文宇

摘要:基于局域网的控制系统已应用得非常广泛,但是真正基于Internet的远程控制系统还面临诸多挑战,如跨平台性、实时性和安全性等。本文以一个Java实现的远程监控系统为例,深入研究了系统中的跨平台性支持,Java对底层硬件的控制实现,实时性问题,安全性问题等,应用实践表明,该系统基本满足了设计要求。

关键词:远程控制;实时性;安全性

中图分类号:T27 文献标识码:B

Abstract: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;Security

1 引言

随着计算技术的飞速发展,越来越多的工业控制系统通过计算机来完成,而网络技术的进步也为网络控制提供了更多的可能性。在传统的工控领域,以汇编和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( )方法,用于与端口上的设备进行通信。

使用串口通信,首先要打开串口,设定事件监听器,设定串口通信参数如波特率、数据长度、数据停止位长度、数据校验类型等,关键代码如下:

被控设备向计算机发送数据时会在串口产生一个端口事件,监听器截获端口事件后将消息传递给主程序处理。关键代码如下:

相关文档
最新文档