首页 理论教育OPCDA规范与现场总线应用技术

OPCDA规范与现场总线应用技术

【摘要】:OPC规范分很多种,每一种规范都针对不同的问题提供对应的解决方案,其中OPC DA规范在OPC各种规范中最为重要。本节只研究OPC数据存取定制接口规范。

OPC规范分很多种,每一种规范都针对不同的问题提供对应的解决方案,其中OPC DA规范在OPC各种规范中最为重要。OPC规范包括定制接口和自动化接口两种规范,其中前者是OPC服务器必须实现的部分,是开发OPC数据存取服务器的主要依据;后者使解释性语言和宏语言访问OPC服务器成为可能。本节只研究OPC数据存取定制接口规范。

1.OPC DA的对象

基于OPC DA规范的OPC服务器一般包括三个对象:服务器(Server)对象、组(Group)对象和项(Item)对象。

服务器对象用于提供它本身的信息,也是组对象的容器,每个服务器对象可以包含多个组对象。服务器对象主要负责管理和创建组对象,同时为客户端提供访问服务器的接口函数。

组对象提供它本身的信息,同时用于创建、组织和管理项对象,客户端可对其进行读写,还可设置客户端的数据更新速率。组对象和服务器对象是比较复杂的COM对象,具有定义完备的COM接口,是OPC服务器必须实现的两个组件对象。一个组对象可以包含若干个数据项。

OPC数据项是服务器端定义的对象,通常指向设备的一个寄存器单元,OPC客户端对设备寄存器的操作都是通过数据项来完成的。数据项不能独立于组存在,必须隶属于某一个组。

2.OPC DA的接口

OPC DA规范定义的对象接口及客户端调用过程如图2-36所示,星号接口表示OPC DA 3.0规范的新接口。

OPC接口规范规定了各接口内必须包含特定的方法与属性,供客户端调用以实现特定的功能。

例如,IOPCServer接口可以动态创建及管理组对象,该接口包含AddGroup、GetError-String、GetStatus、GetGroupByName、CreateGroupEnumerator和RemoveGroup六个接口函数。其中,AddGroup添加服务器对象的组对象,GetErrorString返回错误信息,GetStatus可获得OPC服务器的当前状态,GetGroupByName可以通过Group名称来查询需要的接口,RemoveGroup用于删除Group对象。

数据通信是通过OPC客户端对OPC服务器的多次调用完成的。

以同步读写为例,OPC客户端首先创建OPCServer服务器对象,由该对象的IUnknown接口查询到IOPCServer接口,再通过调用IOPCSever接口成员函数AddGroup,根据客户端需要增加多个OPCGroup组对象。

978-7-111-55649-7-Chapter02-49.jpg

图2-36 OPC DA规范定义的对象接口及客户端调用过程

然后OPC客户端调用OPCGroup组对象的IOPCItemMgt接口成员函数AddItems,增加实际数量的项对象,即创建OPCItem项对象。

接着调用OPCGroup组对象的IOPCSyncIO接口成员函数Read和Write读写该组所包含的OPCItem项对象的属性,即实际数据值。

最后OPC客户端在退出时释放所有的接口并依次删除OPCItem、OPCGroup和OPCServer对象。

下面对部分重要接口进行简单介绍,具体规则参考相应的OPC规范。

(1)服务器对象接口

1)IUnknown接口要实现接口查询和生存期控制这两个COM接口必备功能,OPC服务器对象与OPC组对象必须提供IUnknown接口。该接口的函数实现一般由Microsoft公司提供。(www.chuimin.cn)

2)IOPCCommon接口提供设置和查询LocaleID的功能。

3)IOPCServer接口是OPC服务器对象的主要接口,它可以动态创建及管理组对象。

4)IOPCBrowse接口用来浏览服务器地址空间与获取项对象的属性。

5)IOPCItemIO接口可以将项对象的时间邮戳和品质信息直接写进OPC服务器。

6)IConnectionPointContainer接口提供了相对于IOPCShutdown出接口连接点的访问支持。

7)IOPCItemProperties接口用于浏览与ItemID相关的属性。

(2)组对象接口

1)IOPCItemMgt接口可以提供客户程序添加、删除和控制组对象内的项对象的功能。

2)IOPCGroupStateMgt接口用于获得组对象的当前状态和设置组对象的状态和属性。

3)IOPCAsyncIO2接口用于对OPC服务器进行异步读写操作时,当操作完成时以回调消息的形式通知客户端IOPCDataCallback接口,并返回该事务的操作结果。

4)IOPCAsyncIO3接口继承IOPCAsnycIO2接口,主要用于把品质信息和时间邮戳以异步方式写入支持该项功能的OPC服务器中,也可以异步读取组对象中项对象的信息。

5)IOPCSyncIO接口允许客户端对服务器执行同步读写操作,直到读写完毕才会返回。

6)IOPCSyncIO2能够实现把品质信息和时间邮戳写到支持该功能的OPC服务器中。

7)IConnectionPointContainer接口管理出接口IOPCDataCallback,可使客户端与服务器连接并进行最有效的数据传送。

3.OPC的数据访问方式

在OPC DA 3.0规范中有三种可用的数据交互的方式:同步数据访问、异步数据访问以及订阅式数据访问。

同步数据访问方式下,OPC客户端程序对OPC服务器进行相关操作时,必须等到OPC服务器对应的操作全部完成以后才能返回,在此期间OPC客户端程序一直处于等待状态。因此,同步数据访问方式适用于OPC客户端程序较少、数据量较小的场合。

异步数据访问方式下,OPC客户端程序向服务器发出请求后立即返回,继续进行其他操作,OPC服务器在完成该请求后再通知OPC客户端程序。因此,异步数据访问方式适用于OPC客户端程序较多、数据量较大的场合。

订阅式数据访问方式是OPC客户端与OPC服务器通信方式中的一种比较特殊的异步读取方式,当OPC客户端通过订阅后,OPC服务器会通过一定的机制将变化的数据主动传送给客户端程序,客户端得到通知后再进行必要的处理,而无须浪费大量的时间进行查询。