OPC组对象接口
OPC组对象的COM接口模型如图
(1)IOPCItemMgt接口及其成员函数的功能是允许OPC客户程序添加和删除项对象并可控制项对象的行为。
(2)IOPCGroupStateMgt接口及其成员函数允许客户程序管理组对象的所有状态,最基本的功能是改变组对象的更新速率和活动状态。
(3)IOPCPublicGroupStateMgt为可选接口,用于于将私有组对象转换成公共组对象,因为当客户创建一个组对象时,被初始化为私有组对象。
(4)lOPCSyncIO接口允许客户对服务器执行同步读/写操作,操作将一直运行到完成才返回。
(5)IOPCAsyncIO2接口允许客户对服务器执行异步读/写操作,操作被“排队等候”,函数立即返回。每项操作被看作一个“事务”,并被分配一个事务ID,当操作完成时,客户IOPCDataCallback接口的回调将执行。回调中的信息指出了事务ID和操作结果。
(6)IConnectionPointContainer接口:组对象必须实现此接口,与服务器对象的此接口的唯一区别是管理的出接口不一样,组对象管理的出接口是IOPCDataCallback接口,可使客户与服务器连接并进行最有效的数据传送。
(7)IOPCAsyncIO(old)接口是数据存取规范1.0必须实现的接口之一,按照程序兼容规则,符合规范2.0的服务器也应该实现规范1.0的必选接口。
(8)IDataObject(old)接口是OPC规范1.0需要服务器实现的接口,这允许使用OPC数据流格式创建客户与组对象之间的Advise接口,用于进行高效的数据交换。
OPC项
OPC项代表了与服务器里数据源的连接。从定制接口(Custom Interface)角度来看,一个OPC项不能被OPC客户程序作为一个对象来进行操作,因此,在OPC项中没有定义外部接口。所有对OPC项的操作都是利用OPC项的包容器(OPC组)或OPC项的定义来进行的。每个OPC项包含值(Value)、品质(Quality)和时间戳(Time S tamp)。值(Value)的类型是VARIANT,品质的类型是SHORT。值表示实际的数值,品质则标识数值是否有效,时间戳则反映从设备读取数据的时间或者服务器刷新其数据存储区的时间。应当注意的是项不是数据源,而只是与数据源的连接。OPC项应该被看成是数据地址的标识,而不是数据的物理源。OPC规范中定义两种数据源,即内存数据(cache data)和设备数据(device data)。每个OPC服务器都有数据存储区,存放着值、品质、时问戳,以及相关设备信息,这些数据称为内存数据。而现场设备中的数据则是设备数据。
OPC服务器总是按照一定的刷新频率通过相应驱动程序访问各个硬件设备,将现场数据送入数据存储区。这样对OPC客户而言,可以直接读/写服务器存储区中的内存数据。这些数据是服务器最近一次从现场设备获得的数据,但并不能代表现场设备中的实时数据。为了得到最新的数据,OPC客户可以将数据源指定为设备数据,这样服务器将立刻访问现场设备并将现场数据反馈给OPC客户。由于需要访问物理设备,所以OPC客户读取设备数据时速度较慢,往往用于某些特定的重要操作。