4.4 创建OPC组
IOPCServer接口的AddGroup()方法可以创建一个有指定名称和属性的OPC组。在调用该方法之前,可以使用上一步得到的Iunknown接口指针,通过QueryInterface()方法请求IOPCServer接口指针。代码如下:
ppUnknown->QueryInterface(IID_IOPCServer,(void **)&pServer);
//得到IOPCServer接口指针
pServer->AddGroup(L"",TRUE,500,1235,&lTimeBias,&fTemp,0,&hOPCServerGroup, &dwActualRate,IID_IOPCItemMgt,& pOPCItemMgt);
4.5 添加数据项
IOPCItemMgt接口的AddItem()方法可以添加具有特殊属性的指定数量的数据项。
pOPCItemMgt->AddItems(ItemNumber,ItemArray,
(OPCITEMRESULT**)&pItemResult,(HRESULT **)&pErrors);
ItemArray 为OPCITEMDEF类型结构数组,它包含数据项的详细信息,客户需要知道要进行交换的数据在RSView32标签数据库中的名称、数据类型及作为 OPC服务器的RSView32项目名称。添加数据项之前,要用这些数据项信息对ItemArray结构数组进行初始化。
4.6 数据交换
成功地增加完所需要的数据项后,OPC客户(VC应用程序)和OPC服务器(RSView32)就可以进行数据交换了。在数据量不大的情况下,可以使用 IOPCSyncIO同步接口的Write()和Read()两个方法进行数据的读写操作,从而实现OPC客户(VC应用程序)和OPC服务器 (RSView32)之间的数据交换。代码如下:
ppUnknown->QueryInterface(IID_IOPCSyncIO,(void **)&pOPCSync);
//得到IOPCSyncIO接口指针
pOPCSync->Read(OPC_DS_CACHE,ReadNumber,hServerRead,&pItemValue,&pErrors);
//读ReadNumber个数据
pOPCSync->Write(WriteNumber,hServerWrite,WriteValue,&pErrors);
//写WriteNumber个数据
4.7 释放接口指针
在VC应用程序停止运行之前必须使用Release()方法删除已创建的OPC对象并释放内存。
5 结束语
OPC技术规范把硬件供应商和应用软件开发者分离开来,使得双方的工作效率都有了很大提高。软件开发商无需了解硬件的实质和操作过程,就能访问OPC数据服务器中的数据,尤其是开发商在已使用了组态软件进行实时监控的过程控制系统基础上,用C++等高级语言开发系统时,大大简化了过去从设备传输数据的复杂过程。在某铝厂的自动配料系统开发中,应用OPC技术方便地实现了VC应用程序和RSView32的数据交换,间接地实现了VC应用程序与PLC的通信,获得了很好的结果。
上一页 [1] [2] [3] 下一页