QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 6097|回复: 8
收起左侧

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
7 `+ i' ~" W" |* Y3 F* S3 H! d
; u5 J7 U* g! q# F[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码% L5 l! q4 l- @! Z  ?: R- H) P  S( u
CSDN 下载频道
  b2 y7 M$ ?7 p- d6 ~
2 @0 q" M) v+ Z) W! u9 Zhttp://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)
5 s; Y" `' o# ]9 I- Y5 t! R
. i* |8 `+ Q: J0 c我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。6 n) [0 g" j/ y: |% k$ V; H# L
  
5 V4 l$ ~6 c7 c  第一天) s8 D& Q1 z- T1 {3 ]; |5 r( f- K5 T
  
$ h5 f/ s) T( T" K8 V. [4 e  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。5 g5 e! L5 r3 s: W
  opccomn_ps.dll
! x9 m$ Q: y* }! I* s9 {  opcproxy.dll
# H0 D1 j' v9 O: _$ G$ L: ?  opcdaauto.dll  {1 u0 g( l: `( k0 ~
  OPCTrend.ocx
: h1 A! N( X  u; y  OPCBar.ocx$ I1 U8 W- K  Y5 n: f' D
  OpcServer.exe ! i3 ~! f3 c2 D, \, X( z
  OPCJDADemoServer.exe
9 u6 b2 z* E0 V- I6 D2 P  
. K6 }$ D% I6 O- r# b3 M- S/ J6 k  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。9 K7 P7 U  ~% d
  后面两个是demo 服务器。5 H/ V2 w6 ^8 G8 w
    g% v& i. o) `6 K' ]" n
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
/ S) l( W1 m8 y! w$ o4 M8 H  N1 C0 z  服务器。安装了(注册)。
- h& J& D9 F( e% o) Q' q" F5 b9 G  
! Y2 f9 {: y: f5 D  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,
* a! K7 w$ J! L' K9 G4 W% Z* |  ; |- Z6 p) N7 c$ X- G9 ]
  点击连接服务器图标,立即出现了三个:
- z; x3 j/ \. }4 I  OPCJ.SAMPLESERVER.1
  Y( N2 _+ g4 T  OPCJ.DADEMOSERVER.1
1 Q6 M& j5 L5 R$ k  HEXATEC.PCDATA* V7 C6 [, a2 `/ j' i0 m
  
2 W( v9 X0 c) B. |6 _6 y5 }) c  第三个是opcconnect上download的计算机基本情况的简单程序。
( I8 [; N9 o4 d" Z0 P0 y9 G- y- O  
! c  a: Z2 N! @# h2 d2 `( x7 ^) L  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这
: @# D! `9 Z( G6 o5 |) \  w  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
  |  x2 t" g( p6 F4 K: v4 T; ^& W  人敢学,也就没有市场。
4 Z2 o9 f9 T- c. q# C3 Z/ g   2 P/ c  q) Y9 Y1 }
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。6 O5 M* `" @4 S2 r
  第二日5 `1 d( ?: c8 s) ~! G2 ?
  今天先看书。1 x9 G$ C' @" v8 V4 y) @
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。8 g  x" P) _6 `/ s+ r
  - A, l8 e% U' }+ `
  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。1 b7 A' ^( D, `- t3 _) o% ?; L8 M
  7 Z% \6 Z. n; i! _( W3 `
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。
  s! j& w% F  ?5 w+ _' v# m    M# I7 ?# D% g( X
  书上对OPC体系有描述,我画了个图。" q2 p# B) f; m2 U' I! m  P
   0 L/ o, o( d6 H! @+ ?

% ]1 D+ b  p/ U9 M7 `+ i; g3 c
5 p8 o/ [" d0 ^( x+ O2 `- s+ P% I) S  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
3 G- h3 [% C! e8 c8 [, S+ K  ) m' J* G8 k* n1 R
  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。' x! _$ w8 K8 T# W
  
$ r" H: Q1 j$ u/ @% Y  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。. l6 G2 f* \0 D3 l" Q3 }" Q4 ?
  3 K) w" Q! y* G; R- a+ E* T& ~
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
' D" N. N" C+ g& R$ L% A  
# e: E) y! c1 J9 `8 c$ w! Y4 [  我在第一天中安装的几个DLL中:
$ A. d. _  ?7 b  OPCcomn_ps.dll 通用接口- D- P2 i6 d9 x, }" l! e
  OPCdaAuto.dll 自动化接口
3 C% ~. e. ^  n  OPCProxy.dll PROXY-STUB+ t3 e0 M( i( S% ~
  7 y9 e  k: s7 v' \, z) X( P: R
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。! }: [& E$ M( j- L
  : q) w" d) e' g1 T1 f- L
  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。5 l9 ]+ b. R$ ]
  4 P2 H5 V- f, \; B* {" g
  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。$ G+ W7 M7 w/ S
  
7 Q7 {, ]7 R' r' F; f$ i  按照书上的顺序,先了解OPC的数据组织。我也画了图。9 m6 B9 r, s& A2 \, ^; k
   8 U! ]3 J+ M) N+ }' t1 `/ z
) `6 E4 t8 W6 \( [+ e1 J0 i% y2 t7 S

+ ?0 j1 S0 ]( V7 W
' W% |2 ]* ?, q2 d. j- ^4 e  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。6 [  ^6 u) G; J" D+ e
  
8 p7 |. h2 ?3 [9 }  根据书的介绍,要访问标签,还有其他工作要做。
5 F3 X( e: y2 h9 j) \; |/ e  我累了。明天再说。6 G6 {% Q) c; L4 q- {3 x
  & l( z+ u/ _% Y" c/ Y: ?
  第三天
$ t" ^- e: [2 j7 |8 y- A  昨天说到访问标签先要做些事。
6 d4 V2 ]! l; b  
+ E) o) S! Z: C& u  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。( J7 m" c8 H/ s) q! I( S# }
  8 O* k/ z7 Y$ u, k/ I% c
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个, z. u4 M& ]4 b% u* _7 B# k) ]0 ~0 F
  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
4 u9 H+ J8 L2 [, l7 s. @9 f; Y  ]  ; O% V! H1 R+ {
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。2 W6 b, Y  ?9 ?
  直接运行,没问题,看到了数据的变化,决定看其原代码。
8 y. F, P/ Q" ~0 h! I  7 o: \; ^  `! u
  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。. v1 S$ I/ g9 h, O  g# p
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。* b  C7 T4 O! F4 i
  - v# p) U; i* F: M
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。1 }& K; E& {; f6 R! G
  8 O/ [+ e* Z" X$ ]7 u# c  m; z% _' ~# Q
  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。$ j" z8 }% R5 O7 L5 Q
  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。* o! U5 V' b. J" b; l$ i0 O. w; H
  : \- a2 d* \" A7 V
  我给自己留下了两个问题:: z: j* j! `% G8 T) |9 N
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。
3 I' w1 O8 [# z$ x$ T, f4 Y1 W% m   2÷如何访问ITEM,取得其数据等。
% f, b/ x+ A2 X6 O( i0 c  
/ K% d0 n- t( J0 i5 O  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
0 _/ ?% y, N5 K  今天到此为止,
# A* F) `9 A5 A5 c! ?  休息
' r# [- A7 T' ~+ e  + N& u) O5 H. `3 T" `. u
  第四天+ {; G1 \9 {( ~8 y
  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot
+ j, ^$ g9 S- Y! `" J  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。
9 T6 N  a  |& l% r6 J# ?# [  
! s9 I; e' F2 ?3 h  ?9 l  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
9 }; O/ r- x0 d1 u6 d* ?' _  
9 V8 ^3 t9 N$ S9 U( C) g  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
  ?5 ^4 j/ L4 v* j/ E9 L) Y/ Z  3 k, D6 w: K6 F3 y- t
  我添加一个组,在其下面建立标签集合,然后用:! D$ N4 @/ C0 k& @$ P: x1 T
  标签组的ADDITEM方法获得句柄。
/ a! @" ^+ N/ Z7 U( n# R  用同步读方法就可以得到每个标签的数据。/ Y  i. q! M$ v. y1 h. D
  ! C& q5 c" a7 x% q
  我发现有问题。昨天我就发现有问题。
2 S6 s- }/ m1 _9 B3 |8 L8 `  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。) L, |. T) T1 Q3 o4 o5 ]
  ! Z7 z# J/ l6 s
  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况
7 U$ F9 ?) k# u  bch1(树枝)2 s2 [2 J1 E  c" x# y0 @
  tag11(叶子)8 V8 [: Y6 N) ?5 j2 p
  tag12 (叶子)/ b+ t! ]4 p9 Y6 H( k0 n
  bch2+ _* h! Z& {: O
  tag21 (叶子)
! ]2 c* W( C! |; [% r( E: L  bch22 (树枝): ?7 o6 w9 {; F( G
   tag221 (叶子); D. E( `/ L5 J/ [* q/ u% M2 k
   tag222 (叶子)! u& c2 x) K5 S( V
  
' O0 @( c5 q! F, s( b. X2 }7 p  
: ^/ @6 [  }' u  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的9 [$ B, h" e  l) V
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222
7 _1 d, o% L$ \: u  应该用OPCSERVERBROWSER的GetItemId()获得。
7 n) B5 L& Q" @" }1 D* T! V" h  
% y$ E( d" B4 w: O1 F3 U  修改程序,OK。" t2 ]& ?& @8 ?1 p. m
  
! v+ R0 \2 w8 K; ?8 q" i0 ~  还有什么问题,本机服务器的枚举。
6 ~: a# a+ F8 V, F/ s2 w3 F$ R  明天再说吧。ZZZzzz
- @5 }  a3 j: z; ?! u2 f! o  
9 a; q: e, J" m: z9 ]8 f  第五天4 s/ k0 i0 m6 H5 d
    {  ?& a8 C) Q
  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。7 e9 O6 v% d/ G! p0 y1 t
  3 n3 [9 l' |3 v7 @: Z* n
  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。
" E  R! i0 y) b  我选择了一个网站:
3 g0 c* `( |- F1 X  www.kepware.com
. [. P9 G, q9 f  a% m' Y& M  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......
' ?" b/ u) {9 S' _  9 C1 |/ o' Z" Q5 S9 ?/ Y8 M
  枚举OPCServer的法子:- L# d, q, {: i) n  G5 O
  Dim ServerList as Variant5 Y0 A+ ~' a/ }/ |
  Dim i as Integer1 H) b4 [; p# b5 y+ e' v* T6 Y
  Serverlist=anOPCServer.getOPcServer(node)# d/ B4 d: l) O/ g& U: S8 C
  List1.clear
8 @. S2 I$ r/ ^- K  FOR i=lbound(Serverlist) to ubound(Serverlist)& \1 h: P- U; l( n
   List1.additem serverlist(i)
3 t; B" t! I) |+ G  NEXT I
) Z1 S7 a* d5 v' E  6 w& u7 M9 ~) m
  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。: c) e4 ~/ e% E# n
  找到了枚举服务器的办法,在单机上成功。; i7 e  l- B$ I4 d
  其实《入门》也提供了一个DOC文档,是OPC提供的:
+ f$ N1 e9 T0 M2 r  Data Access Automation Interface Standard Version 2.02
0 e3 n0 I, P1 J& m0 Q+ W+ O! n  , l4 l3 S0 R+ [  x9 x8 i/ E
  是一个必须的手册,只是有一些错误。错误总是难免的。
6 q9 e% ?* R& K$ y" y/ y+ I  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
3 P" q5 p( i+ n% s& M  
7 `: \1 l8 C3 C  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。& U: Z/ i0 t$ j: @& a( F
  # a6 }/ f, b: l; Q2 P
  第六天: u( ]0 h/ \7 }& u
  
/ P7 |* j. r2 o/ ~, x- K  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。; m# Y7 P& {) A& C! X( A
  9 e* \# g1 v# R8 M0 A9 t8 k* U- M$ K
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
. X/ L# I; t. d( c# Q  
  ]6 V! q# `8 _! m0 X- r0 J  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。# p8 a* J! F' A( d5 z$ F0 f
  
; E, t* U) z2 C/ F- n  下午休息。
4 k  S( v# Y0 P5 l: K: W( c  & Z+ K* W* S7 Y
  第七天  v/ X& x$ L% U  h% U- C
  + V8 J& Q5 @& l0 g
  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。+ H/ F5 S% B/ a. }, z# c
  ( L& }, x. P* Q5 ], G3 S
  我想起了第一天安装的那些DLL,还要么。试一下
( J& h8 o: z# ]% m  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。0 ~% n, ]+ k, S- F0 H
  OPCcom_pas.dll 通用接口) _+ d( |( |5 R) J  _& d
  OPCAutoda.dll 自动化接口9 \: Y6 p; M9 P& H' u/ B5 E0 Q
  OPCProxy.dll PROXY-STUB
% r2 e6 O% z7 Z" E( P. U  2 O. c4 v$ g  @2 h
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
# v. ]9 d: W- S! Q7 r  , r. Y: A3 D" |# u6 B
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。* O! j- o6 O: L+ M
  3 z3 B+ c! H% v/ u: E, l" D
  后记
3 a* a; I; E0 v  这是一次入门的学习,本身没有什么。我却有些感想。
$ G, x7 l( H: Z  e) E" s  5 j7 @. b6 w! ?& y+ c
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有8 M" G: `" K3 O) F+ a9 ]
   OPC ALARM & EVENT 报警和事件
* j7 q, {" ]; I   OPC DX 服务器间数据交换
2 n! d* `9 D* |. v& A   OPC SECURITY 安全0 G7 ~+ k7 X; f
   OPC HISTIRDATA 历史数据库% X' K, G, G8 X
   OPC XML XML
/ g1 o7 |5 [+ f3 D+ ?- C+ o   OPC .NET FOR .net
  O; o2 v0 y* J6 W  T  这些对于一种工控软件是比不可少的。( x5 l& N3 v5 w, l9 a
  ' O- j0 g* S7 d2 X* X; B
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。& G" A9 x+ N8 r, P( f* T- w" @0 C
  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
% y0 Z6 v0 J2 e$ ^  8 ?; W. U9 y+ k7 a; f7 d5 C) j# u
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。  |* q: U. h* _2 |: s; B5 ]3 t
  8 s; Y2 D& t* f) J0 r- b
  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了' }1 f7 R) Y! Y" t  p3 X
真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
1 |4 `! H: Z+ ?6 |; R" b. d( k( o书还是买来看好,提高的快。$ \+ A+ o/ ]3 ^! A: H# s1 q3 w7 I7 N

: u. f: c. V- c* }' p0 u[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
7 c) L  i+ `( A) e- I0 m: z- Mhttp://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 )

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