新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 利用OPC實現VC應用程序與PLC的數據交換

        利用OPC實現VC應用程序與PLC的數據交換

        作者: 時間:2011-09-11 來源:網絡 收藏

        本文引用地址:http://www.104case.com/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結構數組進行初始化。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 鄂尔多斯市| 泰和县| 延长县| 邵武市| 泾源县| 屏东县| 滕州市| 方正县| 谷城县| 玛纳斯县| 鄂伦春自治旗| 漳平市| 永仁县| 彭水| 静宁县| 即墨市| 遵义县| 江门市| 南阳市| 晋江市| 松原市| 称多县| 柞水县| 沅陵县| 鸡东县| 方正县| 延长县| 定远县| 镇平县| 修水县| 洛南县| 海盐县| 东丰县| 武定县| 翼城县| 全南县| 天全县| 玉溪市| 大港区| 乌兰察布市| 西乌珠穆沁旗|