QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 6000|回复: 8
收起左侧

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
. P2 l* w! T7 E1 G
  O, f, O6 b; r# @  C' C& R[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码" l, _6 z9 Y1 R7 ]/ \+ y
CSDN 下载频道: S4 j& v# V3 N- r
$ n9 t6 y* N" Q$ i/ h
http://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)* }( z* {+ H' o5 M2 Y( h

6 z$ G/ q0 q9 Y1 K* Q我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。8 M9 n/ g- \' B% _
  
1 S/ ]' O& o5 t+ n# `  第一天  T" Z$ g8 B1 \/ q6 m1 s3 e) x
  8 K- s- w* p- G( k+ R) t. ^
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
+ B+ q) r6 B. m2 a, {1 m  opccomn_ps.dll6 d1 `7 b& ]7 s( F. |7 w7 ~! w
  opcproxy.dll5 r- r% ?3 C. Z0 @
  opcdaauto.dll
6 j9 x9 K! U/ A, _4 o  OPCTrend.ocx
( F; A" ?' s4 b6 `1 P  OPCBar.ocx) K4 Q* e/ T5 O6 Q
  OpcServer.exe * C4 X# u: w* }' ]: i5 m
  OPCJDADemoServer.exe
" J8 p6 u. Y- O* @( a0 Q' G0 v  3 H7 k/ E' W) _5 ~7 z
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
1 E! ~. _/ K( _, M, X4 p2 j  后面两个是demo 服务器。7 J( ?* i( N# x% S4 R0 @4 E
  
8 g6 V# X, a$ \, T  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free# p" D) b- E1 b" x# }9 G
  服务器。安装了(注册)。! U. E. U) @9 z2 Y
  : k0 I9 R2 c4 r: X- {  U
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,/ t9 i- a5 ^5 C9 U1 }2 V6 t% z
  
8 c9 ~$ C$ T/ N, W  点击连接服务器图标,立即出现了三个:
4 V, x: @$ s, A$ `2 s6 J1 w0 l& g  OPCJ.SAMPLESERVER.1
0 ^1 e  J; d7 V* Z) W: ?! ?* G) z3 U  OPCJ.DADEMOSERVER.1
$ E+ d; g- |# [8 J4 j  HEXATEC.PCDATA
5 l2 E& T2 L- m. u; q, r  / i! ]0 y4 H6 `6 x' Z
  第三个是opcconnect上download的计算机基本情况的简单程序。
  A: H6 u+ l  Y/ f$ A  " \: _1 C, N9 o9 j4 y5 B0 b
  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这# L& V3 G5 v$ Y# t% }
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少1 C3 B& N( I9 }3 L% j
  人敢学,也就没有市场。% ^& W2 A/ G8 k4 S3 o2 k
  
( ~+ k$ F1 e: y9 }+ C6 h; t  有一段时间没用VB了,先热了热身,看了自己过去编过的code。
- u& b- L9 }3 I. z: w8 o  第二日& H# E- \2 r0 E2 D# u6 T
  今天先看书。
- ^& L( a5 r$ q$ W! ]9 _) f2 L  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。% k; j& c4 m- V1 Y1 @! U
  ! N. h; r* U. S  S7 m/ m
  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。! `; V4 X' J* q! V( Q
  
# k0 c9 u; {4 p9 ]  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。( `( M) C4 d$ W& l8 N
  ( S, _; K. O, R! r5 t& P
  书上对OPC体系有描述,我画了个图。, @7 z& p. S  F! Z. H, l$ x, E
  
! i& t/ k9 m; l4 v% l
2 ]3 p/ Q5 M' g6 G+ V
: s6 E! H2 y2 T6 b3 h8 t  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
/ S# ]0 d: r1 X9 O# @  
7 ~6 I5 d7 I, U$ A! r2 ?& I6 l7 f& m  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
' m8 r$ B: ?" R8 s  
( c; C8 q* X# a8 h5 {/ d* W& m; i  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。
/ t' l2 [4 t  u$ S  . s6 ], a$ `# _$ d3 a- ~
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。3 z8 K4 |* o& [* J% P
  ; s: N( C" f7 ^# F5 c) k
  我在第一天中安装的几个DLL中:5 Q- s/ e4 }  B1 v8 L$ ^( {8 Q
  OPCcomn_ps.dll 通用接口% \! l+ _! r3 Q8 ?# q5 e3 J
  OPCdaAuto.dll 自动化接口
* e& l- M/ U9 I+ @7 \1 a  OPCProxy.dll PROXY-STUB
8 j; c$ m: ^9 u+ G* q% i  c8 [  
4 j2 D3 V# ?. `! j/ d  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。: V( K9 u  T$ c4 c  a! R
  
" w* V" u- c" ~& o6 D, g* t( {  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。) ^$ H4 {1 F, H
  8 d- f/ p4 e& W  i2 U' g
  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
# @0 W2 x, U* f7 e( t3 U: n: [  
8 S  w6 s6 F) \1 P. b3 n  按照书上的顺序,先了解OPC的数据组织。我也画了图。
: B* j4 p  |* U   , F8 F7 ~5 N9 ~2 U/ q2 R% ^
8 I7 U* p4 A* X9 k! b: L
% l& n+ m+ I' d0 }2 Z
0 t; q/ o4 r) ^% B
  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。
! b- z- S9 y7 M4 ]4 E5 z  ! ^' o4 D  K. {7 K$ P
  根据书的介绍,要访问标签,还有其他工作要做。1 L  K! Z4 k% F  }$ g$ O
  我累了。明天再说。) B( c3 o# ~( q! l) v% ~6 Q9 Q
  $ v3 M8 v4 l- b% y
  第三天2 X% l  _7 ^# f
  昨天说到访问标签先要做些事。
* x- g& f: V# l* }  A  
( O4 `/ [, g  o  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。
; G3 w  J3 q! Y4 p4 F7 R% q  
+ A9 B+ s# [/ K* t! i  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
( w9 b) q* G* P* V6 Z# z  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。' [0 w' p: ]2 {
  
4 _8 F; g  Y" |) V: b* {  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
1 M! {3 }  |- z3 }  直接运行,没问题,看到了数据的变化,决定看其原代码。
3 F, I4 i, `" l- c7 z5 F- Q  
7 |% P2 n. }" v& ~  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。2 E0 x5 G) Y, _& X
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
+ Z+ {- N* W1 w3 @, P6 Q: L  ( ^  l2 g6 D3 B3 t2 D0 S
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。7 y4 W, i4 ^, s  P8 u6 k( n/ U: O
  
& a/ R0 L+ {( W+ X' ^3 T) X  f; D  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
6 b" Z7 r8 a, T9 P+ q, K  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
' N8 z4 Q1 x* @- B) M6 R  
7 J& s3 p0 d" ^. i% \  我给自己留下了两个问题:
) x, M: a* B, ]   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。
8 I/ t( m2 c. y. ^2 h  [   2÷如何访问ITEM,取得其数据等。. T% R+ M4 Q. I3 w# P& S) r
  ; t* h* T& z2 `. H( b& z
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
# I9 A* x( B) `2 `" M$ \  今天到此为止,& F3 {/ R, f; o0 H# I+ J1 {% q/ A
  休息
8 ~7 t+ b; {0 P4 ]  
/ W8 u& Z( u! @  第四天
# U  B+ V" H- u  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot+ b2 S4 x( \9 h+ R; W
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。
2 L" M* t5 O& C( ?$ F6 r$ s' L0 Y7 b  ( U1 N1 s& W7 s9 F
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
  S8 }/ M+ B+ s% S/ |- u% t4 k+ F  
% \$ r+ @  R( H0 Y/ r/ z  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。5 z( D5 H0 A: P! ^. o/ i0 |# S* G7 T
  % H* n8 s. e- W. z
  我添加一个组,在其下面建立标签集合,然后用:1 [5 W* V( z8 H, i8 o# w9 M
  标签组的ADDITEM方法获得句柄。% z; d" b$ b% \* g
  用同步读方法就可以得到每个标签的数据。, Q$ G7 {* l6 }. d1 z) I3 i) F
  
8 b$ t( K1 ]0 A) i( T  我发现有问题。昨天我就发现有问题。+ P5 U0 Z. v5 I5 N4 Q" T
  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。+ V% m3 E7 b& k3 l& T- u
  
1 b0 d  c- S  K, w& ?  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况
2 J+ w/ l( E( c. d: G' U  bch1(树枝)
  [* R: u! R; @1 X5 m  tag11(叶子)" l9 e5 J& v8 x/ E! j8 C7 [
  tag12 (叶子)  y* |* c+ \0 {, m0 T
  bch2
9 }/ z( I! y8 w5 D  tag21 (叶子)3 B% ?0 x0 u: G
  bch22 (树枝)
6 \7 X3 ?' ?* U1 u" {* a% K   tag221 (叶子)
1 {  }* l$ I9 i   tag222 (叶子)" G/ i$ E9 A( g. v9 }
  
5 \4 q& d# |( U' R3 O  4 D4 t* z; _: O
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的
0 g* b. R* H  A+ d4 v  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222
4 j' t; V+ H+ L5 K9 p" h" l7 K  应该用OPCSERVERBROWSER的GetItemId()获得。
1 `- E) J/ S' u4 u2 o8 _# E) Y& C  9 N- Z" z) Q1 `3 V1 j
  修改程序,OK。
1 q) H+ d" I" Z1 e* k& w- j  1 y& U- T( M: v/ `
  还有什么问题,本机服务器的枚举。; H7 X. q- W; Z' X  e
  明天再说吧。ZZZzzz
* l# S2 e- h6 m$ [6 {  , B: X+ D" Y4 i
  第五天
# z! ?+ X8 f/ p& o$ |8 X% ?* a  ! i# m1 j) k' a& W
  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。
' @, h! F( a1 S# ~' N* ^8 T  0 D# C! ?0 K/ ?9 ]
  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。
* i0 v9 a: ?- X; \  我选择了一个网站:0 Y# N/ s+ {0 I: `% \- n0 J" v
  www.kepware.com
- L3 S, `+ y' V  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......% B5 I4 j) x( [' W* }4 p% |! D
  
# {" a. R: o' j1 Z# @* {6 q  枚举OPCServer的法子:
; l" S0 E$ c% t% E& B  Dim ServerList as Variant
1 S5 [; l( R5 [3 W' \; O7 ]! F  Dim i as Integer4 ^5 P; t) e' |+ x9 l, P
  Serverlist=anOPCServer.getOPcServer(node)
. X0 W2 B9 i3 N& u0 a) l) R, w  List1.clear$ [# V0 D4 Y: b6 ?+ F3 V
  FOR i=lbound(Serverlist) to ubound(Serverlist)
0 _: u# a+ h- G   List1.additem serverlist(i)7 f: B3 D1 E3 t7 g# y
  NEXT I8 g: a( B( D# w; s* p4 h( J
  ! e3 o* w- q" d/ L1 e# O
  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。
. H% h- H+ ~& A6 U' w% [$ S! ~% B  找到了枚举服务器的办法,在单机上成功。/ r5 ]1 y4 o2 j0 n$ p
  其实《入门》也提供了一个DOC文档,是OPC提供的:
& s% e, K( q3 X. X, K& z  Data Access Automation Interface Standard Version 2.02
, k0 K- d7 Z3 t  % n7 c# G* l* p: d( f
  是一个必须的手册,只是有一些错误。错误总是难免的。' U0 w4 S0 x, W& A$ _
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
$ x$ m8 x9 d! G" ?7 R$ N% e  
1 T  A% G8 M* o0 [, E( J6 F! n  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。* k. u1 t9 a5 n1 t0 M  i
  
/ k% o$ R0 y$ H& Q6 v, c  第六天
% F: \5 n0 M3 @1 }* C8 G  ! m1 U2 ]; ^1 R! R7 q8 h1 M4 E! ~
  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。! \& r9 t/ t) m0 ^" r8 ~
  5 `# Y' r; N4 p
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
3 x# `7 `) J& U0 }1 L  / s$ M( V/ X; j! U0 n) C  ]- W
  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。# z( C- s  j! G9 b4 H/ P8 C4 y* O
  
0 V: _/ z$ n0 M1 S8 ~  下午休息。
' @" ~. h0 s. \5 {, T( C    \9 H7 n2 C  a$ ]5 L3 {
  第七天" ]8 K- m+ o4 x4 j4 l! n- H
  
) X- O4 q1 N. j) Q1 g8 q; g  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
' l+ X  O$ e) b4 n/ s8 R: f8 L' y  
$ _2 b9 G1 L9 L- [9 p5 U$ Y  我想起了第一天安装的那些DLL,还要么。试一下
/ D; N* N. y" G) {4 h  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。
1 k% k2 P' _$ ~( p- t' ]  OPCcom_pas.dll 通用接口
# x& @5 s( m  s6 T7 P3 w' V  OPCAutoda.dll 自动化接口9 a/ C2 w3 [, n" o3 o! S
  OPCProxy.dll PROXY-STUB: }$ |! s' S; _0 l( Q8 E- [( {2 @
  ; M! k* z1 X1 {# @( |, D+ _
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。# H7 ?9 C5 X/ x7 o7 f
  + L- o, _. ]; _& E, q0 Z& |0 v6 _
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。3 r, a3 h& e8 j8 a% n0 q, v
  
4 |5 I# G# B3 M4 n( ?9 Z  b  后记
3 E* _  Y6 s# J2 p% l6 A; f  这是一次入门的学习,本身没有什么。我却有些感想。
" f5 d7 C. s1 p! O2 T) L  
; x7 m5 J- p7 k6 I, I4 w  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有6 D5 S- n# Y2 j% J% u
   OPC ALARM & EVENT 报警和事件6 N+ D* d6 T2 N1 j: a1 _
   OPC DX 服务器间数据交换  q4 P7 W4 U  q" R! P
   OPC SECURITY 安全
' v5 O4 h$ l4 i, E   OPC HISTIRDATA 历史数据库
: F7 v) l. @* ~7 p9 g& X   OPC XML XML
9 d) r1 z* r$ U; Y3 t% b! }$ N   OPC .NET FOR .net4 X& D: u- V' k
  这些对于一种工控软件是比不可少的。+ ]$ o. b2 Y; M  f
  
5 ]8 c6 c- j2 `1 |* b$ a0 T- w& m' [1 b  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
6 y: |, D% m& m' D! _  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
4 T) d4 _1 y* t9 G5 s  8 R+ v5 Y' \# V2 B
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
( q  Y5 A& p3 x/ d  6 ~; c/ C2 Z7 X0 ^% y. R
  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了
) W2 o! N9 l* N) O: U# h真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性8 T9 p8 X9 @  C( t+ o
书还是买来看好,提高的快。% g' f' ?& J  H7 p# E- h7 n8 F$ D
2 T2 R6 b$ R3 H7 i6 B; ^
[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)5 p, L3 }2 p- ~3 T
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 )

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