zoukankan      html  css  js  c++  java
  • 浅涉OPC Client

      from:http://www.wangchao.net.cn/bbsdetail_72542.html

      这个……从哪里说起呢……
      突然要写一个OPC Client,于是,就开始写了-v-
      开发工具:
      我用VC6比较熟,那就用这个了。
      OPC Client可以用两种接口Curstom interface和automation interface,既然用的是VC就可以直接用Curstom interface。
      OPC动态连接库:
      opc_aeps.dll
      opccomn_ps.dll
      opchda_ps.dll
      opcproxy.dll
      aprxdist.exe
      opcenum.exe
      全部先装上。
      资料:
      这个是一定要的了:OPC DA 2.05a Specification.pdf,连官方文档都没有,怎么混得下去。
      顺便:www.opcfoundation.org,这个是OPC官方网站。
    http://www.gongkong.com/tech/default.asp,中国工控网的OPC区也有不少资料。
      需要完成的功能:
      1. 连接,远程连接。
      2. 建组,删组,建项,删项。
      3. 遍历服务器点。
      4. 读,写,自动刷新点。
      那么,就开始写了:
      1. 先Get服务的CLSID,没有这个就连不上接口了。
      2. 通过CoCreateInstanceEx得到接口,需要用到的OPC接口有这么几个:
      IOPCServer(Server管理), 
      IOPCItemMgt(Item管理),
      IOPCBrowseServerAddressSpace(浏览服务器点),
      IOPCAsyncIO2(异步读写),
      IOPCSyncIO(同步读写),
      IOPCDataCallback(数据Callback)
      3. 成功得到IOPCServer就说明连接成功了。
      4. m_pIServer->AddGroup(),增加组,并得到IOPCItemMgt接口。
      5. m_pItemMgt->AddItems(),增加项。
      6. 可以用IOPCBrowseServerAddressSpace接口来得到项路径。
      服务器上项的存放是以树的形式。
      m_pIBrowse->ChangeBrowsePosition():到指定的位置。
      m_pIBrowse->BrowseOPCItemIDs():得到某一层的所有节点。
      7. 同步异步方式的读写。
      pIAsync2->Read(), pIAsync2->Write(), pISync->Read(), pISync->Write()
      8. 通过IOPCDataCallback::OnDataChange()来进行数据的自动刷新。
      以上,完成了。
      这里只是对步骤和要用到的接口做个简单的介绍。
      查找和阅读资料用了2天,写程序用了3天,做了一些简单的封装,现在凑活可以用了。
      希望对急着几天要K一个OPC Client的朋友能有所帮助。(王朝网络 wangchao.net.cn)

  • 相关阅读:
    C字符串处理函数
    C语言字符串函数大全
    那些闪亮的日子
    牛客网在线编程:幸运数
    牛客网在线编程:水仙花数
    [LeetCode]617.Merge Two Binary Trees
    [LeetCode]657.Judge Route Circle
    [LeetCode]141. Linked List Cycle
    五大算法:分治,贪心,动态规划,回溯,分支界定
    [LeetCode]387.First Unique Character in a String
  • 原文地址:https://www.cnblogs.com/gmth/p/2988836.html
Copyright © 2011-2022 走看看