QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
; J5 w3 L, K6 `1 ^0 e7 k/ I" I
+ T. x( f+ D/ r' u[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码
- D* b3 }6 x; O2 b0 q CSDN 下载频道
' P5 v& x2 g* o+ i5 r0 f% M3 q" x$ I4 g* I
http://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)
2 W, B2 P3 C: q$ x" D6 l
7 K' N; I4 r- C6 h1 Z* h我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。6 d4 C" w2 g' B5 ^6 k( Y
  
; U9 d+ d" c& D3 J! q$ k( R9 o  第一天; e* R; X' Z- Q8 U- w$ T9 {& A  x
  . B+ q- O+ c2 Z+ S, J, ^' [
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。3 |# _4 \) c7 A0 h" ^) j
  opccomn_ps.dll
' U9 Y0 J( _6 t! @  opcproxy.dll7 m6 @& f* X$ x5 ?* c; \" a
  opcdaauto.dll
3 k" d" A( y# X0 f8 y9 |# ]+ Y  OPCTrend.ocx
5 `* [' @) W+ m+ H! D: f  OPCBar.ocx
" R- Z0 Y- g- S; e0 k  OpcServer.exe
4 v) F" I0 X7 Y  n/ K4 {  OPCJDADemoServer.exe
8 o+ q4 k0 w. i( t% E& W- p6 a7 N  
5 x  P% U5 h, R5 |4 z: p  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
0 |6 E1 z* w: o  后面两个是demo 服务器。3 j8 ^4 A6 x3 O4 n
  * X  u; W2 `6 E3 m
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free3 N: c% ~) L! ~3 C) T6 o; X
  服务器。安装了(注册)。. t3 O2 `7 d( t3 F/ [- x
  8 b4 o& A0 L2 f2 B
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,
1 s* a) e4 I% n  % S. m- q: l4 E  F# z
  点击连接服务器图标,立即出现了三个:
0 l9 C3 P  Z3 t* W, e9 H  OPCJ.SAMPLESERVER.17 F! {% L  I* `# S1 W/ J5 D
  OPCJ.DADEMOSERVER.1
. X  f3 m. {8 U/ o; s  HEXATEC.PCDATA7 O% |; e, q+ n6 M  @" k' @
  2 Q: g$ d; G' [! @% V
  第三个是opcconnect上download的计算机基本情况的简单程序。  g! i$ O& z1 ?* v
  
) V0 s4 {' Z, E) W  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这; J! X0 N$ o. o% a1 Y
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少8 ?+ Y! B# k( F, u' J# }1 Z
  人敢学,也就没有市场。) I5 ~7 K5 g7 m: f  E
  
0 g, s) {* z2 z$ W" w! P5 @  有一段时间没用VB了,先热了热身,看了自己过去编过的code。
: @, d& _2 D' ^/ m# Z# E! F. z+ w  第二日8 Z# T! O. {5 Z  }6 R8 s( i5 @
  今天先看书。
, D( k( k6 d0 g, \9 \* _4 r  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。! C  _5 ?% {0 W$ b5 U7 _# [
  
5 e, F! ~* g6 L3 k- p* [  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。" ^) @8 V7 \6 B7 s) o/ D
  / c- {! @. I/ t1 E1 _
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。6 {. Y8 l+ x- z: b
  
) ~  G. `- g2 t+ t+ u  书上对OPC体系有描述,我画了个图。
7 h/ F$ p1 K/ n* ?( y9 v) X/ p' o   - U4 C  k8 K# M# j7 t. X
' C! E9 \! w2 W3 M
6 Z3 o. K/ t1 _) S" L
  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
$ A3 Y# S7 K9 r6 W0 k. ~  
2 A4 M$ |/ ?! D2 J  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。+ Y  R  ^' O, n+ ~3 E+ z; U( Y: A# O
  
/ n1 `8 E6 }. b5 b8 k6 e7 M  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。
' L3 V; c+ H4 @, b; d) c  + o2 ?( p4 d1 u5 n
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
2 f1 a7 i/ n1 R6 ^% D  
- F& k/ \: j$ Q  我在第一天中安装的几个DLL中:$ ], J, S2 j0 r3 _( ?
  OPCcomn_ps.dll 通用接口: p0 T$ ^; p4 K$ k' v9 W* \3 \
  OPCdaAuto.dll 自动化接口
3 _1 x) N/ `4 D  OPCProxy.dll PROXY-STUB1 M9 `( m2 }; a
  9 h+ I6 H" l7 t3 G# [
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。' N4 ]8 s! N  U) X* f
  ) f4 l; D0 c" S3 \. U0 |# w
  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
0 t2 m& l, \7 x* ]' t/ B6 t$ e6 k  
3 P8 C  x) O7 t! [1 i' }  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
# A; O, q! j2 O: z  
  E5 {0 c# l$ i/ r  按照书上的顺序,先了解OPC的数据组织。我也画了图。; z! _/ O6 C  K$ A, i3 z9 s! |
     Z3 I4 \$ {& ^; r; n2 v

" [9 U+ w( \+ i4 b. _% m5 m
8 j1 ?) c/ T5 w6 r5 X4 K" q; M7 N6 c7 J) ^" f# f  b2 l
  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。0 S/ y$ U; U; _5 r7 Q$ v
  
" P  W/ I9 u5 d2 B  根据书的介绍,要访问标签,还有其他工作要做。5 L' O2 w+ }. s$ q( r4 e
  我累了。明天再说。
  y, q: @, J/ _7 m  
4 y9 a- t6 |+ U% w) K7 E  k( p  第三天
9 c. M$ S/ w4 `7 w2 ]9 I  昨天说到访问标签先要做些事。
! K  t3 E" M. D2 [5 `" _+ T5 F  % y7 E" E3 k8 z8 \3 W/ a7 @. P0 n) D
  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。0 V) G# t- g4 |  G) ]+ r* f
  / ?8 A/ m; g6 h/ p, J
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
* v: p" i/ Q1 u% ~8 T  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
" y' K* \! v' C0 O! |7 v  6 w1 v4 t. {- H9 I; Y  C9 D
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
* [2 ~  C# @, X, [- J  直接运行,没问题,看到了数据的变化,决定看其原代码。0 h! n; x, V% v) u" L
  
: ~% f0 ?/ \. F  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。, p+ }* v5 O( c' W: I+ A& j
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。' p' w! u9 M: R1 B  ~
  
& Z" V: c6 q2 w1 V% |  h: ]  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。
, D/ e; T% G4 |3 e2 g  
, S! E& V) k% ~1 C* {  S) X  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。1 W( X3 Q/ j8 Y6 i0 v% ]
  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
: }- k! {) W6 |& l# B  
  G# [" g4 u; J$ d  U  我给自己留下了两个问题:
# ^- X# h1 j+ O& ?# C* Q2 v/ l% A4 g   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。$ R# e8 E; z1 ]! E- b5 h# J
   2÷如何访问ITEM,取得其数据等。
" q) [4 S, b0 ]+ E  
$ O; ]. P6 F2 U  \0 n' l- u  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
+ v5 n5 @. g9 e9 u* T  今天到此为止,0 A  H- ?; U4 }6 S4 p/ X6 ^% r0 K
  休息
4 c% F8 }* Y7 |" j+ k8 s  
) I4 p4 Z! E- M3 G: i  第四天# y" j' g( p( U0 P% I
  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot7 ~6 j6 E! m1 k& M
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。2 V3 u# j; J$ c: R3 o+ g3 [
  9 R4 y& R! O: ?3 y/ R) f* q
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
* U- k) ~4 U5 X: y' S$ h- W  : f& V! t+ o" h2 z
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。& c- ?/ F/ |2 i2 ]
  
6 D# Y/ R! p9 p) P  我添加一个组,在其下面建立标签集合,然后用:& N6 _. Z+ |' E& S
  标签组的ADDITEM方法获得句柄。" [4 M' y' d. p' w  h' C
  用同步读方法就可以得到每个标签的数据。
- q- y6 E% W# F  
- x1 P( V* O5 e  我发现有问题。昨天我就发现有问题。
6 G2 k" O. e' L  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
! @" i: h" e5 s  
; g( D& X+ z$ I: J. x/ [. g- B3 I  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况4 J, }+ {% c4 E
  bch1(树枝)
* _& R0 ~9 D! J" D  ^  tag11(叶子)$ p' [0 m. Q/ i5 _/ @) v7 p% f
  tag12 (叶子)
2 U* R3 B( j* G1 z  bch2  W/ F. ^- _6 g9 |
  tag21 (叶子)
9 I0 Z; F9 ]2 t: U2 f, I3 k  bch22 (树枝)
% j" D+ I; m: y2 k   tag221 (叶子)
$ Q6 L5 U0 }* d  ?. _6 r   tag222 (叶子)4 x1 Q8 q, X  i' m, z' R# [
  
4 R; J6 d/ h; j$ _) l# d    E. K! v- u( b, k/ J% Z6 g, g$ C
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的0 t: U& f/ H8 Z' g' y6 d0 l
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222% z- C% `. @; e
  应该用OPCSERVERBROWSER的GetItemId()获得。
7 R; v5 ]& G3 \2 N' i% N  
7 J# o0 X% I; W; `$ n) o- Y2 d* c: Z  修改程序,OK。
9 B$ n5 K; b( O* u4 k) U( y& D  2 x3 P' [  K( b6 ?5 ~. K( z
  还有什么问题,本机服务器的枚举。
' z7 \) H! c/ C1 e% w$ ^  明天再说吧。ZZZzzz# A$ I7 ^; z/ P! l
  ( @5 @1 j0 U$ Q: b: T+ `! U
  第五天
) }) F; J5 w, |" I2 ^  
9 t4 g; W2 v; N0 c7 E1 @3 L  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。" s7 w' U* s+ `9 b  j( O5 x
  : U0 P+ ]4 o! h' g! g
  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。! O+ }8 t5 i+ \+ D, U" y9 v& d' [
  我选择了一个网站:7 S6 |0 E4 F+ V, M
  www.kepware.com' G6 t) w- {) O# H" ]  I1 o
  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......# B1 Y0 _5 z6 _$ n- c
  
4 _. P& l3 R; C4 e/ z! U  枚举OPCServer的法子:
2 I' ~1 c; H& Q% c# G  Dim ServerList as Variant: u* Q# Q4 z0 Z, Q7 g0 V, y! G6 Y
  Dim i as Integer
9 Z1 R, N0 a" X+ C* r( s  Serverlist=anOPCServer.getOPcServer(node)
' V. t4 N$ c4 S& D  List1.clear) i. f( }8 A2 t1 F$ t+ L. l  v: B) ]
  FOR i=lbound(Serverlist) to ubound(Serverlist)3 O5 U/ q1 Y5 v' V$ X: S5 |
   List1.additem serverlist(i)
6 G( B. o% _  z7 Z! o$ j" e: T  NEXT I
( V5 M; a) ?$ v, m  $ ~2 p+ q7 M; ^5 W# l7 k0 d
  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。/ P0 p! r# |, v
  找到了枚举服务器的办法,在单机上成功。7 l  I$ z& Y7 q. \0 `
  其实《入门》也提供了一个DOC文档,是OPC提供的:
$ w+ `& N! s/ K  g& x/ x! E9 L  Data Access Automation Interface Standard Version 2.020 s( y+ K% L  F% u* {+ ?
  
3 F& a# P  A) U: W: P  是一个必须的手册,只是有一些错误。错误总是难免的。, c' _, ^! y# N1 ?3 _4 X/ l
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
: w  Z* N& W5 u9 i4 n2 |  5 I1 Y8 C& |6 Z/ g
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。, m: s3 m0 K6 `" R
  7 v% [1 m7 \5 m$ H
  第六天, n$ v8 E4 z% b7 q* o0 l
  
8 B1 `$ O3 L2 J  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。. {: n8 i) ]+ q' G5 `0 y( [
  
+ H+ Q2 |' w& g! p3 U  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。  O; q, [& `2 {$ Y( I- O0 t' o
  
3 @1 q) h4 S: |% r- g  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。/ r3 E5 M5 j. g
  " x& L0 J% U. v" \% B
  下午休息。6 N* x5 M8 f/ d; z( h, ]
  ; J6 x8 {( x4 P6 Q- r
  第七天) i1 O" Z7 L5 K: S5 Q- e4 g6 w3 v
  
; }7 ~' x; X: }  G, c' |+ H  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
8 d. [* _& V% g7 D  
7 U) t7 e$ f# Q0 K( I8 Q& T  我想起了第一天安装的那些DLL,还要么。试一下4 l0 [% n9 f+ d6 z3 q8 `4 q0 I
  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。
# ?/ v( [9 i# K2 V) b; ]  OPCcom_pas.dll 通用接口
/ N; ~, C; x( }% @6 ]# E7 H  OPCAutoda.dll 自动化接口1 k6 b8 m. B% y; C
  OPCProxy.dll PROXY-STUB
: A4 g' F2 {# o5 {& j5 }. b  $ a1 a" P: C6 B& n
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
4 c1 @0 b' t6 C* A  
3 E3 o" ?1 M9 I, n9 K: c  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。' c7 Y8 ~9 n  d
  
. T& v7 d& P' T6 V" [8 V6 Z  后记
! P+ Z- H4 h4 Q8 P  这是一次入门的学习,本身没有什么。我却有些感想。. V$ Y9 M6 E, a8 X$ v
  ) Q6 f' d/ `, G/ Q
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有: B3 R: ]/ a% l  d' W. S5 b0 s
   OPC ALARM & EVENT 报警和事件: q. L1 l0 D( c0 H! _7 J( v
   OPC DX 服务器间数据交换' W  d2 J3 m' g8 t
   OPC SECURITY 安全$ `, a) E5 N: ~
   OPC HISTIRDATA 历史数据库5 A# n& k8 ]" ~, K
   OPC XML XML6 Y% n$ L: D3 A. T3 f) \: V' f9 e
   OPC .NET FOR .net: h7 m1 @2 W( W5 {) w2 S
  这些对于一种工控软件是比不可少的。' A3 t( e; S3 U8 Z3 }# l
  " f! n$ [; l2 B( f. i
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
5 `  G! ]# E8 v' h( z  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。7 x; R& Z6 F+ }9 R% Z
  
, {0 z' q+ O0 t) g  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。! n  n/ Y7 ?: C; R% L
  
/ W) X) k/ B5 V- s. c4 O  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了
' k( i- T' A* t( P% ^- L9 ~真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性9 b. z. j' e& d5 Z
书还是买来看好,提高的快。, g/ y* M  X( v% U9 Y

8 z1 O: M6 y/ q, E8 S' Q- I# |: a[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
8 `5 U, a4 f  W5 k5 Nhttp://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 )

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