QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
, t, `  G% \7 k( K- V9 K. {; \+ ]
1 G% t4 e; L' l+ p[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码& J7 Z0 l) D2 ?1 i
CSDN 下载频道
! i8 V; a% v) X* I% M, f9 ~. a4 \2 N
http://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)
7 p! [8 X- f* L- x1 F' _! T8 K* s9 D8 C  j9 e+ J: C9 H
我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。5 h! z% D! j7 K2 Z. n
  
4 e4 N: ~/ E! O  第一天" S+ P' R9 ?" @4 q9 ~* n- ~
  % f7 F9 o, c9 d) ]3 o1 u4 X
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
9 I: E9 `. L( B  opccomn_ps.dll) U- ?  ~( E( U3 c- V
  opcproxy.dll
/ Q* Q5 V; ~7 s/ X9 j: n  opcdaauto.dll
3 Q0 @+ ]7 a* G" q2 l  OPCTrend.ocx
- P8 ?6 `  {% d7 Q  OPCBar.ocx
! n% p2 C$ I* R0 n% ^2 O  OpcServer.exe ) d3 t1 C/ l* N
  OPCJDADemoServer.exe
# a6 V% B/ H( b8 n$ w7 m, E# w  
9 u0 ^& m" U; a! V# C1 @  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
, \( V' M+ W8 {" F" w4 s+ \; l  ?# a  后面两个是demo 服务器。
" R8 b4 ]% B8 {! ^6 k, y- y  ) I8 k) H' Z% D  B' J
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free( o* `3 A2 v, {
  服务器。安装了(注册)。8 B' u* r& h/ T# q1 M& S
  4 R& p; S6 P7 z3 S- d5 \! N& p" j
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,. k9 P" t! @9 d5 K; H$ n1 ]
  - |+ \  m: r; O; R  X
  点击连接服务器图标,立即出现了三个:
6 r' r7 q  p3 h8 j# E  OPCJ.SAMPLESERVER.1
5 a1 t$ A4 _! `7 Q  OPCJ.DADEMOSERVER.1
, C8 r, B2 X: E7 R7 d5 Q  HEXATEC.PCDATA
9 j0 u/ X1 X' v3 O8 Q  
# l# S+ \5 z& E1 t: H& I  第三个是opcconnect上download的计算机基本情况的简单程序。6 z/ a( A( V$ J9 w
  ) I0 d2 e# P$ k0 Y+ L: J' Y+ |
  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这8 `* _& ]4 k1 ^" J
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
4 m+ o5 S: ~( V  人敢学,也就没有市场。( ^( E. \; X0 ?* }5 U2 F
  
, f3 F2 t& ^! w0 L8 f  有一段时间没用VB了,先热了热身,看了自己过去编过的code。2 c' f0 S$ j% y( S8 @$ j
  第二日
' l& X) h/ U. j  今天先看书。) Y% _7 U, b1 d' l# O( ~3 Y
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。' B1 p& ^# k( K1 T
  
3 O: v/ C, g# z  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
5 d/ h( g$ W3 m  % \9 C9 _8 u" A( ^  o
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。, ^" c* L! T5 K' m; C
  
7 B7 B0 q, W3 c' d  书上对OPC体系有描述,我画了个图。
$ I! L; T, I& H: F. g/ N5 r   - q$ S8 p/ R. i/ K5 G  Y1 c( i
& N/ p$ n9 D6 f
+ ~/ k0 q7 }( b; a, M
  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。: h9 t3 [& G4 ~% M* l2 `& B
  
. c: I- t) ^7 @2 X: C  @; I  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。3 D/ b6 a( {) ]" @; s  A5 Z/ U8 A
  
( a$ q% P* [+ W- Y+ f  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。4 F+ q" f+ }5 j
  
' F/ X2 @# U2 e4 C& b: y% q  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
- T0 H. P: l- q% a6 U0 e1 A  U  - S3 t* H7 ~" ]$ p" X' F, L- y
  我在第一天中安装的几个DLL中:1 |+ I+ B% D3 F7 I6 o  C9 R
  OPCcomn_ps.dll 通用接口/ M9 ~: q8 b) \3 e( \5 |5 m( S& v
  OPCdaAuto.dll 自动化接口
/ R, g' N7 |- W8 T5 P1 ^9 x  OPCProxy.dll PROXY-STUB$ T/ v2 t9 I7 m' M) X$ ]- M
  
6 g' n! q. h0 X  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
, ~! o$ Q  J9 g8 N  
. K* M1 w9 ^, j  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
/ L5 c; }# X' T2 J; D  
9 _9 z) }1 w* W/ _, j  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
7 ~& x, H, `9 {0 h  
9 V$ K% c. f* J9 x% [7 l  按照书上的顺序,先了解OPC的数据组织。我也画了图。3 r+ S. y8 D* S- B  k/ A% c
   " J6 W! r  {$ v5 {* t0 y1 n6 x

# V3 L! A4 I. ^
* J7 R9 g+ w; ?
  X( G! |& v6 G- D  W  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。6 m2 y& ]( y8 t  C( o& t
  
3 H: M1 E% J& {  W  根据书的介绍,要访问标签,还有其他工作要做。
; k, K' N8 R" F! J+ y) @  我累了。明天再说。
" I, ?8 E7 ^0 ~( b. i  
+ i3 M% e6 T5 s9 D& e  第三天
8 N! Y% t7 u: Z0 A  昨天说到访问标签先要做些事。
, U% y5 C! O0 t% Q1 V  
# Y0 D* K* R; r; @: N  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。% }7 z% F, H0 a  T: F" k5 Q8 o1 |
  
4 d1 ~) f6 [& s) M, [, F- a  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个$ e( g3 {% R  X% g
  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
5 X( w5 ~3 R/ F- A5 z+ v  # [3 K( }; [8 {3 v9 b" A" g
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
! Z6 x8 _0 }. i  F, I; X" J2 `  直接运行,没问题,看到了数据的变化,决定看其原代码。
& y% X3 P; J- K6 O  ( z- H9 u6 x+ Q" r& G
  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。
' y" {# C3 q  q7 s5 H4 k/ H  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
2 m( ^$ E( Z/ r9 W6 Y, Q  - T3 }0 U# h" U4 n; ?/ ]6 @
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。
& t9 K4 O# [1 b0 X5 d1 k  
6 P  l  X2 K6 X# c8 a: v! U  g  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。7 j; S( n' j! ]
  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
; m8 h1 H# j' F! |/ w# F2 O- L  
: ?* N  O( {7 b  我给自己留下了两个问题:% x! |$ u7 `+ h- b* w* z
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。% ^+ L& m' P# ?" E" p; A
   2÷如何访问ITEM,取得其数据等。
' d) `, E' M) U, Z9 a  - l+ }" K9 L, g0 i% t7 c
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。% V+ ^# c7 S" z* ]& l; j' g
  今天到此为止,
# a' x$ c/ J6 X* z. Y- ?9 t  休息
0 ~5 p3 w" w! v: C  
! N$ x0 S6 W7 k. X8 g  第四天
; G. G/ l0 v9 b/ E/ P  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot& W1 r5 l7 \7 E8 ?& c# o
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。# s4 r$ n8 `9 _+ L/ J2 Z4 S& G
  
2 K; q6 T  L8 _8 S  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。7 {. a: c' f- n; U
  # ]( |6 S% M2 t+ |" b! }: r& ~7 O
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。( a" i3 N( a0 J; k4 A; R
  
: p. T, S. ?2 l; F  我添加一个组,在其下面建立标签集合,然后用:2 N9 z8 i* P4 B' W6 ?6 M) e
  标签组的ADDITEM方法获得句柄。% s5 \0 c2 ?5 ]( c5 L
  用同步读方法就可以得到每个标签的数据。6 a, e5 Q* `7 z+ p$ E  g2 }5 n
    b8 D. M9 V+ E& @, R5 S, T
  我发现有问题。昨天我就发现有问题。
. |: m  [( T1 V3 i1 f; ~  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。' Q# F# |; H7 p8 R) l5 L
  
7 i7 ^* a2 \. F" q) u; ~  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况3 R/ h" Y9 g' k% @+ L! a6 W
  bch1(树枝)- |# O2 b2 W+ N2 w* U& h
  tag11(叶子)% L, ~) ^0 ]' d
  tag12 (叶子)' v6 O. q$ o8 y3 v/ Q* X
  bch2
4 f' ^4 M. Q6 T1 T, i' ^  tag21 (叶子)9 b0 N/ p! n# D: _$ i" v% B8 B) `, l! c
  bch22 (树枝)
2 b- J6 Q0 p  }: D   tag221 (叶子)
7 A0 g9 p9 T! R   tag222 (叶子)7 T1 N2 d8 V! y, U
  
6 W$ o9 }0 g6 @  & |' h  T5 x, y+ I* m4 R4 g
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的5 D. r  @$ m3 K- e
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222) d* p, u) n. v* f7 j& P
  应该用OPCSERVERBROWSER的GetItemId()获得。8 N( T0 V2 D/ E) J# D( r) u" x9 Y
  2 M) B( Z  ?0 w  A! _0 V
  修改程序,OK。
+ V# D& [. d/ a4 r5 p8 Q% o  
' s2 S: M' k# a) _  还有什么问题,本机服务器的枚举。
; b  Q7 P7 i2 @6 l  W$ k- W4 r2 L% N1 c  明天再说吧。ZZZzzz
& W4 E# k! o: a$ U0 u* N0 x  
& _# b2 @9 ]  ?1 Q0 J# x9 O  第五天1 @$ V  ?7 X$ Q
  
  f( z: `. C) j9 X. i# `2 b: Z5 S( l  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。( V& h. c8 w, o4 P5 O( x
  5 T) t" o+ C5 |
  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。5 U4 K$ v" w. w
  我选择了一个网站:
- z' T+ o5 Z% A' `6 R/ n  www.kepware.com  W9 {& ]5 p9 d6 i% u7 @' i
  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......8 E8 ~9 H  D, `% Q& x
  
# e5 W3 x8 ?5 X6 S+ q  枚举OPCServer的法子:+ _3 d5 Y# K( M9 a9 j3 U
  Dim ServerList as Variant, s9 i$ \8 F2 s8 h! w, A4 w* o
  Dim i as Integer- q9 s3 A5 q2 x# l7 q. {8 O
  Serverlist=anOPCServer.getOPcServer(node)
! G5 ^' D$ {% w: A& N5 p  List1.clear( d: i" r' H8 C$ n1 L2 e
  FOR i=lbound(Serverlist) to ubound(Serverlist)
  j  [( y# f7 s+ V7 N   List1.additem serverlist(i)# ~4 G7 [4 t7 {  w
  NEXT I- U2 D% q8 {# g# o* u5 m
  " y: p; ]" o0 ]! J! z5 i- J( I8 c
  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。
" ]8 r% I& u1 e" w( H" G# f  找到了枚举服务器的办法,在单机上成功。+ i' R- Y2 o- y. d- I9 p( _/ a3 E6 e
  其实《入门》也提供了一个DOC文档,是OPC提供的:
4 k( F1 c+ e; q! j+ ~9 e; M" z  [  Data Access Automation Interface Standard Version 2.02
1 M' p6 @# g1 s; b4 G- c- e    B, j+ ?7 x# x. W
  是一个必须的手册,只是有一些错误。错误总是难免的。
8 c3 f# A- p1 U. P1 r* @  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
$ m/ F. }3 ^/ y2 c3 w  ! X$ o& Q5 K; d# P
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。
6 X' N# K( n  ~/ T  " x% V3 R, N  H+ U
  第六天
$ I7 o. a/ ~9 Y0 m  - |' u7 R' |# N4 l  b. A# k
  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。2 y' k7 ]; c  S2 g% P
  1 U; C% t, [! u* |0 `
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
$ c/ Q% W, U: f' D8 b  
2 R. a! l- c, F& [: z  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。5 x6 V3 Q' Q# V) i: m( f
  5 R2 T9 B5 ?7 d. l0 u
  下午休息。
, {( r2 T' Q! y! b( ?  
* K+ r0 ]0 Q; y3 F& d  W/ ]% H  第七天
& ^# X- p9 c% ?- |  
/ }1 i% ]3 s1 q4 [# C6 l  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
3 k. b* m' _$ T# O  
# [3 K0 c) C* H3 U# Y1 i0 v  我想起了第一天安装的那些DLL,还要么。试一下
  k3 z& @! X  x( b: k/ Q" r, k  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。( w& U1 k4 x) h, k
  OPCcom_pas.dll 通用接口( B+ l, i# g$ F6 `" Z$ i2 ]8 e# o5 B% t
  OPCAutoda.dll 自动化接口8 ^5 g: v8 r% }" @7 l6 h
  OPCProxy.dll PROXY-STUB' X3 s; t: A# I3 f
  * r# Z/ B9 z+ D1 M' h7 U' q
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
# x$ D* A$ M; E) Z6 \  \  % ~( m- u3 ^5 |
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。
2 t, ~% Q2 R- k, n  * b1 Z3 R6 N" X1 v7 a- z4 `2 c( i8 E
  后记
, ]: w4 S% t$ e+ R" Z  这是一次入门的学习,本身没有什么。我却有些感想。6 `; E7 X6 ]% A5 @! a) T
  - s* K) z) |3 W) j; e
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有  _) J- J& p  x; p& i
   OPC ALARM & EVENT 报警和事件
, K5 `9 a9 u" G5 x4 K! E   OPC DX 服务器间数据交换5 z" D* g; ^2 F, R0 y6 e
   OPC SECURITY 安全
( A+ ^  x% X3 {2 ~) ^   OPC HISTIRDATA 历史数据库8 F9 D- A% j7 |' g; a
   OPC XML XML4 V9 \! y0 ^' m7 E8 [9 W  J  L
   OPC .NET FOR .net: c: y5 U- [8 F1 ?6 _) Y# u
  这些对于一种工控软件是比不可少的。
2 _3 u0 `$ w2 M, j/ x% F! b  
; r1 P+ l; p5 N  B. g  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。0 P( x7 P) C% ^9 S5 b" d* O5 d
  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。/ E7 @  z- ?: L, Y( u
  
+ ^) p& q' f5 H$ M; o4 U" \  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
- Z6 W5 s5 z& y( p  / t5 B6 A' k* m: ~; y, y" O- D" |
  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了  j) V6 T2 Y- v: |. F. Q
真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
. @4 C0 a5 ^/ Y0 z$ m, c+ Z书还是买来看好,提高的快。
7 M; L8 p/ l- g5 b
2 X5 [' p; x& B5 }5 |, Z[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
* p. B) B5 p9 |' D/ T0 L- [0 e* hhttp://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 )

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