基于OPC XML-DA技术的服务器与客户端实现

2018-04-10 00:54赵子龙周卫斌游国栋
通信电源技术 2018年1期
关键词:工控风电场客户端

赵子龙,李 妮,周卫斌,游国栋

(天津科技大学,天津 300222)

0 引 言

全球能源日益枯竭,环境污染问题逐步凸显,可持续能源的开发、利用尤为重要,其中以风能为代表的风力发电技术越来越受到世界各国的高度关注。为了能够高效、灵活地应用风能资源发电,使风电机组稳定可靠运行,考虑采用风电场监控与数据采集(SCADA)系统解决该问题。系统主要对现场数据实时采集、调节运行参数、查询历史数据以及故障报警。目前我国风电场SCADA系统的底层PLC监控普遍采用国际标准OPC协议进行通信,该技术的应用在很大程度上解决了各工控PLC厂家之间通信难的问题。但是随着工业监控领域的发展,OPC的应用只局限于本地局域网,无法通过防火墙、不支持互联网通信的弊病越发明显[1]。本文重点分析了OPC XML-DA通信协议的开发,将其应用到SCADA系统中以实现可靠的远程通信,解决现有SCADA系统中OPC通信协议无法与互联网连接的弊病。

1 OPC及OPC XML技术简介

随着工业信息技术的发展,传统工业控制系统中不同厂家的非标准通信方式导致系统的可靠性、稳定性及扩展性较差,不利于系统的后期拓展及维护,阻碍了工控行业的自动化、智能化发展。为了解决软硬件设备之间的数据接口问题,OPC技术随之产生。它将OPC客户与服务器在物理上分开,减少硬件制造商和软件开发商之间的依赖,极大地提高了双方的工作效率;有效解决了工控行业复杂驱动程序造成的数据接口问题,减少资源浪费,提升通信质量等[2]。

由于OPC DA技术不能满足互联网远程监控的需求,故OPC基金会推出OPC XML-DA规范着重解决OPC DA技术的集成性、通用性和开放性等问题。OPC XML规范根据Web Service整体概念,将OPC应用扩展到互联网,使得企业能够通过Internet发布OPC通信指令,为解决系统不能通过防火墙,仅限于本地局域网的问题提供了研究方向,从而高效实时地进行通信调度。

2 基于OPC XML-DA技术的监控系统服务器与客户端组成

传统的风电场监控系统由于采用OPC DA技术,故不支持互联网通信,仅局限于本地局域网。因此,本文针对风电场监控需求,提出采用基于OPC XML-DA技术的远程监控系统,并且介绍了OPC XML-DA服务器及客户端的具体组成。

2.1 OPC XML-DA服务器的组成

实现风电场的远程在线监控,关键是设计一个OPC XML-DA服务器,即在OPC DA服务器的基础上进行二次开发,通过一个XML封装器,将工控设备中已有的OPC DA服务器XML化,使系统在保持较高性能的同时满足跨平台集成的要求,并通过Internet传递数据[4]。

OPC XML-DA服务器与OPC DA服务器组成基本相同,由服务器对象(Server)、组对象(Group)和项对象(Item)组成。其中服务器对象提供数据源以及数据源访问的方法,可以动态的创建或释放组对象,由一个或多个OPC组对象及OPC浏览器对象组成。OPC组对象通过OPC项对象的集合进行数据访问,满足OPC应用程序要求的数据访问方式,由一个或多个OPC项对象组成[5]。其中OPC服务器的框架结构如图1所示。

图1 OPCDA服务器的框架结构图

OPC XML-DA服务器支持8种服务,具体类型有:Browse、Get Properties、Get Status、Read、Write、Subscribe、Subscription Cancel和Subscription Polled Refresh。

2.2 OPC XML-DA客户端组成

根据风电场监控系统的实际需求分析,OPC XML-DA客户端可以对OPC XML-DA规定的8项基本服务进行管理操作,此外还具有报警、报表、曲线显示等功能。

实现浏览OPC服务器的步骤包括:创建浏览器对象,通过该对象的接口获得OPC服务器名称列表,再添加OPC组对象及项对象,进行数据交换。读取标签数据。其具体实现过程如下:

(1)创建一个接口对象

Opc.IDiscovery discover=new OpcCom.ServerEnumerator();

(2)创建一个服务器对象,并实例化

Opc.Server[] servers=discover.GetAvailableServers(Specification.COM_DA_20, Dns.GetHostName(), null);

(3)连接服务器

KepServer.Connect();

(4)向服务器添加一个OPC组对象

registeredGroup=(Opc.Da.Subscription)KepServer.CreateSubscription(state);

(5)创建数据项item数组对象

Item[] items=new Item[ItemNum];

(6)向OPC组对象中添加OPC数据项item对象

registeredGroup.AddItems(items);

(7)读取kep组中的数据

public void ReadItemValue()

{

ItemValueResult[] values=registeredGroup.Read(registeredGroup.Items);

foreach (ItemValueResult item in values)

{

if (item.Quality=Quality.Good)

{

DataDic[item.ItemName].DataQuality=true;

DataDic[item.ItemName].DataValue=System.Convert.ToInt32(item.Value);

}

else

{

DataDic[item.ItemName].DataQuality=false;

}

}

}

(8)写入kep组中的数据

public void WriteItemValue()

{

int writeNum=0;

foreach (ItemDataClass itemData in DataDic.Values)

{

if (itemData.WriteOnce)

writeNum++;

}

if (writeNum > 0)

{

int tempcount=0;

ItemValue[] itemValue=new ItemValue[writeNum];

foreach (ItemDataClass itemData in DataDic.Values)

{

if (itemData.WriteOnce)

{

itemValue[tempcount]=new ItemValue(itemData.DataItem);

itemValue[tempcount++].Value=itemData.DataValue;

itemData.WriteOnce=false;

}

}

registeredGroup.Write(itemValue);

}

}

}

(9)断开服务器连接

KepConnected=false;

3 结束语

本文简要介绍了OPC XML技术及其实际应用。工业现场设备可以通过开发OPC XML-DA服务器和OPC XML-DA客户端实现企业的互联网在线监控,结合本地局域网监控,实现线上、线下双重监控,提高了监控质量和管理效率,使系统高效、经济、安全的运行。

参考文献:

[1]宋国辉.基于OPC XML-DA技术及.NET平台的远程监控系统设计[D].兰州:兰州理工大学, 2012.

[2]王华忠.监控与数据采集(SCADA)系统及其应用(第二版)[M].北京:电子工业出版社, 2010.

[3]卢建刚,方弢,许锋,王智,孙优贤.基于XM L技术的分布式现场总线远程监控系统设计[J].信息与控制, 2004,05(33):609-613.

[4]戚中奎,林果园,孙统风.OPC数据访问服务器的研究与实现[J].计算机工程与设计, 2011,04(32):1517-1520.

[5]马亮,张志鸿.OPC DA服务器的设计与实现[J].微计算机信息, 2008,09(24):228-230.

猜你喜欢
工控风电场客户端
工控编程编译工具应用现状分析及展望
工控系统脆弱性分析研究
数字化风电场后评估指标体系研究
《海上风电场设施施工检验指南》(GD01—2020)发布
如何看待传统媒体新闻客户端的“断舍离”?
基于PSS/E的风电场建模与动态分析
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
巴基斯坦风电场环网柜设计
大枢纽 云平台 客户端——中央人民广播电台的探索之路