OPC数据访问服务器中主要包括3类对象:服务器(OPC server)、组(OPC group)、和项(OPC i-tem)。服务器对象维护自身的信息,并作为组对象的容器,通过它获得其他对象和服务的起始类,可用于返回OPC Group类对象;组对象维护自身的信息,同时为数据项( item)提供容器并逻辑组织数据项,用于返回OPC Item类对象;数据项对象存储具体item的定义、数据值、状态值等信息,一个item就代表一个具体的过程变量,每个数据项都有值(value)、品质(quality)、时间戳( timestamp) 3个属性。
进行OPC数据访问时,首先,OPC客户需连接到OPC服务器上,并建立OPC group和OPC item,这是OPC数据访问的基础;其次,客户通过对其建立的group和item进行访问实现对过程数据的访问;然后,当服务器响应客户的过程数据访问请求并处理完毕时通知客户。系统中主要实现函数如下:
(1)CoInitialize():初始化COM库;(2) CLSIDFromProgID ( ):将ProgID变换成CLSID;(3)CoCreateInstance():建立与OPC服务器的连接,该函数可以创建一个OPC Server实例;(4)QueryInterface ( ):得到其他OPC接口指针;(5)AddGroup():创建OPC组;(6)AddItem():添加OPC数据项;(7)Write():进行写操作;(8)Read():进行读操作;(9)RemoveItems( ):移除OPC group内的i-tems;(10)RemoveGroup():移除OPC group;(11)Release():释放内存。
编写OPC客户端程序,首先要初始化COM库,得到服务器的CLSID;然后由CoCreateInstance()连接服务器,同时得到IUnknown接口指针,使用该接口的QueryInterface( )方法得到其他OPC指针;利用IOPCServer接口的AddGroup( )和Re-moveGroup()方法实现对OPC group的操作;利用IOPCItemMgt接口的AddItem()和RemoveItems()方法实现对OPC items的操作;利用IOPCSyncIO接口的Write()和Read()方法实现读写操作;最后在程序停止运行前,必须使用相应接口的Release()方法,释放内存[8]。
2 运行效果本软件自2007年8月在实验室试运行,数据采集正常,界面友好,达到了预期的效果,其中某时间段的温度采集数据如表1所示,趋势图如图6所示。
相关热词:采用 VC 开发 智能 建筑 系统 集成 软件 设计