基于组件的分布式实时监控平台研究与设计
曾 庆 磊
[文章摘要] 本文提出了一种基于OPC接口的组件化分布式监控系统平台,探讨了系统各部分的接口实现方式。该平台由一组自适应、自容错、接口开放的软件组件构成,每个组件封装为具有独立功能、时间认知的智能软件主体,各个组件之间通过优先级消息队列进行快速、高效的通信,从而在整体上提供实时的数据采集、存储与访问功能和Web服务。最后,本文探讨了客户端浏览器采用数据发布/订阅方式,使用SOAP消息存取实时和历史数据的过程。
[关 键 词] 分布式监控系统 OPC XML
1 引言
现实世界中的许多应用系统包含了对大量的现场数据的实时存取和管理,如工厂生产过程监控、电网调度、楼宇自动化等等,系统必须能够实时地从被控环境中获取数据,以便随时了解控制现场的最新状态,并结合过去获取的数据进行处理以及时地做出反应。其中处理的数据往往具有短暂有效性,称为时态数据,而过期的时态数据通常称为历史数据。维护时态数据的有效性是时态数据管理的重要内容,而数据的时态一致性需求也会导致事务的时间性限制[1]。实时数据库(Real-time databa)就是其数据和事
务都有显示时间限制的数据库,系统的正确性不仅依赖于事务的结果,而且依赖于该结果所产生的时间。RTDB中的体系结构、事务调度、并发控制、资源管理等技术问题已经得到了广泛研究[2]。
OPC(OLE for Process Control)是由自动化领域中主要厂商协作制定的软件接口标准。OPC技术提供了不同系统间通信的标准接口,实现了异构环境中控制网络数据的统一集成[3]。将OPC技术与RTDB结合起来就形成了一个统一、开放的实时数据管理平台。
本文所提出的实时数据库监控系统采用组件化设计,由一组自适应、自容错、接口开放的软件组件构成,每个组件封装为具有独立功能、时间认知的智能软件主体,各个组件之间通过优先级消息队列进行高效通信与实时交互,从而在整体上提供实时的数据采集、存储与存取功能。通过OPC标准接口存取数据,具有灵活可靠的组成方式和可靠的通信结构。系统采用基于发布/订阅的数据前推方式,将实时数据发送到客户端Web浏览器中,实现了Internet/Intranet网络实时监控平台。这种设计结构已经在我们开发的实时数据库系统中得到了实现。目前该系统已经通过多家企业的实践检验,并取得了良好的监控效果。
2分布式监控系统结构
2.1 总体结构设计
整个监控系统分为设备层、控制层和信息层三层。设备层由RTU、PLC、DCS等控制设备组成,它们负责采
集工控现场的数据。控制层分为数据采集端、数据库和现场监控站三部分,其中数据采集端可以,读取设备层的现场数据;数据库分为实时数据库、OPC历史数据服务器(HDA)[4]和OPC报警服务器(AE)[5]分别向客户端提供实时数据、历史数据和报警及事件信息。控制层中的数据可以通过Web服务器和OPC XML-DA服务器,发布到数据层中,从而实现生产数据与管理数据的统一。监控站作为OPC客户端,访问各种服务器,实时监控设备数据和现场画面。
Web服务器对外发布嵌有ActiveX的监控画面和数据报表页面,并能为用户提供其他Web服务。Web浏览器作为系统外监控端,可以使用浏览器(如IE),通过下载XML格式的监控画面文件和应用配置文件,设置ActiveX的参数,通过SOAP消息与OPC XML-DA服务器通信,远程监测现场情况。监控端的位置可以突破传统网络架构的限制,可以位于现场,也可以位于中央控制室,甚至可以通过防火墙位于Intranet以外的Internet中。
以上多种服务器构成了企业信息数据平台,每种服务器和客户端可根据系统情况设置为一台或多台。该系统对外提供一套完整的接口、属性和方法的标准,支持分布式应用和异构环境下应用程序之间软件的无缝集成和互操作性,它使设备层、监控层以及信息层之间的协同工作成为了可能,并且提
供了工业自动化应用的统一数据传输平台,实现企业控制网和数据网的一体化,使异构系统之间的数据交换更为方便。
通过以上讨论,我们可以看出,与传统C/S监控系统相比,这种系统结构的设计具有分布式、模块化、配置灵活的特点。
2.2实时数据服务器
实时数据服务器(RTDB Server)提供两个服务端口:数据采集服务端口与数据访问服务端口,它们分别负责接收实时数据更新请求与用户查询请求。
设备通信线程负责监视采样服务端口,处理来自设备IO站的数据更新请求,并把请求按照EDF策略组织到数据更新队列,由数据更新线程采用非抢占方式依次处理。
请求接收线程负责接收来自用户的数据查询请求,这些请求由用户指定截止期,按照EDF策略组织到查询请求队列等待查询处理线程进行处理。由于不同的查询请求耗费的CPU时间可能差别很大,一个并不紧迫的查询可能阻塞一个紧迫的查询而导致该查询错失截止期,因此必须支持查询请求的抢占执行。
为了无效的事务重启造成的资源浪费,系统根据下面的策略决定是否重启:设查询事务Tq已经执行
的时间为Eq,截止期为D,当前时间为t,则当D-t≤Eq则表明事务重启后也不会再有足够的时间完成,因此返回查询失败,否则中断执行后
重新放入查询请求队列等待处理。这种方法我们称为剩余时间准许算法。
实时数据服务器采用主内存数据库技术,实时数据管理器负责内存中实时数据的管理与一致性维护;历史数据管理器负责历史数据的压缩处理与查询,并且管理历史数据缓冲区,而历史数据存储线程定期地把需要存储的历史数据由内存中的缓冲池写入磁盘上的文件队列中。实时数据管理器与历史数据管理器提供一组接口函数给数据更新线程与查询处理线程,数据更新事务与数据查询事务的处理都是对这些函数调用的组合。
为了支持主动数据推送,系统引入了数据订阅-发布(Pub/Sub)机制。根据用户端应用程序的数据需求,系统中所有的数据对象被组织到不同的组,每组指定一个多点播送地址,所有关心这些数据的用户可以通过监听指定的端口来获取实时数据。这些信息保存到系统内的一个数据订阅表中,数据更新线程在完成每个更新事务后,将触发数据发布事务,由数据发布线程根据数据订阅表把这些数据采用简单对象访问协议(SOAP)播送给感兴趣的用户。
2.3 通信结构设计
整个监控系统以实时数据库[5]为核心,通过多层接口实现数据的采集、保存和发布。实时数据库RTDB分为上下两层接口。下层Device RTDB API数据接口为各种数据采集端(包括RS232、OPC/DDE客户端、关系数据库RDB采集端等)提供接口,允许它们将采集的数据保存到实时数据库中。上层分为RTCom专用接口和ODBC/OPC通用接口。控制台程序通过RTCom接口管理实时数据库。OPC HDA服务器和OPC AE服务器通过OPC接口获得实时数据,然后按照判断逻辑生成报警数据和历史数据,并保存到各自的数据库中。监控端作为OPC客户端,可以通过OPC接口查询或者订阅实时数据、历史数据和报警信息。
客户端监控软件只需要符合OPC规范,就能通过标准接口访问所有的服务器,从而实现了灵活配置及降低系统集成费用,而且缩短了应用软件的开发周期。
系统各模块之间相对独立,都可在遵循各自接口标准的基础上独立修改升级,使得分布式监控系统中的数据采集、存储和监控各部分功能模块化,其开放性和可扩展性大为提高。
3 基于Web浏览器的实时监控
目前,应用Web技术实现远程监测已成为工业监控系统中不可或缺的重要组成部分,其关键问题是如何实现被测对象(如实时曲线)的图形化显示和数据更新。为此,我们提出了一种高效可行的解决方法--以XML和ActiveX技术为核心的实时监控。
XML是为了更为有效地通过web传送带结构的信息而设计的一种语言。XML将一个文件的内容从其陈述
中分离出来,并提供了一个统一的格式在Internet或Intranet上传送数据。
基于XML以上特点,我们在客户浏览器和内部服务器之间增加了一个XML数据发布层-OPC XML DataAccess Server[6]:
(1) OPC XML DA Server在Web服务器上构架;
(2) 通过OPC用户化/自动化接口,访问系统内OPC服务器、历史数据服务器和报警服务器等,获得实时、历史数据和报警信息;
(3) 通过XML和SOAP协议,向浏览器端提供监控画面结构和实时数据。
OPC XMLDA Server是数据服务器与用户的浏览器(即OPC Client)之间交换数据的中间层。因此,整个网络监控的实现流程如图3所示:采用B/S三层结构和 "瘦"浏览器客户端设计,通过访问历史数据服务器和OPC服务器,将工业现场中各类监控画面、曲线和报表等信息,连接进入Web服务器中的XML数据发布层,其中监控画面用XML格式保存,实现画面结构与数据的分离,静态组件(如标题、标注、图片等)一次性传输,动态组件(如LED、液位、开关等)则以Active X的形式进行发布,
使得网络上的任何一个授权用户,均可通过浏览器,看到现场的各类画面,订阅或者查询实时和历史数据,从而了解整个现场的运行情况。
客户端Active X通过SOAP协议向OPC XML DA服务器发送实时数据和操作请求,收到返回消息后,解析XML文件,得到实时数据,更新监控画面。
例如:
客户端请求得到主干线A相电压值:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="/soap/envelope/">
<SOAP-ENV:Body>
<m:ReadRequest xmlns:m="urn:ReadMethods">
< ItemList>
<Item>DistributingMainUa</Item>
</ItemList>
</m: ReadRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
服务器解析这个 SOAP消息请求, 处理后向客户端返回主干线A相电压10002.5V:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="/soap/envelope/">
<SOAP-ENV:Body>
<m:ReadReply xmlns:m="urn:ReplyMethods">
<ItemList>
<Item>
<itemid>DistributingMainUa</itemid>
<value>10002.5v</value>
<quality>good</quality>
<date>2005/01/13/</date>
<time>10:03:19<time>
</Item>
</ItemList>
</m: ReadReply>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
增加了OPC XML DA Server后,系统成为了B/S三层结构,且具有本地计算和处理、数据显示多样性、颗粒化数据更新的优点。
通过OPC XML DA Server和OPC数据服务器可以实现对工业生产过程的实时远程监控,并可将实时生产数据与MIS、ERP系统以及用户的实时需求结合起来,构成一个企业内部统一的数据平台。
4 结束语
将OPC技术引入工控实时数据库系统中是一项有意义的工作。本文结合OPC技术特点
,给出了一种工业分布式监控系统的结构设计和关键部分实现思路。该体系结构具有运行效率高、扩展性好、分布式处理能力强等优点。
如何利用最新的Web技术,进一步提高工业监控系统的实时性、安全性和可靠性仍将是我们下一步的研究工作的重点。
参考文献
[1] Azer Bestavros. Advances in Real-time Databa systems rearch[M]. ACM SIGMOD Record,1996.
[2] R.M.Sivasankaran,J.A.Stankovic, D.Towsley, B.Purimetla and K.Ramamritham, Priority Assignment in Real-Time Active Databas[M], The international Journal on Very Large Date Bas, 1996.5(1)
[3] OPC Common Definitions and Interface Version 1.0[EB/OL]. OPC Foundation, 1998.
[4] OPC Historial Data Access Automation Interface Standard Version 1.0[EB/OL]. OPC Foundation,2001.
[5] OPC Alarms and Events Version 1.02[EB/OL]. OPC Foundation, 1999.
[6]杨庆,王堃,王宏安,戴国忠.企业级工控实时数据库研究与实现[M]. 计算机工程与应用,2001,13:68
[7] OPC XML-DA Specification Version 1.01[EB/OL]. OPC Foundation,2004.
??
??
??
??
应用技术研究
1
作者简介:曾庆磊,男,电气工程系工程师
2