赵晓峰
(1.江苏省无线传感系统应用工程技术开发中心,无锡 214153;2.无锡商业职业技术学院 物联网技术学院,无锡 214153)
目前,在工业过程控制领域,大多采用上位机和下位机协同工作的模式,需要工作人员在线值守,限制其活动范围,在农田灌溉、水利排涝等应用环境下,已经显露出弊端。在“互联网+”背景下,如何对传统的工业控制系统进行改造或升级,以浏览器、移动终端等多方式实现远程监控,已成为工业控制领域必须解决的问题[1]。本文在分析传统工业系统基础上,设计基于OPC技术的Web工控系统,采用订阅发布机制处理实时数据,解决了数据并发写入设备的问题。
传统的工业控制系统包括3个部分:(1)PLC硬件,通过嵌入的程序逻辑完成模拟信号和数字信号的处理,控制硬件运行,通过OPC标准与OPC Server通信;(2)OPC Server属于中间服务层,接收 PLC数据,对外提供统一的OPC DA接口;(3)上位机的组态软件访问OPC Server,提供实时数据通讯和图表功能[2]。在传统的工业控制网进行扩展,增加Web应用平台,直接与OPC Server通讯,就能实现远程的实时工控系统,从而可以为各类的访问终端提供接入服务。图1所示为改进后的Web工业控制系统(虚线左侧是传统工控系统)。
图1 Web工控系统结构Fig.1 Architecture of Web industrial control system
工控Web应用主要由3部分构成,表示层和Restful接口提供应用的交互界面;权限控制用于定义设备管理上的约束;数据中心用于定义应用系统范围内PLC设备及其状态变量,为上层应用下发的命令提供解析和执行,解决应用数据与设备数据的同步问题;DCOM通讯层通过DCOM接口,将PLC的数据按OPC规范与OPC Server进行相互的通讯[3]。工控Web应用的逻辑结构如图2所示。
图2 Web应用结构Fig.2 Architecture of Web application
考虑应用系统的跨平台、稳定性以及服务的可扩展性,采用Tomcat7.0作为应用服务器,Redis 2.8作为实时数据缓存和消息路由,SQL Server 2008存储历史数据和应用配置信息。
OPC定义了一个工业标准接口,基于微软的COM/DCOM技术,使任何带有OPC接口的客户程序都可以采用统一的方式存取不同硬件厂商的设备[4]。OPC Server通过DCOM接口为外部程序提供OPC规范的数据访问,DCOM通过对象远程调用ORPC协议来支持对远程对象的调用。Java访问OPC Server,可以采用OPC基金会推荐的Utgard项目,它是一个纯Java实现的类库,相比其它JNI的实现方式更为可靠和稳定,并且不依赖于其它组件。OPC Server在Windows系统中需要进行DCOM的配置,分配相应的权限,才能由特定的用户进行DCOM调用[5]。
数据服务中心的主要任务是数据同步,主要在OPC Server和Redis之间进行,Redis是一个高效的键值数据库,支持字符串类型、散列类型、列表类型、集合类型等键值数据,是一个高效的内存数据库,支持订阅/发布方式对消息进行处理[6]。在本系统中,Redis作为Web应用的缓冲,保存设备的实时数据,同时通过订阅发布机制帮助应用实现对设备的实时控制。
数据同步服务以多线程方式工作,运行的基本流程如图3所示,左侧是读取OPC Server数据流程,右侧是写入OPC Server数据流程,采用读写分离的双线程工作模式,减少相互影响。Web应用写入OPC Server采用了订阅发布机制,由Redis通过匹配订阅条件,将订阅者感兴趣的消息从消息队列里进行提取,然后通过路由转发,投递给相应的订阅者[7-8]。
图3 数据同步读、写模型Fig.3 Read and write model of data synchronization
读取OPC Server数据,由SyncAccess对象根据更新频率自动触发事件,事件处理由注册在SyncAccess中的DataCallback对象完成,该对象的changed方法负责接收事件中包含的数据,将数据值由Variant类型转换成Java基本数据类型,以“变量名-值”的形式保存在Redis中。
写入OPC Server数据,采用了订阅发布模式,由业务层把数据以JSON格式发布到指定的Channel中。Redis通知订阅该Channel的对象接收数据,创建OPC Item对象,把数据写入OPC Server。订阅对象需要继承JedisPubSub,实现onMessage方法,对数据进行处理。
客户端接口主要包括两部分,一是由浏览器访问的Web动态网页,二是为移动终端提供的一组Web API接口,也能访问设备数据和远程控制设备。移动端的Web API接口采用Restful风格,数据格式统一采用JSON格式来描述。Web界面借助于HTML5的WebSocket通讯方式,可以在Web页中实现与服务器实时通讯,通过页面动态展示设备数据和图形[9]。
本文所实现的Web工控系统已运行于某市水利项目,项目由5个PLC控制的泵、闸站组成,利用水利系统内网通讯,实现Web浏览器远程控制泵站水泵启停和闸门升降,并在查询系统中显示实时数据、历史数据、水位过程线等过程控制信息,数据每隔15 min或1 min内功率变化>10%时,自动存入SQL Server2008数据库。案例的泵闸远程控制界面如图4所示。
图4 泵闸远程控制界面Fig.4 Remote control interface of pump and gate
在工业互联网和移动互联网的背景下,基于Web的工业控制系统越来越受关注。本文研究的基于OPC技术的Web工业控制系统,有效解决了Web应用的实时数据存储和设备并发控制问题;而且对传统工控系统的扩展不影响原系统运行,通过OPC Server与Web平台的相互协作,实现对工业控制系统的实时控制。未来会将本文所开发的远程工业控制系统应用于其他领域。
[1]刘宇.基于Android平台的远程工业监控系统[J].计算机测量与控制,2014,22(4):1087-1089.
[2] 崔嵩.OPC技术与分布式实时数据库在SCADA系统中的开发与应用[D].山东:山东大学,2014.
[3]尹菲,郭凤仪,孙倩,等.复杂工业过程控制中实时数据OPC Server的设计与研究[J].计算机系统应用,2011,20(5):126-129.
[4]王立萍.基于OPC标准的数据存取客户端应用开发[J].机床与液压,2015,43(4):171-173.
[5]杨海鹏,戴波.石油化工厂实时数据采集系统的设计[J].江南大学学报:自然科学版,2014,13(6):698-705.
[6]Josiah L Carlson.Redis in Action[M].Manning Publications,2013.
[7]虞海江,马建刚,叶丹,等.基于发布订阅模式的数据集成中间件系统设计与实现[J].计算机系统应用,2007(11):12-15.
[8]张舒,李超,赫阳,等.基于订阅发布的车辆GPS应急监控调度平台[J].计算机工程与设计,2008,29(2):445-450.
[9]杨建业,耿建平.基于HTML5的实时Web数据监测系统[J].桂林电子科技大学学报,2015,35(2):136-141.