摘 要:本文介绍了OPC技术在智能建筑系统集成中的运用,设计了基于OPC技术的建筑物集成管理系统的模型,并给出了OPC数据访问服务器和OPC在客户端的具体实现方法。
1 引言
智能建筑(Intelligent Building,IB)是20世纪80年代中期随着控制技术的发展而出现的。到了现成,随着计算机网络和通信技术的发展,智能建筑、智能小区在我国已经成为最热门的话题之一。
建筑物集成管理系统(Integrated Building Management System,IBMS)是一种以实现楼宇自动化系统集成为重点,广泛涉及通信自动化系统和办公自动化系统的集成系统。
智能建筑系统的信息集成包括了底层控制网的集成、控制网与局域网的集成、局域网与信息网的集成。本文分析和研究了用OPC技术实现智能建筑信息集成的方法并给出了OPC服务器和OPC客户端的具体实现方法。
2 OPC的体系及服务模式
OPC是一种设备服务器的标准接口,它能够被连接到I/O装置、PLC、现场总线等,该技术能提供一种即插即用的硬、软件组合,使用户很容易地将它们集成为完整的自动控制系统。目前,由于设备的不同和开发商的不同,各种自动化系统都设计了各自专用的接口,这样就导致了不同的开发商设计生产的产品不能实现互相通信,因而不具有互操作性。而且,对大型的集成系统来说,在软、硬件组件的选择上受到很多的限制,浪费了大量的财力却不能保证所集成系统的质量。OPC标准出现以后,对于依据OPC标准软、硬件组件来说,由于它们都遵循单一的、标准的通信规约,系统的集成变得容易了,系统的造价也会降低。
利用OPC技术开发的服务器提供了现场设备与应用软件之间的接口,其体系结构如图1所示。
在应用程序一边,有两个接口:定制(Custom Interface)和自动接口(Automation Interface)。定制接口主要用于用C/C 环境的高效率、高性能的应用,自动接口主要用于脚本语言如VB、Delphi的应用。在设备端,遵循OPC标准的现场设备可与OPC服务器通信,OPC服务器就相当于设备驱动器软件。在这种结构中,OPC服务器对现场设备而言是客户端,而对应用程序而言,它又是服务器端。这样,OPC服务器在现场设备与应用程序之间起到了接口的作用,使得应用程序与设备之间的通信变得简单易行。
3 IBMS的设计思路
OPC规范的引入,使得楼宇控制系统中硬件软件的配置更加灵活。如图2所示。
由图我们可以知道,硬件制造商只要开发出符合OPC规范的驱动程序(图2中的OPC服务器),就可以一劳永逸,因为这个服务器能够被所有符合OPC规范的客户软件所应用。而应用软件开发商只要开发出带OPC客户接口的应用软件,就可以和所有提供OPC服务器的硬件或者其它软件交互。
这样的系统可以很方便地修改和升级,增加一个设备(当然需要提供OPC服务器),所有的应用软件都可以与之进行数据交互;增加一个应用软件,只要它能够提供OPC客户接口,那么它也能和所有的硬件进行数据交互。
进一步地,如果将硬件设备驱动器程序和通信程序封装成独立的OPC服务器或者在一个软件中既带有OPC客户接口,同时也能够提供OPC服务器接口,那么它们就可以做到嵌入式运行。这样做使得系统的模块化、开放性、重用性和灵活性大大提高。不同厂商的应用软件和现场设备只要提供符合OPC规范接口,它们就可以很方便地集成到整个系统中去,从而可以系统的灵活配置和多个子系统的真正集成。
本文所设计的智能建筑集成管理系统(IBMS)正是基于这样一种思路。其系统总体结构如图3所示。
如图,各子系统通过OPC客户接口与符合OPC规范的现场设备(目前,OPC基金会成员数已达到200多家,包括了世界上大多数比较著名的设备制造商)实现数据交互;而中央监控站各应用软件亦通过OPC客户接口与提供OPC服务器接口的各子系统实现数据交互。这样,通过标准化的OPC客户接口和OPC服务器接口,中央监控站就可以和各子系统及现场设备进行数据通信,从而达到控制和管理的目的,实现了系统的集成。这样的系统,可以大量地使用不同生产商的硬件设备和应用软件,只要它们是符合OPC规范的,在系统的集成中就不会带来任何困难。
同时,采用OPC规范对于系统的修改和升级也带来了极大的方便。在系统增加硬件设备或应用软件时,只需要求该硬件设备或应用软件符合OPC规范,即硬件设备需要提供OPC服务器接口,而应用软件需要带有OPC客户接口(至于应用软件是否需要带有OPC服务器接口,这要根据实际应用需要来确定。如果此应用软件还需要向上级应用提供服务,则必须带有OPC服务器接口;否则不必带OPC服务器接口),就可以方便地将硬件设备或应用软件加入到系统中,实现系统的无缝集成。
4 OPC服务器的实现
4.1 OPC服务器
OPC服务器规范包括3种:OPC数据访问规范、OPC报警与事件规范和OPC历史数据访问规范。
OPC数据访问(Data Access)规范??
从总体上说,一个OPC数据服务器包括三类对象:服务器(Server)、组(Group)和项(Item)。OPC服务器对象维护有关服务器的信息并用作OPC组对象的容器,而OPC组对象维护组的信息,提供包容OPC项的机制,并管理OPC项。
OPC组提供了客户程序组织数据的手段。有两种类型的组:公共(Public)组和局部(Local)组。公共组可以被多个客户共享,而局部组只能被一个客户使用。每个组中都可以定义一个或多个OPC项。
OPC项代表了与服务器中的数据的连接。客户程序对OPC项的操作都是通过包容此项的OPC组来进行的,而不是直接把OPC项作为一个对象来操作。每个OPC项都有值(Value)。品质(Quality)和时间戳(Time Stamp)三个属性。
OPC报警与事件(Alarms and Events)规范
通过OPC报警与事件规范提供的机制,当I/O设备中有指定的事件或报警条件发生时,OPC客户程序可以得到通知。通过此接口,OPC客户程序还可以知道OPC服务器支持哪些事件和条件,并能得到其当前状态。
OPC历史数据访问(Historical Data Access)规范??
目前OPC规范支持以下历史数据服务器。??
●简单趋势数据服务器它只提供原始数据和简单存储功能。??
●复合数据压缩和分析服务器它可以提供数据压缩功能以及数据汇总与分析功能,如平均值、最大值、最小值等。??
4.2 数据访问服务器的实现
OPC数据访问服务器对象提供了一种访问(读/写)数据源的方法。客户能访问什么类型的数据源由服务器对象执行的功能决定。OPC标准规定了两种数据访问服务器对象接口,即OPC数据访问定制接口和OPC数据访问自动化模型。OPC数据访问定制接口以C 语言开发,适用于C 或VC 客户应用程序;OPC数据访问自动化模型是为需要使用OPC自动化接口即使用VB或Delphi等语言的客户应用程序而设计,该服务器对象的服务规则是通过对象的属性、方法和事件的组合来实现的。本文按照OPC数据访问自动化规范来设计数据访问服务器对象。
根据OPC数据访问自动化规范并结合楼宇自动控制的实际,本文设计数据服务器对象的层次模型,如图4所示。
在图4中,数据访问服务器是我们必须创建的,它包容了一个现场设备组(FDs)和创建了一个OPC浏览器对象。现场设备组包容了在本服务器中所有创建的现场设备(FD)。现场设备对象的作用是维护状态信息和为数据访问服务提供一种机制。数据组(Datas)包容了本服务器中所有创建的数据对象(Data),并与现场设备相对应。数据对象维护本项的定义、当前值、状态信息和最后更新时间。OPC浏览器对象在服务器的配置中命名,一个OPC服务器对象仅存在一个OPC浏览器对象。
前文提到,数据访问服务器对象的访问规则是通过对象的属性、方法和事件来实现的。这可以通过数据访问服务器的对象类设计来说明。
(1)DataAccServer类DataAccServer是由客户应用程序实例化的,它包含一个OPCServerConnect方法,用于帮助客户获得DataAccServer的一个实例,ServerShutDown用于释放对该服务器对象的引用。GetOPCServers方法用于返回已注册的服务器的名字(ProgIDs),将名定(ProgIDs)之一用于OPCServerConnect方法中。实例化一个数据访问服务器的例子如下:
连接到第一个从GetOPCServers返回的已注册的OPC服务器对象
的实例为FD1,FD2,……。FD类除了包含所有附于OPCGroup的属性外,还根据楼宇自动控制的需要增加了FDNo,ChanNo,和UpDataRate等。
(3)FDs集合FDs集合不仅可以使客户访问DataAccServer的FDs集合,通过其Item方法还可以访问单一的FD对象。Add方法用于增加一个FD对象,Remove方法用来删除一个FD对象,PropertySet方法用来修改FD对象的属性值。
访问FDs中一个FD对象的例子如下:
(4)Data类Data类包含了实时数据的所有属性,如值(Value),品质(Quality),时间戳(TimeStamp)等。Read方法实现从Cache中读数据,Write方法实现向Cache写数据。Data类的实例为Data1,Data2,……,实际上是从现场设备得来得一些温度、压力等数据。
(5)Datas集合Datas集合是客户应用程序可以对一组Data对象进行操作。用AddItem方法增加一个Data对象,用Remove方法删除一个Data对象,SetDataTypes方法则用来设置Data对象的数据类型。
4.3 OPC客户端的实现
客户应用程序访问OPC服务器是通过调用OPC数据访问服务器所提供的方法、属性和事件来实现的。在实现过程中,首先必须获取OPC服务器中的OPCServer对象,OPCServer是客户应用程序访问OPC服务器的唯一入口和实例化点。其次,用OPCGroup类的ADDGroup方法创建Group类对象。继而创建Item对象。在获取Item对象后,就可以进行各种读写操作了。在整个过程中,客户应用程序不需要理解OPC数据访问服务器的内部设计,而只需按照OPC服务器所要求的格式调用方法、属性和事件来实现就可以了。
客户程序读取数据的例子:

参考文献
[1]李林.智能太厦系统工程[M].电子工业出版社,1998年1月
[2]张炬,田虹.OPC在智能建筑系统集成中的作用[J].智能建筑技术,2000年第2期
[3]OPC Task Force.OPC Common Definitions[EB/OL].http://www.opcfoundation.org,1998
[4]OPC ask Force.OPC Data Access 2.0[EB/OL].http://www.opcfoundation.org,1998
[5]贾宏宇,施仁.基于OPC的工控软件的设计[J].工业控制计算机,1999(2),2―3
[6]许宝祥,等.过程控制系统中的OPC技术[J].冶金自动化,1999年第6期
[7]王德康,等.基于OPC的先进控制软件设计与研究[J].化工自动化及仪表,2000,47(4)
[8]王育钢,等.基于OPC的过程控制软件[J].沈阳化工学院学报,2000,6,第14卷,第2期