电子工程专辑互动社区>自由讨论>嵌入式系统专区>OPC七日谈<转贴>
作者 问题:

OPC七日谈<转贴>

发布时间:2007-1-22 下午4:26

作者: somesome

等级: 遁门入道

积分: 304分

发帖数: 92次

网站总积分: 304分

经验值: 14.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭
我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。
  
  第一天
  
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
  opccomn_ps.dll
  opcproxy.dll
  opcdaauto.dll
  OPCTrend.ocx
  OPCBar.ocx
  OpcServer.exe
  OPCJDADemoServer.exe
  
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
  后面两个是demo 服务器。
  
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
  服务器。安装了(注册)。
  
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,
  
  点击连接服务器图标,立即出现了三个:
  OPCJ.SAMPLESERVER.1
  OPCJ.DADEMOSERVER.1
  HEXATEC.PCDATA
  
  第三个是opcconnect上download的计算机基本情况的简单程序。
  
  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
  人敢学,也就没有市场。
  
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。
  第二日
  今天先看书。
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。
  
  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
  
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。
  
  书上对OPC体系有描述,我画了个图。
  

  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
  
  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
  
  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。
  
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
  
  我在第一天中安装的几个DLL中:
  OPCcomn_ps.dll 通用接口
  OPCdaAuto.dll 自动化接口
  OPCProxy.dll PROXY-STUB
  
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
  
  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
  
  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
  
  按照书上的顺序,先了解OPC的数据组织。我也画了图。
  

  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。
  
  根据书的介绍,要访问标签,还有其他工作要做。
  我累了。明天再说。
  
  第三天
  昨天说到访问标签先要做些事。
  
  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。
  
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
  
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
  直接运行,没问题,看到了数据的变化,决定看其原代码。
  
  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
  
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。
  
  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
  
  我给自己留下了两个问题:
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。
   2÷如何访问ITEM,取得其数据等。
  
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
  今天到此为止,
  休息
  
  第四天
  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。
  
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
  
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
  
  我添加一个组,在其下面建立标签集合,然后用:
  标签组的ADDITEM方法获得句柄。
  用同步读方法就可以得到每个标签的数据。
  
  我发现有问题。昨天我就发现有问题。
  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
  
  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况
  bch1(树枝)
  tag11(叶子)
  tag12 (叶子)
  bch2
  tag21 (叶子)
  bch22 (树枝)
   tag221 (叶子)
   tag222 (叶子)
  
  
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222
  应该用OPCSERVERBROWSER的GetItemId()获得。
  
  修改程序,OK。
  
  还有什么问题,本机服务器的枚举。
  明天再说吧。ZZZzzz
  
  第五天
  
  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。
  
  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。
  我选择了一个网站:
  www.kepware.com
  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......
  
  枚举OPCServer的法子:
  Dim ServerList as Variant
  Dim i as Integer
  Serverlist=anOPCServer.getOPcServer(node)
  List1.clear
  FOR i=lbound(Serverlist) to ubound(Serverlist)
   List1.additem serverlist(i)
  NEXT I
  
  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。
  找到了枚举服务器的办法,在单机上成功。
  其实《入门》也提供了一个DOC文档,是OPC提供的:
  Data Access Automation Interface Standard Version 2.02
  
  是一个必须的手册,只是有一些错误。错误总是难免的。
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
  
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。
  
  第六天
  
  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
  
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
  
  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。
  
  下午休息。
  
  第七天
  
  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
  
  我想起了第一天安装的那些DLL,还要么。试一下
  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。
  OPCcom_pas.dll 通用接口
  OPCAutoda.dll 自动化接口
  OPCProxy.dll PROXY-STUB
  
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
  
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。
  
  后记
  这是一次入门的学习,本身没有什么。我却有些感想。
  
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有
   OPC ALARM & EVENT 报警和事件
   OPC DX 服务器间数据交换
   OPC SECURITY 安全
   OPC HISTIRDATA 历史数据库
   OPC XML XML
   OPC .NET FOR .net
  这些对于一种工控软件是比不可少的。
  
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
  
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
  
  总算对OPC有了些感觉,累,也甜。
???标签: ic ti 系统 技术 it 应用
引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0) 有新回复时发送邮件通知
电子工程专辑让移动设备的充电安全性永不为患
第1楼

回复主题:OPC七日谈<转贴>

发布时间:2009-6-28 下午4:46

作者: bingyusky

等级: 初入江湖

积分: 121分

发帖数: 12次

网站总积分: 123分

经验值: 0.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭
haotie
一个大学生完成电子设计的全过程 值得一读 (下载2666 次) 书上学不到的~某高手谈开关电源设计心得,经典~ (下载2579 次)
运放和比较器的根本区别 (下载2239 次) 焊接工艺(花了很多时间整理,图文并茂) (下载2672 次)
电子电路制作大全[PDF共6本] (下载128273 次) WiFi模块全总结 (下载4319 次)
引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0)
电子工程专辑关于华为与华为手机的八大解析
第2楼 回复主题:OPC七日谈<转贴> 发布时间:2009-7-24 上午9:01

作者: 东方木

等级: 初入江湖

积分: 102分

发帖数: 3次

网站总积分: 105分

经验值: 0.0

查看用户的所有发言

查看用户的个人e空间

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件 关闭
好文章
硬件工程师手册 (下载3523 次) linux内核修炼之道 ——方法论 (下载1510 次)
Cadence完全学习教程(上) (下载2293 次) 黑魔书[中文版]_全 (下载21162 次)
C语言常用算法程序集 (下载10858 次) 电路设计技术与技巧 342页(已更新为免费的) (下载49672 次)
引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0)

与?ic,ti,系统,技术,it?相关的话题
?
快速回复
用户名:?
美国的游客?????? (您将以游客身份发表,请登陆 | 注册 ) ?
标题: * 你还可以输入80
评论: * 你还可以输入10000
分享到: 新浪微博?? qq空间?? qq微博?? 人人网?? 百度搜藏??
验证码: ?*?
维护专业、整洁的论坛环境需要您的参与,请及时举报违规帖子,如果举报属实,我们将给予相应的积分奖励。
谢谢您的热心参与!
返回嵌入式系统专区 | 返回自由讨论
本论坛仅陈述专家或个人观点,并不代表电子工程专辑网站立场。
返回论坛页首
有问题请反馈