新聞中心

EEPW首頁(yè) > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > 利用OPC實(shí)現(xiàn)VC應(yīng)用程序與PLC的數(shù)據(jù)交換

利用OPC實(shí)現(xiàn)VC應(yīng)用程序與PLC的數(shù)據(jù)交換

作者: 時(shí)間:2011-09-11 來源:網(wǎng)絡(luò) 收藏

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

  4.3 連接opc服務(wù)器

   客戶能夠連接到服務(wù)器上,并建立組和OPC項(xiàng),這是OPC訪問的基礎(chǔ),如果沒有這個(gè)機(jī)制,訪問的其它機(jī)能不可能[4]。連接 OPC服務(wù)器,OPC客戶需要事先指定計(jì)算機(jī)名(如果OPC服務(wù)器和OPC客戶不在同一臺(tái)計(jì)算機(jī)上)和OPC數(shù)據(jù)訪問服務(wù)器名 (RSI.RSView32OPCTagServer)。代碼如下:

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

  {

  CLSID OPCCLSID;

  HRESULT hRet=CLSIDFromProgID(ProgID,OPCCLSID);

  //將字符串ProgID轉(zhuǎn)換為唯一OPCCLSID

  if(IsRemote)

  //opc服務(wù)器和opc客戶不在同一臺(tái)計(jì)算機(jī)上

  {

  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服務(wù)器和opc客戶在同一臺(tái)計(jì)算機(jī)上

  {

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

  (void **)ppUnknown);

  }

  }

  4.4 創(chuàng)建OPC組

  IOPCServer接口的AddGroup()方法可以創(chuàng)建一個(gè)有指定名稱和屬性的OPC組。在調(diào)用該方法之前,可以使用上一步得到的Iunknown接口指針,通過QueryInterface()方法請(qǐng)求IOPCServer接口指針。代碼如下:

  ppUnknown->QueryInterface(IID_IOPCServer,(void **)pServer);

  //得到IOPCServer接口指針

  pServer->AddGroup(L,TRUE,500,1235,lTimeBias,fTemp,0,hOPCServerGroup, dwActualRate,IID_IOPCItemMgt, pOPCItemMgt);

  4.5 添加數(shù)據(jù)項(xiàng)

  IOPCItemMgt接口的AddItem()方法可以添加具有特殊屬性的指定數(shù)量的數(shù)據(jù)項(xiàng)。

  pOPCItemMgt->AddItems(ItemNumber,ItemArray,

  (OPCITEMRESULT**)pItemResult,(HRESULT **)pErrors);

  ItemArray 為OPCITEMDEF類型結(jié)構(gòu)數(shù)組,它包含數(shù)據(jù)項(xiàng)的詳細(xì)信息,客戶需要知道要進(jìn)行的數(shù)據(jù)在RSView32標(biāo)簽數(shù)據(jù)庫(kù)中的名稱、數(shù)據(jù)類型及作為 OPC服務(wù)器的RSView32項(xiàng)目名稱。添加數(shù)據(jù)項(xiàng)之前,要用這些數(shù)據(jù)項(xiàng)信息對(duì)ItemArray結(jié)構(gòu)數(shù)組進(jìn)行初始化。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉