新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 利用OPC实现VC应用程序与PLC的数据交换

利用OPC实现VC应用程序与PLC的数据交换

作者:时间:2011-09-11来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/155781.htm

  4.3 连接opc服务器

   客户能够连接到服务器上,并建立组和OPC项,这是OPC访问的基础,如果没有这个机制,访问的其它机能不可能[4]。连接 OPC服务器,OPC客户需要事先指定计算机名(如果OPC服务器和OPC客户不在同一台计算机上)和OPC数据访问服务器名 (RSI.RSView32OPCTagServer)。代码如下:

  ConnectToServer(/*in */LPOLESTR ProgID,/*in*/ BOOL IsRemote,/*out */ IUnknown **ppUnknown)

  {

  CLSID OPCCLSID;

  HRESULT hRet=CLSIDFromProgID(ProgID,OPCCLSID);

  //将字符串ProgID转换为唯一OPCCLSID

  if(IsRemote)

  //opc服务器和opc客户不在同一台计算机上

  {

  COSERVERINFO ServerInfo;

  memset(ServerInfo,0,sizeof(ServerInfo));

  ServerInfo.pwszName=T2OLE(ServerComouter);

  MULTI_QI qi[1];

  memset(qi, 0, sizeof(qi));

  qi[0].pIID=IID_IUnknown;

  HRESULT hRet=CoCreateInstanceEx(OPCCLSID,NULL,CLSCTX_REMOTE_SERVER,

  ServerInfo,1,qi);

  *ppUnknown=qi[0].pItf;

  }

  else

  //opc服务器和opc客户在同一台计算机上

  {

  hRet=CoCreateInstance(OPCCLSID,NULL,CLSCTX_LOCAL_SERVER,IID_IUnknown,

  (void **)ppUnknown);

  }

  }

  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结构数组进行初始化。



评论


相关推荐

技术专区

关闭