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)

  • 相关阅读:
    区块链中的密码学
    初识nodeJS
    JS或jQuery获取当前屏幕宽度
    jQuery与Zepto的异同
    使用递归解决斐波那契数列的性能问题
    sass高级语法的补充
    sass的高级语法
    栅格 CSS中的循环 媒体查询
    Zepto
    dedecms 留言板中引用模板文件方法
  • 原文地址:https://www.cnblogs.com/gmth/p/2988836.html
Copyright © 2011-2022 走看看