QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.1 D7 e, l3 [1 y
- ^2 |9 S4 t8 |. q4 j
[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码& I: x) J& e. y; Z3 E
CSDN 下载频道* q& w, x3 h, o; n+ R1 w
# z5 Y! R  Y" L% o
http://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)' Y: |4 \# \6 U8 n' a" m  g- d

+ h' K, }0 R' g  y8 ^我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。
' R: ^( r! p( h" q- \1 n- F  
  D: _+ M1 a' a" Y# K* @  第一天
8 U; t$ U9 }6 U  * q& K& {, x" t. m0 T
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
( k3 Y0 b) q; C2 j2 f  opccomn_ps.dll
: A5 ?1 e3 t1 v5 A" N2 x) I  opcproxy.dll' `' ]4 n( h0 x/ O% y
  opcdaauto.dll- `4 b8 |* l- d- w: g% Z% s9 ]
  OPCTrend.ocx
' i, _. l8 ~- F  I  OPCBar.ocx
/ V8 h; G' N) H8 q. J4 s3 ^& `8 `& J  OpcServer.exe 8 D, s) @# L; T  T( g% s; w
  OPCJDADemoServer.exe
$ r6 A9 ?0 P/ r* L  + d1 z/ I3 \" X4 T% I& D
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。* S) P' I+ G4 E) q$ V# v
  后面两个是demo 服务器。
) K6 V- `3 @" u1 {/ ^+ Q  
- e- ]; R# ?# B6 o- w: F, @  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
( p  G$ F0 t$ J  服务器。安装了(注册)。7 q# R( W3 q+ n& F* i
  
, E6 \7 q- k- }6 Y" ~6 u1 ?9 k  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,0 [) U: e' S4 t3 j
  
, K  c9 O! H2 T, A7 k+ I5 Y3 @  点击连接服务器图标,立即出现了三个:
. L) J) w0 ]5 b+ T, S2 v4 r+ P  OPCJ.SAMPLESERVER.1! z/ ~7 K, A+ O7 M4 U! N& y7 E% ]& P5 ^
  OPCJ.DADEMOSERVER.1
  o, o8 }& P( ~- G  T8 U/ X  HEXATEC.PCDATA
% t3 L4 D9 v; g, W' m  
1 c7 w* ]# ]" f1 Q  第三个是opcconnect上download的计算机基本情况的简单程序。
5 e  ~9 i* W6 P7 c! w4 T8 i  
8 k8 r/ r" U! k4 o  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这8 @5 m* D  o# I( \) Z- K9 p; y/ A
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
* b, I( ?, X; O' ~  人敢学,也就没有市场。
2 a6 U) i- T; {6 w' Z  
; G* a. B1 E9 v6 S& N5 b' D) t3 A  有一段时间没用VB了,先热了热身,看了自己过去编过的code。
7 p  w3 `4 E( i  第二日
4 P! e: h7 m% R% W- _  今天先看书。8 ?# f( J9 J& G4 P, b6 _
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。
& k; E9 P: g- X9 z. a* j  + B6 v* F# A5 z
  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
/ N' n! l5 D  F8 e) s  9 _- {8 n2 n( D" j: I" j3 m
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。' x& O" C- P8 H9 M  F" ?( m
  . H% F! g+ f* @1 L" C3 ]
  书上对OPC体系有描述,我画了个图。' w7 Q( ?2 M$ {" n" d5 S. G2 W# k9 f
  
% j0 ~8 X# A3 W' Q9 a8 b# K. s. Z" S1 R2 g
7 d# n. Z0 ?2 R! O# H( G' a
  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。! J% h9 |  R3 Y* |. e8 O
  
5 D4 A; I9 a% f8 g. X: y& s  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
7 c6 I5 r3 d9 Y+ E1 c8 k8 y1 U* U    s; j+ O( e4 T
  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。
9 \; W7 ~# L0 M, c$ v: m, e( j  
) |% C2 O8 \8 D  x+ q. S  ^  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。+ M- v% G! c0 w  Z. S
  
& U& n2 S  _! g" h9 z  我在第一天中安装的几个DLL中:. t1 F9 u3 j* \$ T! l
  OPCcomn_ps.dll 通用接口+ ^: \$ E6 F& E" q* X8 |5 {% G
  OPCdaAuto.dll 自动化接口% x; U9 I# z+ A  d
  OPCProxy.dll PROXY-STUB
% \0 V4 ^8 S) t, o: O. ~$ s  7 y8 F! ?) @, N+ S' H8 y
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
$ U& Q' i- ~  O9 R, K; K+ Z6 W2 n  
( Z: f& ]) c, P! P' B# r2 B  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
. b# d6 n& x* l6 Y6 D  
4 R. G$ P9 a, |& F1 [. j% L5 u5 `  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
1 o& e) B+ f$ D' B. g4 x+ U  
; w4 _0 w/ D7 }& k  按照书上的顺序,先了解OPC的数据组织。我也画了图。+ ~% Z7 Y  _- u- Q7 s
   9 @6 P# B6 r) d9 L1 Z4 L1 S

7 W: a- x2 v3 E
  K" ?6 x+ ?. l! U) l7 L
7 b& P7 X( Y+ y  n/ R) L+ @' I  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。
: K/ W1 X! ~; q8 h) ~  
" ?$ q9 V8 M6 [4 z% h5 B+ w, [  根据书的介绍,要访问标签,还有其他工作要做。
2 Q6 V' c  T8 p- x/ ~, n  我累了。明天再说。
/ A/ S$ w9 u/ F% q- X  3 t- S: L, D- U; E: d
  第三天) c$ a6 b/ M, B- F
  昨天说到访问标签先要做些事。
; m3 R) ^1 k$ b8 `; e  
" ^! C5 g8 a, \! U0 S  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。
' a# s- Y$ ^% \+ @  
  _, y' v8 u/ q$ ^  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
* i* k7 i" s, R  S, j" E  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。; q- F& P1 G. t7 K
  " {7 }$ r3 W' j
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。; F! I1 z: M& t2 O
  直接运行,没问题,看到了数据的变化,决定看其原代码。
- W: {: @4 I# v: w  
1 L# [6 T$ o' _5 b  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。
" G% B7 h7 e! [2 V8 H: p  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
4 ~3 c- K4 L( G! Y' F9 C& W  ; K/ T- P/ n& ?. E/ Q- Z5 e5 r8 Y
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。, v2 ^( l, K! ?9 Q/ k
  
1 F( R: j( E% a& G0 Y- ^' W2 I  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
8 k' J- l$ R% l; q  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。; k2 a- ?7 [. @7 S6 G) v# \
  
2 I8 S) y" r& G/ Y( M  T$ F% s  我给自己留下了两个问题:; R! S5 e$ V" |0 e6 ^" A3 m9 O
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。+ T8 k- W* }9 R7 ]  [$ V
   2÷如何访问ITEM,取得其数据等。- G6 F4 W# t, h. i8 L
  ' W. w; O2 T" e. F; N! |0 G8 `* ~
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
, P% j1 d0 V" |$ k. e  M7 h7 o  今天到此为止,
) p. f% S# Y3 m# E  休息; e3 ?& H. B  M% z
  
. J! ~4 A- p8 b  ^. p' v5 c  第四天
/ D' c6 W4 \7 e2 O  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot
, r1 d0 [  y9 H0 a' k  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。
9 ]* d& F/ B9 O8 E- c0 m- T  ) {6 }$ I5 _( h, ~! I$ M
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。, u' `' W0 ?% ?) C' f4 A
  
6 {; x4 U) q1 }4 z) S! _1 y$ r  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
; N! B" P7 ?- j5 P. v. B" D  * `0 ?: Y: v4 d+ U) `3 J% C
  我添加一个组,在其下面建立标签集合,然后用:" F. |4 S8 w' d! K
  标签组的ADDITEM方法获得句柄。: o! X; I2 e5 n. w) I, e; L
  用同步读方法就可以得到每个标签的数据。
, z; O5 p9 l* n. ?7 W  l  
+ c- i+ N1 ^2 F9 K7 I( p2 W, G, G  我发现有问题。昨天我就发现有问题。
9 _) C( s( E/ o' U* h. P  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。) E* q5 U9 E# }
  ) y+ I* r4 S6 Z5 I/ d& e6 z
  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况5 t. o4 z4 J# c4 j; b6 |: A
  bch1(树枝)
/ g1 C3 U6 m& i  tag11(叶子)2 H  A) R; w. t& l( ^: [$ a- Q
  tag12 (叶子)
; G, ^/ d9 U% S* R  bch29 h8 \3 [1 B% K
  tag21 (叶子)
# A+ D3 a$ u) M- m* h# K  bch22 (树枝)9 v, }' ]4 W/ |6 ?
   tag221 (叶子)
9 E( M( @& R- X   tag222 (叶子)
4 _& o' t% y" ?( A" D  
% O  Q- d) i7 j# o! w$ H- M  V+ F0 l4 J  & [6 P) C( g: b: i5 N; O) }; w
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的$ h/ ^' R' h' ?
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222
: x6 e, b5 h4 _3 Q  Z  应该用OPCSERVERBROWSER的GetItemId()获得。5 C  a6 R- m, K" n4 \- B' U
  ) H5 p% j8 z8 u0 M$ O
  修改程序,OK。
8 H4 u5 i% i' }1 m% o  $ s7 F% E$ }6 J& T
  还有什么问题,本机服务器的枚举。* C8 _, q& u* z
  明天再说吧。ZZZzzz
0 E# B( `* c- x: i4 i  
) \) U7 Q4 |, n3 l: @+ n  第五天
# F8 J% M4 h+ \& u6 C4 [' ?  , f' p5 U4 D, S+ a$ V
  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。* k- i, m7 {5 A/ Z5 G5 Q. I
  ; g% K7 E% U! K. D. i1 X' {- F2 k
  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。4 w9 @9 z  e% B
  我选择了一个网站:
6 F2 @9 r1 J+ N% \0 [  www.kepware.com
7 m5 _4 e* E1 _- J' k, t( z8 h+ X  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......8 m$ U$ C+ l3 T! f5 y. w
  / b5 f' l4 r- |  p  _
  枚举OPCServer的法子:) `0 t/ j% J! i( g( O
  Dim ServerList as Variant
: P2 Y& N5 _& g: d. F, u7 A/ h  Dim i as Integer
* _: G0 b+ N3 k5 L0 W  Serverlist=anOPCServer.getOPcServer(node)/ G" E% \% m. r" `2 T( D5 D  G
  List1.clear
8 c' {) w+ L8 ~, O5 c5 c  FOR i=lbound(Serverlist) to ubound(Serverlist)
  L- F+ K- v) I6 a/ M   List1.additem serverlist(i)
# G6 F) w% y2 M6 T, h8 Y# F  NEXT I
$ m3 t! W5 |; Y3 \6 [  
$ O1 v- K* E* A  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。
6 t8 h8 v0 Z6 Q! h) X, w) `  D  找到了枚举服务器的办法,在单机上成功。
2 S7 Q& `( v! E& ]( X& }( B8 h; T' l  其实《入门》也提供了一个DOC文档,是OPC提供的:% `  h, c) D/ R# p
  Data Access Automation Interface Standard Version 2.02
. J9 }: m. u9 O& x( J7 C  
! U- f% w" u; V  C. N, |  是一个必须的手册,只是有一些错误。错误总是难免的。- U* c* t7 ~, S( ]
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
: v4 t) j: }3 x) s. W  % X0 X; B, i0 }- }0 U1 J
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。" G* [5 w8 O( W! t
  ( q& G1 H* `+ ^  b0 l2 h
  第六天
% y, m3 E/ I5 n  
2 {, ]& E3 {- Q  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
+ }5 v% \; ^5 t  : R! A$ S+ W# g/ I* H: H
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。2 T! X. d) y) u2 J1 X! D' K% O
  , ?8 M  P1 n/ S0 C
  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。. y' y8 ^% ^, t2 X+ p, c( z- `9 j
  5 {8 j2 Q: b+ N" p! Z4 \, j0 Z2 {. ?
  下午休息。
$ {  I! }: C  e, H& y- p  ! B% ]3 z9 k8 r  U. t  b
  第七天) B2 I. ~/ I- n/ c
  
7 P* @1 q3 L8 @  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
, n' K/ |  b' B$ P5 m. @& F  
$ H( R2 I/ X9 t  我想起了第一天安装的那些DLL,还要么。试一下
! ~2 \; V; ^1 k8 J+ b  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。
3 \% W- D/ p$ ]' r  OPCcom_pas.dll 通用接口* s' g7 A6 _5 I9 o
  OPCAutoda.dll 自动化接口
# C6 \5 y$ E- }: E0 B9 `& R  OPCProxy.dll PROXY-STUB
; b% F& s5 o- y* c  
/ m; b; o% D1 |- [* |* }  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
/ x3 I! M1 q) b. \  
' z2 N/ P5 e' S) m* {  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。: [, ]# v. T) ~. S
  
4 v1 H: j0 c9 y0 W% e4 E  后记
, Z5 s$ q% ?& F6 s  这是一次入门的学习,本身没有什么。我却有些感想。
; Z5 X* J1 ~1 T. o  ~: }6 s0 @  
/ R2 d6 x  C& g+ w  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有% e9 v) w% O5 Q- g/ |9 F2 \
   OPC ALARM & EVENT 报警和事件$ y5 y7 A+ x3 A* j8 g: a3 D
   OPC DX 服务器间数据交换
2 O' m" M& a2 c  s- W: S   OPC SECURITY 安全
' N3 [# ?3 n( K" W5 u! v, j   OPC HISTIRDATA 历史数据库1 |) x/ v" ^! s+ X/ l
   OPC XML XML, {, H, r  i* y1 i4 Y$ P
   OPC .NET FOR .net
- G* {  {# `0 m& z  这些对于一种工控软件是比不可少的。
2 o" b5 Z9 B7 h* p. M  j  0 C+ o& \; ^' z* u" _+ C+ J2 d
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。0 j/ t# p8 e4 \, w+ M2 Q8 W
  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
* K7 D9 L: A- }  
( F0 n! S7 n% b# l' ?1 o6 _" O+ p  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
. l' n( v! P1 k, a' o5 x0 i2 M! e* ]  
3 u; L& O" m4 \9 `  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了4 \- ]6 J1 t. K) J
真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
5 e, d- I# l: f! Y8 V2 U5 q& ?书还是买来看好,提高的快。1 {0 V2 Y3 D8 F5 u/ t3 n+ z) G2 T

/ V: V# E; d# T6 t[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
* h$ I- \' S( O) [& ohttp://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 )

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