刘廷才,王 坚,戴毅茹
(同济大学 CIMS中心,上海 200086)
传统工控系统中,客户端应用程序从数据源(如现场设备)读取数据需要为不同的客户端应用程序编写不同的驱动程序。这种情况下会导致开发成本的增加、重复性的开发、驱动程序不一致和数据访问冲突等问题,无法适应当今工控系统的开放性要求。OPC(OLE for Process Control)是OPC基金会组织倡导的工业控制和生产自动化领域中使用的硬件和软件的接口标准[1]。它根据微软的OLE/COM/DCOM技术来达成自动化控制的协定。OPC将硬件制造商与软件开发商联系起来,通过硬件厂商提供的OPC Server接口,软件开发人员无需考虑各种不同硬件间的差异,只需遵循OPC数据接口协议便可轻松地从硬件端取得所需的信息。
本文将简述民用飞机生产能源管理系统利用OPC技术,实现从数据源(现场设备)采集数据的实现过程。
系统的总体架构如图1所示。民用飞机生产能源管理系统主要包含能源介质管理、设备管理、能耗统计、能源计划管理、能源供需平衡管理等传统的能源管理模块,以实现对公司能源介质、能耗设备、已消耗的能耗历史数据的管理;此外还包含实时数据管理模块,实现对各厂房车间的能耗设备的实时数据(如各相电流、有功功率、视在功率等)的监测管理。由于OPC技术十分适宜于实时数据的采集,所以 “实时数据管理”模块的实现主要基于OPC技术在数据采集过程的应用。
图1 民用飞机生产能源管理系统总体架构Fig.1 The architecture of the civil airplane manufacture energy management system
OPC技术是由OPC服务器和OPC客户端应用两部分组成。OPC服务器负责收集现场设备的数据信息,然后通过标准的OPC接口传送给OPC客户端应用。OPC客户端则通过标准的OPC接口接收OPC服务器采集到的数据信息。
OPC访问接口主要有两种:CUSTOM标准接口和OLE自动化标准接口,如图2所示。自定义接口是服务商必须提供的,而自动化接口则是可选的[2]。 其中,自定义接口是一组COM接口,主要用于采用C++语言的应用程序开发;自动化接口是一组OLE接口,主要用于采用VB,C#,DELPHI等编程语言的应用程序开发。
在OPC数据存取规范中,一个OPC数据存取服务器中包含三种层次的对象:服务器 (OPC Server)、组(OPC Group)和项(OPC Item)。OPC服务器对象维护有关服务器的信息并作为一个或多个组对象的容器,服务器对象巩固和优化各种客户端所请求的数据存取,利于提高与设备的有效通信;OPC组对象维护有关其自身的信息,可作为一或多个OPC项的容器并从逻辑上实现对这些项的管理[3]。OPC组可以分为公共组(Public)和私有组(Private)。公共组可以被多个客户端程序使用,而私有组只能被一个客户端程序使用;OPC项提供OPC服务器与数据源的连接,即每一个项都与一个相对应的的信号变量连接,它可以为OPC客户端提供信号变量的数值(Value)、 数据类型(Type)、 品质(Quality)以及时间戳(Time Stamp)等信息[4]。严格来说OPC项不属于COM对象,不提供与客户端的接口,所以所有对它的访问都必须通过包容此项的OPC Group对象完成的。
(1)连接OPC服务器。本例中使用的OPC服务器名称为:
String clsidOPCserver[5];//定义连接的服务器字段
Private object OPCserverObject =null;//定义连接对象
public OpcServer energySrv=null;//定义服务器对象
public OpcGroup energyGrp=null;//定义组对象
Type.GetTypeFromProgID(clsidOPCserver);//从服务器获取与指定程序标示符相关联的类型。
Activator.CreateInstance(OPCserverType);//创建连接实例
(2)添加组。
energySrv.AddGroup("energyGruop",true,500);
AddGroup定义了Group的三个重要的属性:
Group的名字: “energyGroup“;
Group的激活状态为 “true”,准备收发数据;
Group的刷新频率为500ms。
(3)添加数据项。
energyGrp.AddItems(aD,out arrRes);
这段程序的结果是添加具有已定义属性的指定的项。
(4)对OPC数据进行读写。OPC服务器中的数据项可以通过group组的DataChange事件触发来读取。
energyGrp.DataChanged += new Data Change Event Handler( this.energy Grp_Data Change ) ;//定义Data Change 事件
protected void energy Grp_Data Change(object sender,Data Change Event Args e)
断开OPC服务器
int rc=Marshal.Release Com Object(OPCserver Object);OPC server Object=null;
某飞机制造企业民用飞机生产能源管理系统的OPC技术主要应用于,对该企业各主要电柜的各相电流、有功功率、视在功率等数据的实时监测,其客户端程序软件运行结果如图3所示。
图3 民用飞机生产能源管理系统实时数据采集画面Fig.3 The real-time data acquisition screen of civil airplane manufacture energy management system
传统的能源管理系统一般包含能耗、计量设备的管理,能耗数据的管理,能耗的统计,报表的生成等功能模块。这些功能模块一般都是基于对企业能耗的历史数据的统计分析完成的,因此存在能源管理系统无法对各厂房、设备等能耗数据的实时管理,通过将OPC技术引入到能源管理系统可以有效的解决上述问题,实现能源管理系统对历史数据和实时数据的同时管理,大大提高了能源管理系统的功能范围,方便了企业用户。
OPC数据访问规范把硬件供应商和软件开发者分离开来,极大地减小了双方工作的耦合关系。软件开发人员无需了解硬件的实质和操作过程,只要严格遵循OPC数据访问规范便可访问OPC服务器中的数据。
目前,飞机制造企业能源管理系统的功能主要集中于对能耗历史数据的统计分析上,无法实现对实时能耗数据的管理。将OPC技术引入到能源管理系统很好的解决了上述问题,管理人员可以方便的通过该系统对厂区或设备的能耗数据进行实时的管理。
[1]OPC Data Access Custom Interface StandardVersion 2.04.OPC Foundation,2000.
[2]潘爱民.COM原理与应用[M].北京:清华大学出版社,1999.
[3]OPC Common Definations and Interfaces 1.0[S].OPC Fundation,1998.
[4]马云鹏,等.OPC通用接口与OPC服务器的注册[J].工业控制计算机,2000.
[5]Christian Nagel,Bill Evjen;李铭(译).C# 高级编程[M].北京:清华大学出版社,2008.