QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
+ f" z' u% @- `3 G! n  [# L" `7 o' V) l# ?8 b" w
[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码
* n* P5 j3 q) S7 {/ m; j CSDN 下载频道/ j9 D# k' A1 f  _3 J' g6 A' g; @
1 J3 H5 Y0 y7 q; G3 k
http://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)9 ~5 G$ t; X9 A5 I1 H( c2 e
; m/ b0 k7 v& d+ f
我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。1 w/ `6 z% j7 Q1 c8 o# E6 \( ]* |
  % W0 ^2 O& T( W$ r! B
  第一天+ `& M3 y& @4 v+ Q
  
0 v3 e2 ]! C7 |  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。. [( o1 _9 k  m# x: q0 D, f
  opccomn_ps.dll, ^, p0 \9 P9 J" A# S6 u3 `
  opcproxy.dll8 Z- o9 \* N% Q3 @) g1 u$ Z
  opcdaauto.dll3 N$ H8 i% d( a* O0 c
  OPCTrend.ocx
- i! o: k7 J8 v) b" |  ~9 J, `  OPCBar.ocx
0 v' S: N* H" I) o; r  OpcServer.exe
5 p: Z. v) n& C+ o0 Q, G( F9 S  OPCJDADemoServer.exe
# b& g9 D; h; X- L0 j' G  0 v$ I" X! [, m* r/ ]. w3 T* |
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
) a! S) k( n* m  q) D' f; u1 |  后面两个是demo 服务器。4 ~- F! N% j! v0 i0 ^
  3 T. Q% c( `3 ]- m
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free1 d: g# P  V$ ]: [9 C6 r1 {
  服务器。安装了(注册)。( x, `# U* V' j5 b7 }
  
1 t% s) }3 V3 t/ j4 k9 p  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,
9 _- Z- ~( `7 G4 m# v6 }& ~) V  
( n1 G+ ]& ^" @  点击连接服务器图标,立即出现了三个:+ L! }: ^- h8 g2 Z) y7 o! ^$ `# v7 r
  OPCJ.SAMPLESERVER.1
; R5 I- \* g  J6 C! h- x' M  OPCJ.DADEMOSERVER.10 M/ a7 A8 _( y5 a: X9 U
  HEXATEC.PCDATA  U- w: b7 p0 I4 V  R
  
' o2 N6 J$ ?. \' V, |  第三个是opcconnect上download的计算机基本情况的简单程序。& P% w: A# d7 m5 @/ w' d% }! j
  
: x( p& \; q* E' \8 K2 W: k4 t  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这4 M% V, d- q, X- H% @
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
, N4 r/ x0 R) O; x/ Q) r  人敢学,也就没有市场。
0 Q/ ^, a( k( t' |. K' e! l" W   ; D- h8 A+ w9 e2 m( t- I0 f
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。& r1 b1 D' h! a2 x
  第二日
. _+ b9 g/ @5 B. T" p, [% c  今天先看书。
: q+ {( L  {$ H4 i/ a5 r6 Q& D  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。6 I" Y- V+ L3 c3 r# B. B: d
  
- Z9 \6 U; B* E$ r# x  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
- I# b1 i/ [9 o4 |( _' n: S& L  
; V, ?) T+ R! }1 ^: P# p, D  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。
# c0 n, F) _: a1 _  6 ]2 z6 I- H3 z' p
  书上对OPC体系有描述,我画了个图。
2 K8 v9 H/ z! a; I   4 h: s+ u  N; a- x( G/ V

) V6 o9 o0 y6 g7 @8 t1 G; V# C6 }' D+ m8 ~5 [' @0 `* e
  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。# Z- y7 Z+ Y" d  R# t8 ^1 }9 e
  5 ~6 L+ x; e5 @( A5 R
  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
5 H( F; s- n/ p  
6 u- s$ O3 V# k6 T2 C+ B" H  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。
9 \" |) l! m) J  
% H( D$ w  n- J6 j* \- E* {8 L  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
; H! z/ j& R* F8 O$ v% H  
- g$ u3 K% {: U: r% R/ R  我在第一天中安装的几个DLL中:9 m# i% v0 E+ @
  OPCcomn_ps.dll 通用接口
5 P* s  x; \" \# g3 b  OPCdaAuto.dll 自动化接口3 Z9 n/ q1 v  l- w* v8 ]: \# A# F
  OPCProxy.dll PROXY-STUB
$ @! Z) M! Y4 x- o  / |( x# x: O  q6 w
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
2 Q2 ?' u& C3 b% C! h& G. C  
, @4 d- Q+ K: V: O2 U$ B  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。& A/ y+ Z: V) l, D+ z
  
. x+ m% X5 o/ I2 U. S, n* H  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
1 B6 k( p  j& y  & L% J# F& }% [$ S6 @1 b
  按照书上的顺序,先了解OPC的数据组织。我也画了图。: N: a% N6 ^" R2 y
   ' t7 ]/ i0 O* [+ L8 k5 s8 V

  E6 W; u2 K0 t! @' a
1 r# p& I5 l7 m( I$ M
9 e2 B4 ~6 b% C9 c! @  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。
+ b# R8 v1 y9 H+ t+ h% E  6 h) u+ p8 l1 N, e) d3 m
  根据书的介绍,要访问标签,还有其他工作要做。
! c( j2 `# t7 |' H" c$ j1 }% ^  我累了。明天再说。
% `! j, z3 _. n) Q  6 k. Q* Z) u( O7 B, R: Q$ \" ]4 J0 c+ x
  第三天
3 K' P6 P5 I8 F6 G* i- y  A- @7 `  昨天说到访问标签先要做些事。
7 s, b* o$ p; O8 s5 ^3 a  
% D; r; R6 ]0 }! F  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。6 \. `& c- N2 f2 G1 k8 E; v
  1 y! S; v+ }  j- }  Q* }# {
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个, _5 b  l7 `) ^/ }8 w! H
  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。9 ]% G% C8 P0 b0 d( _. a# ]
  / p4 p* c) V; f" z
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。4 c5 |! ?$ C* Y3 o; R% c
  直接运行,没问题,看到了数据的变化,决定看其原代码。4 K  X! H2 I" u2 q! j. V/ n
  
8 F" m# x0 o( N5 k  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。
2 h/ G/ h9 p4 t  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。# x1 H  v$ E1 U- i$ Q
    Y: n5 w$ [0 y* G9 R+ b- F
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。
- V0 x& t7 {7 T& T- ^  
* S# ~, \) Y0 f+ [1 l5 X  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
. d* a* `# w9 s5 W" o/ q( b7 F% I  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
, _2 ^1 e5 |/ x  
% Q) x9 `/ t* ~5 e6 }  我给自己留下了两个问题:6 K* {3 m* v9 q
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。0 W5 |/ r, d- y/ X( ^! H  X
   2÷如何访问ITEM,取得其数据等。
2 }4 O3 R% n- Z  
: ?* D/ d: l, D3 }4 z& H+ W  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。$ P7 H' m( |' t2 @: G/ n  c$ \
  今天到此为止," O2 L) c* k2 _( _3 l
  休息4 h% z3 A- u1 f' K& F2 [- `. n/ z& h
  
% k, N8 I6 d1 a' w, X  第四天
7 C0 H" q3 E3 |( f: \. q2 d5 C  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot4 i5 w/ u: f8 B& F) w% M
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。% |: N' n3 ?6 d" C2 _5 \
  . A( F' I' @$ S! S
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。* Z1 f" a+ n- j' K( V
  / ~+ r6 E. V" g$ f( ]
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。3 Q* u* l' M% j: L8 ^0 M9 y
  : s1 [. P) d+ r2 X  f$ |
  我添加一个组,在其下面建立标签集合,然后用:1 I: M: M0 S% n! W
  标签组的ADDITEM方法获得句柄。  H+ J- s8 q' D9 W
  用同步读方法就可以得到每个标签的数据。
$ z7 \" \$ W0 t  9 }2 p5 y0 n) I+ V6 k/ t
  我发现有问题。昨天我就发现有问题。
% S1 r1 {+ E! J: y  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
: V: B! y5 B$ ~  
! f, O0 y4 y, }) y  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况
/ K+ V# n& |1 o  bch1(树枝)
2 ^, u0 v$ L, }6 Y# U( ?  K  tag11(叶子)
* `' \% c! F- ]8 X3 \6 B9 O4 y  tag12 (叶子)$ ]' A( l" ?! `; O
  bch2* H3 o& _2 w1 s/ p
  tag21 (叶子)
+ t* I4 U& b/ Y0 D% W, g  bch22 (树枝)& f) l  ?- y# H
   tag221 (叶子)
* W2 [" P; F0 n" u# u1 _   tag222 (叶子)' @: i! s; G+ D4 B# Y/ W
  
) }! y* t0 K& o4 K  ) n% F7 _; x; E3 z: N
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的# e1 z$ N. S& e" C: K
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222
! _2 A! V1 _; y6 j2 M* Z  应该用OPCSERVERBROWSER的GetItemId()获得。. e/ p) l" m$ X3 r
  
. b& h2 J6 C9 p  u; Q  修改程序,OK。
7 v# z- j# C  Y# I6 a4 C, a  
) G5 h- @2 \$ x5 Z9 D, I  还有什么问题,本机服务器的枚举。
3 ~5 v4 k/ k* p  明天再说吧。ZZZzzz
2 ~0 K% E+ M' s8 H* Y  ! C2 I* @+ Q7 `/ Z) ~, M. W. }2 m* J
  第五天
5 V7 f9 a# N. Q3 V  
; J4 d3 y. d, G$ _# J- Z2 I  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。, N8 u$ J- q/ y0 H
  
0 \4 O) z1 [. i; O! K9 F; u  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。
2 [+ H, k  |) Z$ F. B/ f: M  我选择了一个网站:: ]( M3 L2 z) C+ J9 N
  www.kepware.com  G, d* i' n7 W5 C
  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......( V8 x" P% j7 V3 u: ^/ f" y6 I* }
  
& t# p" h# Y! I  枚举OPCServer的法子:7 B4 B3 ^7 S# h/ X; v
  Dim ServerList as Variant8 F& `8 w$ ~2 b1 O$ I* [* H8 \' W
  Dim i as Integer
$ R5 B: t. A8 L) l  Z/ N2 ^  Serverlist=anOPCServer.getOPcServer(node)- n' f" O- X& S* N- Z1 Y4 D  ?
  List1.clear
- N3 q  @6 N" H7 o: W4 G  FOR i=lbound(Serverlist) to ubound(Serverlist), a  L( p, @5 n- T3 y$ n5 K
   List1.additem serverlist(i)
" m" |( V$ u, ]! s8 h- U  NEXT I
/ {9 N' n& S8 U) I" B7 V  
* D0 M! d# d) I+ s) C; c  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。
+ B8 e( V2 Z5 o! y  K0 `  找到了枚举服务器的办法,在单机上成功。
' e  d; Y/ ~6 m& z7 J  其实《入门》也提供了一个DOC文档,是OPC提供的:
7 |& ^% V6 k/ i; O& `  Data Access Automation Interface Standard Version 2.02
6 u( y8 c5 T* `9 Q5 P  
5 E0 f& D" @; T7 @  是一个必须的手册,只是有一些错误。错误总是难免的。
0 i( v6 y9 w) s6 H  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
( B  `1 `% a1 u' v" Z  
# s- c$ s' w4 Y0 @  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。+ ~- W8 [1 |! \: e9 o
  6 n5 |0 }; K+ h8 a0 w; _9 Q
  第六天
' m" w; M" W9 Q0 i  * i% W; h# e8 j5 p+ }6 {
  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
3 @' i0 r  i; x4 ?& {  , x  i; M( _/ T/ [3 _% q' C
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。: C8 e' l* \! p- H  b, M" b
  ; `! r" a0 D/ ]# `
  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。
* I" Q$ }3 K& V7 ?; z  . d$ {& O3 `# R; H
  下午休息。7 J0 K7 c' E; J/ Z
  
5 X* n1 ~: y7 J. k! p9 Y: H  第七天
! |) ^" p4 X$ N  7 I* S' a! s- o
  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
; p* |2 l5 w( \9 p  $ H% c9 L" M5 W* {- H. R# B  p
  我想起了第一天安装的那些DLL,还要么。试一下
4 I+ \! G. ~9 B5 f( W; S3 N& |  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。$ @4 r( B! z# z$ s' v6 d  U
  OPCcom_pas.dll 通用接口1 a  R  X0 ]6 C" m  \
  OPCAutoda.dll 自动化接口
* \4 h* t& j- Z7 I0 o9 b/ ?  OPCProxy.dll PROXY-STUB9 V5 _1 _$ e3 @' u1 z
  / G$ Z% t& ^* ]
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
9 G# n+ O$ D- r- g. \  3 m5 ^+ d5 g. i) K/ D  M
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。
* D7 q5 M0 r7 n; S  
7 l" l; |+ T9 r' g  后记& Z8 i" H4 b% j! C" T+ b1 l, q
  这是一次入门的学习,本身没有什么。我却有些感想。. q7 y% `: L" R: N- s
  ) }: t0 Q4 j7 G4 W# t0 L
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有  N; |0 }. W7 O4 Y3 \4 z  }% I
   OPC ALARM & EVENT 报警和事件
5 K; A& s5 g% m0 R   OPC DX 服务器间数据交换- I; T' r4 I) i# r9 Y7 _! n
   OPC SECURITY 安全
; N) f- S' j8 A1 g# `/ _   OPC HISTIRDATA 历史数据库
0 n) V* [, e3 r0 [  v% F   OPC XML XML
+ z0 v9 S% f2 M* L   OPC .NET FOR .net- q: n+ h2 V4 R: C4 T9 `' A
  这些对于一种工控软件是比不可少的。
$ L, N7 B; S7 [* [  
0 e, k8 C) a. K( e  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
9 g1 P4 x+ ~4 B7 S7 K' T8 [# B  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。1 ~1 U- e- E) l+ Y
  8 e' c8 Q. `* N& c
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
1 X8 U- q- x& ]* {& o  
, Y  |1 J' h) N/ R  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了7 t" w1 E% u& ]* I6 H9 u
真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性' `9 p( j6 J5 i  \7 s
书还是买来看好,提高的快。) g! h- X$ t6 K' L& D- ^) f
* m6 Q0 p2 S) [
[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)1 t1 i9 N! y& _+ e; e
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 )

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