任伟建 江 声 霍凤财 姜淑环 杨 迪
(东北石油大学电气信息工程学院1,黑龙江 大庆 163318;大庆油田有限责任公司第二采油厂2,黑龙江 大庆 163414)
OPC技术在油田分布式共享系统中的应用
任伟建1江声1霍凤财1姜淑环2杨迪2
(东北石油大学电气信息工程学院1,黑龙江 大庆163318;大庆油田有限责任公司第二采油厂2,黑龙江 大庆163414)
为了解决油田联合站内不同厂商监控组态软件之间的通信问题,采用OPC接口技术,设计了油田数据分布式共享系统,实现了相互独立的各联合站数据采集系统之间的通信以及网络客户端油田联合站数据的分布式共享。实际应用表明,该系统能够实时获取数据源的动态数据和历史数据,捕捉控制过程中的各种报警和事件,具有一定的推广价值。
油田联合站数据共享OPC中间服务器Socket数据监控组态软件分布式动态缓存
Dynamic cache
目前,随着工业生产规模的不断发展,在工业自动化领域中,设备数据的采集监控的重要性日益凸显。在石油行业,油田联合站数量众多,地域分布广泛。由于生产数据的采集与监控相互独立,且在很大程度上依赖组态软件,在应用过程中产生了一系列问题:用户的访问数量受到限制,相互独立系统结构本身的封闭性会排斥与其他系统的资源充分共享[1]。
近年来,在工业过程控制领域出现了用于过程控制的对象连接嵌入(object linking and embedding for process control,OPC)技术[2],它以OLE/COM、DCOM技术为基础,是在已经存在的数据采集技术的基础上提出的解决方案[3-4]。OPC技术支持分布式应用和异构环境下应用程序之间的软件无缝集成和互操作,使客户软件能够访问任意数据源,为不同类型的服务器和客户端搭建桥梁,确保数据源能够提取数据并将其统一传输到应用程序[5-6]。
本文以OPC技术为基础,阐述了油田数据分布式共享系统方案的构建方法,重点讨论了OPC客户端在数据采集系统无缝集成中的实现过程,并介绍了分布式共享系统实现过程中所应用的关键技术。
本文设计的基于OPC数据规范技术的油田数据分布式共享系统(以下简称为油田数据分布式共享系统),主要包括五个部分:浏览器、Web服务器、OPC客户端、OPC服务器以及底层设备,系统的整体架构如图1所示。Web服务器包括可视化展示网络和互联网信息服务(internet information service,IIS)这两部分。
图1 系统整体架构图Fig.1 Overall system architecture
本系统是基于.NET平台开发的,采用的开发工具为Visual Studio 2010,使用C#编程语言。系统采用的关键技术如下。
2.1OPC中间数据服务技术
传统的油田数据采集系统虽然实现了数据的采集和显示,但是系统在很大程度上仍依赖组态软件。不同厂家的组态软件各自独立,很难实现数据的共享。本文采用OPC中间数据服务技术突破了这种局限,拓展了生产数据的应用范围。
通过引入OPC规范,建立通信规则框架信息库并采用有效的实时处理策略,设计、开发了具有较强通用性和面向过程数据通信的OPC客户端。OPC规范包括OPC服务器和OPC客户端两部分。从功能上看,OPC服务器作为数据源,它本身拥有数据,或可从各种设备、系统、控制器得到数据;OPC客户端则可在应用的过程中采集OPC服务器数据。
2.1.1OPC服务器
OPC服务器的构建一般有两种方式:①开发人员按照要求自定义创建;②各OPC服务器厂商包括组态软件提供的模块化的OPC Server。本文以紫金桥监控组态软件的RealInfo OpcServer 2.0作为OPC服务器,获取油田联合站数据,并向中间服务器(OPC客户端)提供数据。OPC服务器分为服务器 (server) 、组(group) 、数据项 (item)[7]这三层,三者之间的关系如图2所示。
图2 OPC服务器组织结构关系图Fig.2 Relationship of OPC server organization structure
OPC服务器支持两种访问接口:自定义标准接口和OLE自动化标准接口。自定义接口是一组COM接口,主要用于C++语言的应用程序开发;自动化接口是一组OLE接口,它提供了自动配置和存取过程控制数据的接口,主要用于VB、Delphi、C#和其他基于脚本编程语言的应用程序的开发[8]。任何OPC服务器都必须提供自定义接口,但是自动化接口是可选择的。同其他主流OPC服务器一样,RealInfo OPCServer 2.0提供了自动化接口。
2.1.2OPC客户端程序设计
OPC基金会的opcdaauto.dll动态链接库作为自动化接口的组件,提供了用于访问OPC服务器的对象、属性和方法。本文在引入此动态链接库的基础上,以基于Visual C#语言的Windows Form开发OPC客户端作为系统的一部分,更易于实现其与整个软件结合和升级。遵循OPC标准开发的OPC客户端能实现与众多联合站OPC服务器的互联和数据采集,应用方便。
应用自动化接口开发OPC客户端,首先要定义全局变量。本文分别定义服务器、组和数据项如下:
①OPCServer RealServer;
②OPCGroups RealGroups;
③OPCGroup RealGroup;
④OPCItems RealItems;
⑤OPCItem RealItem。
定义完成的全局变量可应用于在窗体的任何方法和函数。需要强调的是,变量类型应该指定为对象型。在本文中,采用子函数OPCServersList的方式来实现本地和远程服务器的搜寻,并将搜寻的OPCServer名称以列表的方式提供给OPC客户端, OPCServer对象会根据选中的远程OPC服务器的名称和IP调用Connect函数来完成连接。只有当OPCServer状态为OPCRunning,即RealServer.ServerState== (int)OPCServerState.OPCRunning时,才表示连接成功。在连接成功以后,需要建立OPC组,并添加OPC项,以完成数据传输。
①添加OPC组。为客户提供了一种组织数据的方法,每个组中都可以定义一个或多个OPC项[9]:RealGroup= RealServer.OPCGroups.Add(“group”)。添加组以后可自定义组的属性,也可采用默认设置。
②添加OPC 项。OPC项要在对服务器进行访问前添加。由于本文访问的站库点位数量比较多,如果采用逐个添加的方式会增加开发的难度和操作的繁琐度。本文通过XML文件的形式,动态添加各联合站需要监控的点位,不仅解决了不断添加OPC项的重复工作,而且当OPC项需要变动的时候,无需改动程序即可按照用户的需求进行定制。
③异步读取。采用异步读取,将分布在不同网络节点中的联合站采集系统的实时数据库中点位过程值集成到中间服务器;将历史数据储存在数据库中,实时数据缓存在OPC客户端所在微机的内存中。每个标签的数据结构包括三个成员变量,分别是数据值(value)、品质(quality)和时间戳(time stamp)[10]。
2.2优化动态缓存与SOCKET通信技术
OPC客户端实现了从OPC服务器提取数据。为简化流程,各种类型数据往往全部转存入关系型数据库,这就导致了用户访问动态数据需要经历以下过程。首先,Web服务器会将用户的不同请求分配给应用软件的不同模块;其次,根据应用软件的运算和处理,决定从数据库中提取什么类型的数据;最后,从数据库中提取数据,将数据按照定义的格式组合成需要的类型并显示。因此,数据访问时间冗长,访问速度缓慢,增加了Web服务器的负载。所以,如何优化访问速度、减轻服务器的负载成为设计关键。
本文为解决这种状况,在用户和Web服务器之间采用了一种优化的Socket通信技术和动态缓存技术,能加快用户访问的速度,以减少访问实时数据的延迟时间;同时在峰值负载下,该技术能缓解客户端冲击带来的负载。
2.2.1优化动态缓存技术
动态缓存的设计包括缓存内容存放的过程和缓存对象配置文件的建立。传统的内存缓存往往存在资源冗余、资源管理杂乱以及效率低下等问题。本文提出一种改进型的动态缓冲池技术,可实现线程间的大数据量通信。通过为通信线程申请一整块内存空间来存放数据,并在OPC客户端建立可定制大小的对象数组,以预先读取进行缓存的方式,实现动态内容的缓存。这种方式在管理缓冲池的时候,可动态地增减对象数组的数量和大小,使缓冲池所占用的内存按需变动。
从OPC服务器采集的实时数据会将每条记录生成对象存放在动态缓冲数组中,对象数组会根据记录的长短动态地设定存储大小,以避免内存的浪费。同时,考虑到实时数据的频繁更新,为确保用户查看到最新数据,本文设计了一种周期性触发和事件触发相结合的触发策略。当所采集对象的数据变化超过一定范围时,OPC服务器会触发DataChange事件,对缓冲池进行数据的更新。缓冲池作为一块内存空间,其大小不是无限制的。当缓冲池中存储的内容超出所设定的范围,缓冲池会自动溢出过时记录,保证了内存的负载。
缓存对象配置文件采用可扩展标记语言XML存储机制。XML作为新兴的面向互联网的标记语言,定义了应用程序间访问站库点位数据的结构,并且这种结构的描述不是基于二进制,而是一种相对简单、能够通过任意编辑器读写的文本。基于这种机制,可以制定缓存对象数据的采集规范,并通过DOM或SAX接口同应用程序相连,以限定动态缓存的对象范围。动态缓存应用流程图如图3所示。
图3 动态缓存应用流程图Fig.3 Application process of dynamic cache
2.2.2优化Socket多线程技术
Socket是应用程序与网络之间的标准接口,主要分为三类:流式套接字、数据报套接字和原始数据报套接字。其中,流式套接字作为一种面向连接的套接字,针对面向连接的TCP服务应用[11],适用于局域网内的大数据传输,且传输稳定性强。
本文基于.NET平台开发油田OPC分布式共享可视化展示网站,并将网站通过IIS发布在与中间服务器同一节点的Web服务器上,为用户查看生产数据提供Web支持。当用户向Web服务器发送请求时,采用Socket通信技术建立连接。首先,在连接双方即Web服务器和客户端分别建立套接字;其次,建立套接字以后的Web服务器与客户端经过“三次握手”实现连接。因为联合站库点位相互独立,它们的变化不具有同步性,所以用户浏览器页面所监控的站库点位数据如果采用易于实现的全局刷新的方式建立Socket通信是没有意义的。Socket通信流程图如图4所示。
图4 Socket通信流程图Fig.4 Flowchart of socket communication
本文采用了一种异步的Java Script和XML(AJAX)异步刷新和定时器综合应用的方式,定时向Web服务器发出请求。Web服务器会在所建立的Socket连接的基础上启动多个线程访问缓冲池,无需等待便可并发执行数据采集任务;同时,在客户端,采用JavaScript处理来自Web服务器的响应。这使得在Web服务器和浏览器之间交换的数据大量减少,响应更快。同时,很多处理工作可以在发出请求的客户端机器上完成,减少了Web服务器的处理时间。更重要的是,AJAX能在不刷新整个页面的前提下维护数据,这使得Web服务器能够更为迅捷地回应用户动作,避免了对未改变的数据的重复性操作。
本文通过分析联合站工业生产基本流程,结合过程数据传输标准——OPC规范技术,研究并开发了暂存油田数据的中间服务器,实现了实时数据库与中间服务器之间的无差别共享;油田OPC分布式共享可视化展示网站利用.NET服务器、优化的动态缓存和Socket数据通信等技术,实现了现场数据的网络客户端展示。整套系统可实时、准确地获取最新的现场数据,从而安全、可靠地对现场设备进行控制。
[1] 潘大胜.分布式异构资源库共享机制研究[J].吉林师范大学学报(自然科学版),2012,11(4):131-133.
[2] 蔡明章,李昊,甘洋,等.基于OPC-DA服务器的应用研究与设计[J].云南大学学报,2014,36(S1):12-16.
[3] 王大鹏,苏孝国,王涛.基于C#语言的工业计算机与57-1200的OPC通讯[J].自动化与仪器仪表,2014,34(11):147-150.
[4] 鲍坤,孙学华.OPC在数据交互系统中的应用[J].自动化仪表,2012,33(10):17-19.
[5] 王杰,高昆仑,王万召.基于OPC通信技术的火电厂DCS后台控制[J].电力自动化设备,2013,33(4):142-144.
[6] 苏磊,李茜,汤伟.OPC数据访问客户端的研究与实现[J].计算机工程,2010,36(11):80-82.
[7] 曹红萍,江山,邹玉兵,等.Net平台的OPC DA客户端开发[J].自动化仪表,2012,33(9):45-48.
[8] 顾亮,饶丰等,寇东升.OPC技术结合.NET架构在系统集成项目中的应用[J].制造业自动化,2006,28(7):74-77.
[9] 戚中奎,林果园,孙统风.OPC数据访问服务器的研究与实现[J].计算机工程与设计,2011,32(4):1517-1520.
[10]赵春玲.NET平台下开发三层架构WinForm应用程序简介[J].信息技术与信息化,2010,4(9):33-35.
[11]欧军,吴清秀,裴云,等.基于socket的网络通信技术研究[J].网络安全技术与应用,2011,11(7):19-21.
Application of the OPC Technology in Distributed Sharing System of Oilfield
In order to solve the communication issue between monitoring configuration software of different vendors in oilfield united station,the oilfield distributed data sharing system is designed by using OPC interfacing technology.The communication among data acquisition systems of mutually independent united stations and the distributed data sharing of oilfield stations in network clients are realized.Practical application shows that the system can acquire dynamic data and historical data of data sources in real time,capture all kinds of alarms and events in the process of control,and has a certain popularization value.
Oilfield united stationData sharingOPCIntermediate serverSocketData monitoringConfiguration softwareDistributed
任伟建(1963—),女,2006年毕业于大庆石油学院油气储运工程专业,获博士学位,教授;主要从事复杂系统的建模与控制方向的研究。
TH86;TP274+.2
ADOI:10.16086/j.cnki.issn 1000-0380.201610002
国家自然科学基金资助项目(编号:61374127);
黑龙江省博士后科研启动资金基金资助项目(编号:LBH-Q12143)。
修改稿收到日期:2016-02-21。