郭玉泉1,刘海涛2
(1.吉林大学计算机科学与技术学院,吉林长春 130012;2.吉林省电力有限公司松原供电公司,吉林松原 138000)
SCADA(SupervisoryControl And Data Acquisition)系统,即数据采集与监视控制系统,是以计算机为基础的生产过程控制与调度的自动化系统,它可以对现场的运行设备进行实时监视和控制,以实现数据采集、设备控制、参数测量与调节以及对各类信号进行报警等功能。目前SCADA系统广泛应用于电力、给水、石油、化工等部门的数据采集、监视控制及过程控制等领域。
传统的SCADA系统大都是基于Client/Server的结构,其局限性主要表现为扩展性较差,其它系统对于已有的SCADA系统资源可重用性差。通常其他系统为得到SCADA系统的数据,需要编制复杂的接口,因此重新编制大量代码,而接口的稳定性也较差。随着工业生产中信息化应用水平的提高,SCADA系统越来越需要和工业生产中的其他业务系统相结合,从而为其它业务系统提供生产基础数据。例如,在电力行业SCADA系统要与MIS系统、能量管理系统等系统提供基础的电网运行数据。本文介绍了一种基于J2EE的SCADA系统的设计与实现方法,它的实施可以为其它业务系统访问SCADA系统数据提供通用接口,同时又可以方便地将SCADA系统集成到基于Browser/Server架构的业务系统中。
J2EE(Java 2 Platform Enterprise Edition)是SUN公司提出的基于Java平台的架构技术(图1)。它定义了一整套基于组件以及多层结构的企业级应用开发的标准,其中多层的分布式应用体系结构解决了多层应用程序开发过程中的许多问题。采用J2EE结构开发的应用程序其应用逻辑和数据处理大都集中在应用服务器上,这既提高了系统的处理效率,降低了系统的维护成本,保证了数据的安全性和完整性统一,同时还简化了体系结构设计和应用开发,因此这种结构具有良好的可扩展性,是一种灵活可靠的安全模型。而且Java具有优良的跨平台特性,基于Java开发的程序能够在Windows、Unix、Linux等操作系统下运行,使开发的应用系统的扩展性更加强。
图1 J2EE体系结构图
基于J2EE的SCADA系统的结构如图2所示。系统的结构分为3层——数据层、中间件层、应用层(图2)。数据层是整个系统的基础,系统中需要的原始数据均由此产生,同时对设备下发的控制指令也由数据层下发到硬件设备。中间件层是系统业务逻辑据的核心,实现了对模拟量、信号量、遥测量、遥调量的处理,以及对应用层的业务接口。应用层可以通过此接口取得需要的数据,以图形化方式显示被监控环境的运行情况。
数据层中的数据采集组件通过RTU(Remote Terminal Units)采集各种表计、传感器、控制器的数据,并为中间件层提供实时数据,同时也将定期采集到的实时数据存储到数据库中。对于采集到的告警信息,数据采集模块会将其直接传递给中间件层的告警处理模块。中间件层的远遥处理模块在下发控制信息时,需通过数据采集模块发送到被控设备。此外,数据层还包括描述被监控场站情况的矢量图文件,矢量图由专门的绘图程序绘制,系统中所有数据都以图形化的方式显示。
中间件层是整个系统业务逻辑的核心,基于J2EE的SCADA系统的所有业务逻辑都在这一层实现。中间件层的主要业务组件有告警处理、数据查询、远摇控制、矢量图处理。告警处理组件根据预先定义的阀值或状态来监控各种变量,当变量超过阀值或状态改变时产生告警信息并采取相应的自动保护指令。数据查询组件采用Web Service技术实现应用层对数据层的访问接口,应用层或其他系统可以通过SOAP协议访问SCADA系统中的各种数据。远遥控制组件可以接收应用层的控制请求,生成控制指令,并将指令下发到被控设备中去。矢量图处理组件负责将矢量图转换成Web可以发布的媒体形式,并分析矢量图中包含的被监控变量来组织矢量图呈现时需要的数据。
应用层以图形方式显示被监控场站,客户端程序采用浏览器中嵌入Java Applet的方式实现。在图形显示中采用了双缓冲技术,其基本过程是在绘图前线创建一个与当前显示设备兼容的绘图设备,在此兼容的绘图设备上完成绘图,然后将此设备上的内容复制到当前显示设备上。采用双缓冲技术后能够保障图形切换流畅避免产生抖动和闪烁现象的发生。
图2 基于J2EE的SCADA系统框架结构图
应用层的客户端图形显示模块是该层的核心。图3说明了该模块的类模型,图元基类定义了图元的基本属性(位置信息、图元连接信息等),各种图元类都由图元基类继承而来,图元类定义了图元的画法,以及数据信息和告警阀值信息,一个图元对应实际被监控的设备。接线图类与一幅实际接线图对应,其中包含有很多图元信息,它通过数据读取接口完成接线图中包含监控数据的读取。绘图设备接口完成以双缓冲方式进行图形绘制操作。数据读取接口,不但定义了采集数据的读取方法,而且还定义了告警信息的读取方法,以及控制信息下发操作。
图3 应用层类模型
中间件层的类模型如图4所示,RemoteContrl类执行远程控制,Alert类处理告警信息,Graph类完成图形显示,ExtractData类完成数据的提取。
图4 中间件层类模型
系统的工作流程如图5所示,数据采集模块通过RTU(Remote Terminal Unit)设备将由被监控设备数据采集到系统中,对于由RTU采集到的数据被定期存储到数据库中,数据采集模块中始终保存有各采集点的最新数据。系统中所有被监控设备都是以图形的方式呈现给用户的,绘图处理模块用来将场站结构绘制成矢量图形,所有的矢量图形以文件形式存储到系统中供系统其它模块调用。用户通过浏览器进入系统后,图形显示模块通过矢量图处理模块将块将被监系统的数据传送到浏览器中的图形显示模块,同时矢量图处理模块会将图形中所包含的各种量值的当前值传送到图形显示模块。图形显示模块根据这些数据采用双缓冲技术将图形绘制出来。图形显示模块会定期调用系统中的数据提取模块,以取得被监控量当前的最新数值。数据提取模块每次在向用户侧发送数据时会调用告警处理模块,取得当前的告警信息,发送给用户端。
图5 系统工作流程
当用户需要遥控被监控设备就可以调用远遥处理模块,向设备下发动作指令,远遥处理模块将指令发给数据采集模块,采集模块会将指令下发到被控设备。其他系统需要读取系统中的数据时可以直接通过HTTP协议调用数据提取模块、告警模块,通过这两个模块可以得到系统中的各种数据,包括当前数据、历史数据、告警日志等信息。
系统在BEA公司的WebLogic平台上实现,操作系统选用Microsoft Windows 2007 Server,数据库系统采用Microsoft SQLServer 2005。数据采集模块、绘图处理模块采用Microsoft Visual C++2007开发。系统的图形显示组件、告警处理组件、数据查询组件、远遥处理组件、矢量图处理组件采用Java开发。告警处理组件、数据提取组件、远遥处理组件、矢量图处理组件部署在应用服务器上,数据采集模块部署在采集服务器上,图形显示模块部署在用户端。
图6 系统运行界面
该系统在多个发电厂投入使用,投入运行后系统运行稳定,满足了各个部门实际生产的管理需要,同时系统具有良好的扩展性,与其他生产系统(运行管理系统、决策支持系统、MIS系统)完整结合取得了良好的效果。图6是系统实际运行截图。
本文介绍了基于J2EE的SCADA的实现方法,并且该系统实际应用于火力发电厂,在实际的生产中实现与MIS系统、运行管理系统、能量管理系统得无缝结合,达到了预期的效果,很好地解决了其它业务系统与SCADA的接口问题,取得了良好的经济效益和社会效益。
[1]R.I.威廉姆斯.油气工业监控与数据采集(SCADA)系统[M].北京:石油工业出版社,1995:398-400.
[2]魏高山.三层Client/Server结构分析与应用[M].北京:中国邮电出版社,2003:20-23.
[3]路索英,张银龙.工业远动技术[M].北京:科学出版社,1997:5-8.
[4]XC-SOFT.三层体系结构与数据库编程[EB/OL].(2011-09-09)[2012-05-09]http://wenku.baidu.com/view/6113e9ee6294dd88d0d26bc0.html.
[5]柴晓路.Web服务器架构与开放互操作技术[M].北京:清华大学出版社,2002:8-12.
[6]郝兴伟.Web技术导论[M].北京:清华大学出版社,2000:30-33.
[7]康博.Web应用程序开发新技术[M].北京:人民邮电出版社,1999:71-73.
[8]奈德斯特.WEB设计技术手册[M].北京:人民邮电出版社,2001:56-58.
[9]TonyBeveridge,Paul McGlashan.ISAPI/NSAPI Web高级编程[M].北京:中国邮电出版社,1999:201-205.
[10]王洪涛.深入剖析Visual C++编程技术及应用实例[M].北京:人民邮电出版社,2003:2-10.
[11]W.Richard Stevens.TCP/IP详解卷3:协议[M].北京:机械工业出版社,2004:132-13.