QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10小时前
查看: 5942|回复: 8
收起左侧

[已解决] 谁有《OPC应用程序入门》请上传!

 关闭 [复制链接]
发表于 2008-5-30 23:27:04 | 显示全部楼层 |阅读模式 来自: 加拿大

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
/ D! O4 r- B  n
2 b2 y& U% i" K- r3 v/ F[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码
0 v, h, B2 ^9 G CSDN 下载频道
( U5 g8 C3 o2 P/ A
, U2 o: i- j- e. k% j. whttp://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)' H7 H. T& ?, e
9 M0 O* [9 Y. q
我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。
; M3 b( f' l9 r2 {+ o  
1 v6 b! p! {& ^, j0 [$ d% m  O  第一天
, E  P8 }9 y; q1 L$ n, b- q! t9 S  
) ^' j: k0 Q+ v/ Y  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
$ r! i5 a4 J' g  opccomn_ps.dll
+ T" p9 ~9 u( Y. Y1 L( Q# b, t1 ^  opcproxy.dll
3 c, }" V2 v5 F* v; c: y  i2 a+ R5 {  opcdaauto.dll
8 {3 N6 r' X; t6 M7 `( w  OPCTrend.ocx) [. q: k& C! ^8 M8 W
  OPCBar.ocx, v+ f2 H1 u$ Y# H) f4 W1 b
  OpcServer.exe
, {3 I! `3 e8 T6 _  OPCJDADemoServer.exe
3 S3 ~! ^0 I7 g, d( z# t  0 h% h+ d7 c( w% e5 p1 c* c6 m
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
' W- R' J$ ^9 ?$ y  W9 D: A" ^  后面两个是demo 服务器。' G6 H# o! s5 Q7 w$ j+ ]! G3 f8 d
  
- u/ A& i9 \! o" W- {  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
9 N+ D, e5 F1 X1 _0 ]4 L  服务器。安装了(注册)。
' ]- f, F( K4 j( K2 L5 p7 R5 k+ D  . @* C3 M2 X, w- q( m( O( @
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下," w8 i( N, Y6 r& b
  
# ?% a% `% b7 `4 t; K5 h8 C7 _) f  点击连接服务器图标,立即出现了三个:# t' F4 }# H! W% ^
  OPCJ.SAMPLESERVER.19 T# ?% S5 x+ E$ W% F7 E! G
  OPCJ.DADEMOSERVER.1: L& p$ I$ \- Q3 t  \$ c
  HEXATEC.PCDATA
4 K0 M: G7 C+ H  }3 e5 {9 r0 d  
% V$ G2 D) F" o8 x* F  第三个是opcconnect上download的计算机基本情况的简单程序。! F  N# {& I. _* c8 \# f
  
0 m: S/ v4 z, ^" s* l1 @  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这
: f9 Z% L$ o, u! x6 l  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
. t# f* a& T' t8 m8 S1 y  人敢学,也就没有市场。
! }4 E9 {6 ?% a' I# U& h   5 g& ^) f# `0 f" w# {
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。
- w1 ^4 k( W% e0 F# R  第二日
5 K2 Q1 \/ ]) |8 N& u- ]* p$ F  今天先看书。1 U6 d* S5 L2 r' z" ]; {$ J
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。' l. l- k$ ~9 `  X+ ?, f
  
0 r  L: a/ s" ^2 ~# _: }  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
! S# X  N' s- y9 n* Q0 J  
; G+ o" F- @3 z2 F) r% F4 h$ l. Z4 x  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。7 E8 u. g/ L" u8 m1 w
  
' o1 t6 s. @" L7 W* j% @8 S( c  书上对OPC体系有描述,我画了个图。
: ~5 ?; }; R9 |5 F7 q7 [   7 D  s- ?8 m+ k( n8 Z# `
7 E. Z9 v- C( K

; P6 o- n# t8 R  F  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。. t* G* c- @! n( ?$ q# Z7 o3 x
  - J! t% R* I6 `' x' n+ r, E
  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
. U( e- u, O4 T7 Y6 Q  
  g& j% I% v4 y+ I" F4 l  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。
. s  r. o3 T( w" d8 V  + q$ }- d* d6 X4 t5 l
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。9 q3 p* X8 }! t: f
  0 l2 e# h- j' J% d6 O
  我在第一天中安装的几个DLL中:
. d# }' j$ {' B  OPCcomn_ps.dll 通用接口9 H/ h" U1 w+ g& F6 ]% S' i6 B
  OPCdaAuto.dll 自动化接口
' y4 J# G, k9 v7 C2 P: X  OPCProxy.dll PROXY-STUB" s4 G. H- d: V" r# G* Q3 S3 l
  " M0 J( Y1 _9 \# _
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。0 z) S/ c1 \* c$ g- ^/ R
  
$ S+ z7 E) ^3 t  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
& g8 e' w% ]! d( c  
, Q: u' a2 \; ]5 P0 B  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
2 T* }3 c$ {  ]& p2 r- \. M  
8 Q: s1 C' o7 n! A/ R7 Y  按照书上的顺序,先了解OPC的数据组织。我也画了图。
2 L' d  r& c, }# k( |9 z5 l   1 g+ Q1 w% x( }. }
' l2 \* H6 ]7 B2 t: @: c9 f
7 ?" l9 y# }. q# I

  C* C* V* ]6 j/ Q0 V4 Y0 G  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。
! ^7 I& p. ]+ F# p8 i1 j$ }; ~  
8 N9 e' \9 J3 f6 w- Q; O1 g/ D( l  根据书的介绍,要访问标签,还有其他工作要做。
' O5 ]1 _/ X- ^: ]& h  我累了。明天再说。" j+ S1 c& d. x* \5 y
  
* ?, S6 |+ A0 ?% p. ^  第三天# l' {& y7 `+ w, j8 |  L- `  \; j1 }  H
  昨天说到访问标签先要做些事。+ a) ^5 B' M5 @1 Q: d8 ]
  
* k0 O9 Y& @0 s. o  k  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。5 i. S( H$ I* c; Q: n& B3 L+ e
  
# R" W9 B8 ]( n+ K2 u  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
2 S; {% o1 I0 W1 a* W  R  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。$ W5 p8 B8 {& \) h! U3 ]
  
8 [: [! x  F9 z3 p  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。3 j% f* W- N0 z" S6 p, h
  直接运行,没问题,看到了数据的变化,决定看其原代码。
. Y0 T* U9 f* J4 A: H5 n  
$ p6 ]/ V3 L& d  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。- v8 E' [0 [' a0 R) T
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
; H4 q; p- c' u2 i  & W& d7 \, i0 a( f4 W( x
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。
2 U  z  l8 b1 |" D5 u  
2 ^# M2 d6 d( Z9 h  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
: t5 s% X7 G1 I% Z5 k  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。9 t1 ?3 ?+ B$ O4 F2 H0 B: n
  + N$ h- A( z, |& U1 T" h
  我给自己留下了两个问题:1 u4 j  a0 U' O2 H7 m& h* y; c9 u# V
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。, a9 I. D1 T# z, d' E' d' F
   2÷如何访问ITEM,取得其数据等。
8 {# g8 P9 L5 l- |! E  / b# l; D) |5 s7 L5 {0 C4 _
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
+ A  P) P* W: {# O: Q- l. ?; H  今天到此为止,1 J0 J5 t8 G: ~& s
  休息
0 F) H3 W) v, I8 b/ m7 n0 U, x6 j, A  
% y- ?- N- V: u, y  第四天
. J- u& h$ L0 E# ~9 P, }7 a# a  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot
4 g. ?% R, U1 o: U  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。
2 @, ]1 ~9 v1 L7 I  H% k! U  ( D9 S' Q3 m' V7 @4 w, |% l
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
9 u! [  H  I! B) Q: {  ' B. \7 x" p! c1 p% w
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
* w2 W+ F7 _# e8 O# W/ {  s& _: a! J  
: C# ^5 D4 s0 h  我添加一个组,在其下面建立标签集合,然后用:
' {8 S6 m. ~! [  标签组的ADDITEM方法获得句柄。
2 |8 y2 m- O" f2 d) j, E, h  用同步读方法就可以得到每个标签的数据。0 p* y8 x1 B2 }, ~/ z
  
5 ?- c1 ^& ~0 {  我发现有问题。昨天我就发现有问题。, _2 l8 Z2 u+ I: k* {& W! F7 ]
  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
+ L3 `3 ~' j4 N9 Z  
5 W& U7 n# \8 @  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况, t9 P! T  K. q! o
  bch1(树枝)6 z4 B" I2 a* b- W0 U: o$ \' q, h6 l
  tag11(叶子)
$ G6 u% d3 @) k& A$ T. N, |  G  tag12 (叶子)2 ^' Y! k2 q. x+ s/ Q, U4 k0 T2 f0 O
  bch29 f& _( r5 o9 {
  tag21 (叶子)( @/ m+ E+ d- k3 a' l! h: u
  bch22 (树枝)3 \5 D9 f) y" f% K
   tag221 (叶子)
3 m8 X2 T! Z6 r9 u, m6 y   tag222 (叶子)8 q, O+ W4 N0 b9 S
  8 G$ Z$ `. \: v6 i  o
  
9 e) Z+ q0 y4 b2 Y7 Y2 s  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的8 L) F- p! ?/ N8 F2 I1 K2 z) o7 V8 Q
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222$ X( l) G+ K# _- R9 @' v" y
  应该用OPCSERVERBROWSER的GetItemId()获得。
. i* s! ?7 f* e  
' F3 V. D3 Z+ D: w7 T7 c0 C  修改程序,OK。% O( T" }, ]8 q4 ~. d* M1 F
  
+ E$ Q( L$ f- I2 |  还有什么问题,本机服务器的枚举。
& f! A$ f5 T! O: C% W' `  明天再说吧。ZZZzzz
9 `! {& m* v2 X* ^7 w! ^  
& }3 l: V/ V4 i  第五天
+ D5 U0 H$ c; P/ f2 e7 \+ H6 M. M5 s* q8 \  
8 o9 J! W3 i( i! Q% W3 _  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。
4 `6 F  i% Q7 D" Q/ O9 W) B  
4 ^. k! S" ~8 k) F" ?  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。( F+ E# R. o5 Y* T( l
  我选择了一个网站:  a- C3 D2 E5 b' T8 |  O* J' ]4 q3 t
  www.kepware.com5 Z2 f) X. o. K: k2 x
  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......
8 L7 }4 \* Y8 I. ~# x  " P  @5 |9 L+ g7 R/ T# }8 L
  枚举OPCServer的法子:
, l" \0 T* ]# z5 A  Dim ServerList as Variant2 r$ l" u6 g4 O
  Dim i as Integer
! Q& P( i/ |# N# d7 G/ ]  Serverlist=anOPCServer.getOPcServer(node)1 m0 R, c& n5 J5 G- _- s  t
  List1.clear8 O. f& s- }% ^7 @3 U4 @3 F/ l+ }
  FOR i=lbound(Serverlist) to ubound(Serverlist)
; G+ ^3 ^. e. K. J7 A   List1.additem serverlist(i)
7 c; z) s7 x' a3 a( Z  NEXT I
7 Q9 q( F  v+ ~4 o1 @) O! x  
- L& A6 X$ f. d# K  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。
6 d5 a1 @2 Q- I2 O  C9 _# Y+ B5 z  找到了枚举服务器的办法,在单机上成功。
3 T1 A3 b8 _) i; {/ Z  其实《入门》也提供了一个DOC文档,是OPC提供的:
+ R3 y6 T6 S( C  Data Access Automation Interface Standard Version 2.029 ^5 _" I" v  ?. G! z
  1 K; o4 ]1 m; X
  是一个必须的手册,只是有一些错误。错误总是难免的。- V% q3 a1 e8 g9 t) P- D2 H+ Q
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。1 W! L2 B$ R, @
  
. k% w7 B: U& R. {! J  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。" ]8 e0 H3 X+ d! z! x! n
  
1 ^  O1 E  G) i7 }! {* J  第六天
7 D1 s4 C+ M& _7 @# f9 T  
9 a. v2 _8 X1 O4 E  F  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
' P3 v0 S  Q: }$ Y: v6 ~  
$ t4 \# M; `1 \  {, F4 s2 I  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
* t/ O+ t; s5 @$ q3 l  
. `- Q& y" o. E' a  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。$ G  @; B! J. }7 t* O2 E3 R
  2 l; ~: V6 S, t* E% R
  下午休息。
1 g/ z$ a1 R5 s6 F  ' `9 I2 H% [! v1 ~! _9 }
  第七天
& e6 M6 I; B7 K  
% R4 a: d( V5 z+ {: c! O! W5 a  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
6 N# C. m* E# C( Q- R  
2 a: q2 A) W) [5 q' y, V  我想起了第一天安装的那些DLL,还要么。试一下0 }% ^0 M. y, J8 ?
  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。3 T, }$ l0 n/ E
  OPCcom_pas.dll 通用接口, t% [5 s# N* w: m* S- [
  OPCAutoda.dll 自动化接口- ]: R* J$ I" @! r
  OPCProxy.dll PROXY-STUB+ t& s: }3 X& O  ]! J
  6 Q) T( ^$ k- v
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
4 |% r8 ^- O  ~& K3 j  + P  @& c( P: g# g; ~' B, c
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。1 y7 G# o9 J* B# M8 m
  
' m  }% y& [. X' D& s1 Z  后记/ W- Q8 ?0 q2 ]1 N/ V
  这是一次入门的学习,本身没有什么。我却有些感想。
7 A5 N4 A6 Z) b. Q9 F- `  ( F1 I/ N+ y) i0 {( y* b5 D/ _
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有' d! E5 _: B+ l4 N- K+ ?
   OPC ALARM & EVENT 报警和事件
4 u8 s: f7 y. j   OPC DX 服务器间数据交换5 D2 J+ H7 B2 g# q1 Q+ Y
   OPC SECURITY 安全
2 P3 ~% H& Y8 u+ J& C  v) Q   OPC HISTIRDATA 历史数据库
' R* C6 j& E  K% V* Y" C1 C   OPC XML XML! [' X/ M. Q$ p& O& L  C
   OPC .NET FOR .net' x; U' E+ m) H+ i! O: p  z
  这些对于一种工控软件是比不可少的。  g1 h0 I0 {4 G( Z4 }
  
. V5 w/ E1 Y0 n  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
' j6 Y/ A  g9 G: H8 D' C  B  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。( w, w; Q1 `( x
  + q- d8 I- ]5 F  j9 B, X& N* B) C
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。/ A' q7 L6 M) j) l4 y
  5 e1 u* V, J+ q5 }, j+ u
  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了
& w$ B# R1 k- {" {; Q( d$ a真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
4 G3 b2 Z0 N9 ~4 G5 a+ k1 W3 A书还是买来看好,提高的快。
1 @" W5 z$ S2 }: B* D, o# Z
- A( m! E7 \; I8 D. `& U, ^% l[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)+ h* o% K6 s, S2 D" ~( ~8 G
http://www.3dportal.cn/discuz/viewthread.php?tid=836992&page=1&fromuid=153061#pid4296016
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表