QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.' D# E, ~3 K# ]+ H0 }  R7 s
0 X7 J: ^0 f8 @/ U2 ~
[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码
  x3 {3 X4 P* U& g# C5 x8 y CSDN 下载频道
) J2 @5 u( ^' B' ^; \' `. i$ ~9 |% C8 A4 v3 U8 z
http://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)' m! V9 t/ ~5 _+ z0 N

, Q4 u4 {( |' k7 L7 m我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。" q2 P. T- y2 r+ j* T6 x- P- T  d
  
, I: f6 p" [" n) L! y  第一天
: z8 J; J; K; M, Z: ~; {0 [  7 `% f9 ^0 ^" ]; y! H3 L: Z
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。* A# [  _) m8 ]8 V
  opccomn_ps.dll
& ~' H: j1 E5 X: [  opcproxy.dll
5 G  T. Z$ V4 Y  j+ c1 ]  opcdaauto.dll+ `: J3 Z" J8 Q/ Z5 ?! \# w
  OPCTrend.ocx
% Z, D* s" z) k5 k% K; j. P5 E" C# {  OPCBar.ocx& Q- i) P, x- U7 w  g% L5 C* D! e
  OpcServer.exe
4 R; }/ m( U+ X* H6 P/ o  OPCJDADemoServer.exe! \# B8 A6 y. E7 _# x$ t- `
  
& {' Y: a3 G  o$ Q* P  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
, S8 t; i3 y7 F8 I/ L6 L  后面两个是demo 服务器。
5 ^: z1 z  @/ r- h* u/ `( {  8 H3 x6 V8 o4 [) B7 H1 u
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free4 g; d1 k" r7 I; u4 e6 |' W
  服务器。安装了(注册)。4 h% y: m" D+ B5 O& a7 \. T% D
  
" R( F% h0 [2 c! o  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,
. y$ n3 s2 j* p  
8 s6 \; Y6 R/ m5 J- [1 F  点击连接服务器图标,立即出现了三个:
2 ~$ |$ }4 h6 c/ v! V  OPCJ.SAMPLESERVER.1
7 m& u0 @% d. l. y1 y  OPCJ.DADEMOSERVER.1; S- I! O' l7 z4 }: _
  HEXATEC.PCDATA  m' ?6 V7 l9 u. f) W! l) V5 U
  
# d9 a1 E6 v1 ?" Q6 O  s  第三个是opcconnect上download的计算机基本情况的简单程序。
. U* o! M+ P" j  " G0 ]: C8 d3 }9 n4 D% X
  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这, u1 a( g- `- `5 x
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
4 ?: `$ m; g+ ^3 }  人敢学,也就没有市场。9 z* u" v6 B4 a7 W+ v
   * \, n0 r- R: `0 f( n7 A) l
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。; V0 w1 L2 y8 f
  第二日- H& K+ {( a+ @  b3 ?" l
  今天先看书。
5 Y- g$ {( O6 f$ N0 O6 x$ k- A  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。
3 k' ]/ W* r- R0 ~5 c' W  
( E  Y! X" ~% x" V* I  D  O  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
8 h- H% M1 D6 g- ?1 N% y  
. D8 l! C5 z1 P5 C  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。
; o1 p; k8 O/ j" d" z8 `( H  
* a( R4 |0 U" X" I. y( O  书上对OPC体系有描述,我画了个图。) k, d0 s) G: U1 K# v3 A
   & ^$ n3 H& s& D8 I) |+ I. H

$ O0 L' d! N1 d: l  B4 @5 u
2 r: R0 E/ d; A8 k( E  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
: J" m; Y5 r6 g- l  
$ I' v% r1 b* S7 c  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。9 j+ U4 F3 z  z- \
  0 M; @+ z7 X( _1 r3 ?6 _  b6 j+ _
  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。0 A8 q# i1 z% @2 Y) B* q
  
, U4 c! J. n% S% x( s* f9 O/ P  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
) _. x: w1 \: @% t! e4 P2 W( u  D  
7 Z# I2 r* y2 ]* o6 U  我在第一天中安装的几个DLL中:
0 G3 p; B( Z+ Q! W2 a  OPCcomn_ps.dll 通用接口4 c( X2 _# ~: G9 M
  OPCdaAuto.dll 自动化接口
# p% D. [- t- R( f0 G/ n  OPCProxy.dll PROXY-STUB3 D, w9 P* Y, o0 d1 z
  
. C+ h* d3 ?2 F, Q. \  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
2 d) `3 ?# a) i$ L1 I0 p  
/ w% T( R, e- H/ A# V) w5 P  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
4 w- u9 t% U7 n* a! [  n" E; W  
  J0 @4 \9 d- A& p4 l, e- l+ B  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。: s) u, I1 x& j) J7 O( r# K
  * f; W' k& J  l  M
  按照书上的顺序,先了解OPC的数据组织。我也画了图。
: k- H: P( z% P$ W& ?' j' f9 A0 v  
( V/ Z. T5 X$ L. O1 v! E" |8 A& N; R& V

+ R, T5 ]! m- {$ |; j* _# @* @
6 Y. U5 K( }1 d! j4 L& y  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。& L* [( [8 H5 W) C( @
  
; i0 ^$ l% N/ W  y* _/ D2 i8 q  根据书的介绍,要访问标签,还有其他工作要做。
% x$ E) J; K6 Y) W  我累了。明天再说。- J; I" {  Q. j8 r- R, j
  . B. R# n+ A  n9 v
  第三天
) v- C6 k  G: Z, ]" F  X  昨天说到访问标签先要做些事。; z; H5 U( S5 w4 t  v' Q. {" D: v/ J$ E0 a
  
, ^1 Y! T! w3 b; }. }. }  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。- C4 ], n, O& p3 q0 Z( a
  8 _) E) }. q7 b
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
, R0 {9 m  R! e$ R; K7 q- U  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。" A" s$ q' O" W2 V
  8 v* T  a9 G9 ^+ `- H8 g: \9 {( n8 F
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。0 S2 F+ z, Z9 ^* `* M. u" t' I6 p
  直接运行,没问题,看到了数据的变化,决定看其原代码。
1 K: Q' h4 l: O4 r0 M' z  ! L* s' l. C2 h2 q0 B7 ^8 z* s
  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。: \; y- S, R" G1 r, u. h6 [/ B+ J
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。$ K: I) D& B, o/ `+ @8 r2 z
  & x' y; i3 U, f4 K4 F& u
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。
5 f4 E( X2 h# a( w1 i  
- m% ]4 ]# Z' o7 Y" Q! e' G4 L  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。# ]. N( V% C& x
  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。. a% g0 W/ y2 V& r! n) V
  
+ \5 X8 I1 h& C4 h. g0 |  我给自己留下了两个问题:* f- H, {9 Z( U# [+ r- N( M
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。
" o7 K4 s- z6 j/ X   2÷如何访问ITEM,取得其数据等。
- C) e3 T: P  x2 Z  / c# t( B/ F( @2 N5 |# _0 P  `
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
3 G4 {7 S# Q7 f; [+ }0 l1 B  今天到此为止,3 d# W9 e6 G8 I, Q8 V. ?. n
  休息
* Q+ k- Q: K& C' I( i. ^  
8 y4 S- _( D& q; i5 h! w  第四天
# e! A& h+ Y4 a9 x  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot
: O/ c0 T) p0 b% K; E$ ~; P: V1 O  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。2 ~) `1 C. x3 X- s6 G* G8 p
  4 D& B, }9 p% i9 L1 A+ W$ k
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。: M3 H; a# v6 Z( }  T/ ?1 y; K5 E$ ]; q
  0 N3 v  P1 G+ |$ B' ~- Q/ j# \
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
7 L0 E* d$ c1 ?) a( `  - g* A$ g% V6 j- Z* d5 ~7 |9 k3 `
  我添加一个组,在其下面建立标签集合,然后用:
, T8 T3 v5 V, \  K$ |  标签组的ADDITEM方法获得句柄。1 v# ]1 y. h6 @9 e# n" V! g$ Y8 p6 n
  用同步读方法就可以得到每个标签的数据。
8 N0 e8 `5 Z9 ]# @. l. L' g  7 Y0 q2 V+ m1 l  X9 Z. s
  我发现有问题。昨天我就发现有问题。. G2 }5 A! v$ q- V' h' |( Y
  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
& _3 i0 _) s/ @# A  6 Y7 x5 {6 U$ R- K
  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况$ |1 [, _2 B: v- V& w
  bch1(树枝), h( d& p9 E1 L3 i
  tag11(叶子)
4 p1 C3 x: p, |% H( x  Y1 e8 ~! }  tag12 (叶子)8 d( p: b7 d" Z3 t8 h' V
  bch2
+ F* ^* N4 f* M  tag21 (叶子)
- ^2 i8 B- E3 g, F: U% ?+ u6 W  bch22 (树枝)
" @' I1 Y# J) e6 z% [6 _   tag221 (叶子)7 x: H" C( Y4 l$ {( x, X
   tag222 (叶子)1 @. R" ]" f' P, K+ }4 t5 C# u
  $ @7 B8 ~. l" z3 O4 I
  
* @: Q( |5 h9 r, y  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的. k8 ?' @& w8 E8 E
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag2221 a' z+ Z: o$ }3 }: W4 N( n
  应该用OPCSERVERBROWSER的GetItemId()获得。5 u7 g; f: o: E
  + y: r* Y: _  e  p
  修改程序,OK。) _% n9 \. d8 F9 {  a/ E+ C5 V" o
  % b6 M: b6 z- w/ g5 @
  还有什么问题,本机服务器的枚举。
  b9 F( O! K) r! S0 }  明天再说吧。ZZZzzz4 y9 Q6 g- R5 l8 g* ^) U9 p. H+ k# O& u
  
, {6 U* M  ]5 F' B  第五天7 ^4 T) N5 z* B$ b2 o
  
8 W5 s4 U  C- f! p4 F  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。' S0 e$ F: W- ~" @3 @4 z1 g
  
: w" @5 [( A7 i+ K4 s# L7 C  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。
+ k. j9 i$ _3 ]( U  R2 X( h  我选择了一个网站:
' |- T# s; [# f. j' T0 j  www.kepware.com/ T; a; a7 M5 `4 s& ~/ h
  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......
: ?+ I4 {9 D/ T* p% R: z. ]% `* s; O  5 ]  P. K1 _- ?3 f. \! y
  枚举OPCServer的法子:
5 _$ B5 v4 j  n9 b  h8 K) _* P3 q  Dim ServerList as Variant
9 d9 A4 L; V( G+ W  Dim i as Integer* w7 ^* Q: P3 Q/ e0 l
  Serverlist=anOPCServer.getOPcServer(node)
- W' }, I7 B; ]  E  List1.clear0 i, {# u/ L( {* F
  FOR i=lbound(Serverlist) to ubound(Serverlist); F% Z% R  T6 n" V2 |+ u9 G
   List1.additem serverlist(i)' z; r) E9 n+ d( r3 l3 i: N
  NEXT I! }1 f+ @- z- j" V1 a6 K: B6 r
  . E$ q6 \2 [; w# `4 C" a+ E# f# |
  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。5 n- G# f6 T  L! t( W
  找到了枚举服务器的办法,在单机上成功。( \) d1 F5 @& Q7 e, F
  其实《入门》也提供了一个DOC文档,是OPC提供的:
# \1 }3 T8 n& u7 w! B  Data Access Automation Interface Standard Version 2.02
+ C1 [( y, \& g0 _2 i2 F, \4 c  ; @! v  P/ d2 O5 J+ E+ U# m
  是一个必须的手册,只是有一些错误。错误总是难免的。9 B8 T% S- n& L
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
# a& f% _: D0 O8 R8 \  * n  b7 m4 p4 f: l; |' S* _
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。
1 F: T& a0 I3 |4 @  ( A+ H) x# }0 E) N2 F! ]
  第六天
/ {0 p- @" ~' X! i# j+ [! _  ; p2 q1 q: _: p# V4 N) s
  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
: \5 x. x; W5 E0 @- b7 l  & s  A3 T/ ^" L# M5 ?
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
! L  n  M2 x3 r+ ^  $ k  p; p8 R1 s, \% r1 j& n( O  s$ p: x! N
  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。
; A8 p. C( @9 b8 s  & O; _- A- N8 y! A* Q
  下午休息。0 ~: Q3 S. D7 l4 G0 Q
  3 [, V$ i, m$ k; j4 I  {1 Q; S
  第七天
6 ^3 e7 R9 N; i2 d1 c; a0 o  1 b, ^; p6 W2 e0 R- D5 j
  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
& s, a# w2 Z. v# `3 f0 n    Q- o6 W9 g6 O
  我想起了第一天安装的那些DLL,还要么。试一下
- M1 |) Z, ?5 s" f, E  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。) b" Y9 X+ L5 _
  OPCcom_pas.dll 通用接口# G+ I. Z9 v9 J5 I+ Y" T& G8 J
  OPCAutoda.dll 自动化接口
* o/ ~; n+ r& N2 ]  OPCProxy.dll PROXY-STUB5 D% H4 e/ P. }
  
4 L/ C) c3 E4 q+ U5 C. a  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。' C; ]' n1 b% n- F8 m, ~. ]
  ) G' Z: G7 S* J6 {! M2 C
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。1 l2 J6 X! C* a) G: J2 J0 u/ E+ L
  
! W8 ]  h* q. y* d, f9 I* P  后记7 c* C6 Z! K6 H9 R, C
  这是一次入门的学习,本身没有什么。我却有些感想。
6 ^" @+ F" [( f  ( H; O# b+ `: O' a
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有5 s4 y' p2 x0 Q7 M* r; z
   OPC ALARM & EVENT 报警和事件) x8 ~4 t" _+ D: P: `
   OPC DX 服务器间数据交换
/ @( H  N$ D, {3 J7 d9 ]) |   OPC SECURITY 安全1 j, l3 i7 p+ f; {9 m: o  l
   OPC HISTIRDATA 历史数据库: q  R3 T7 M2 h4 A  B: Z3 b+ i! \
   OPC XML XML
' X6 j9 K8 M- H7 k: r   OPC .NET FOR .net2 ]. ?/ ^" w7 D5 F  \" z+ U) t# Q
  这些对于一种工控软件是比不可少的。
, k1 q+ w8 J3 n5 j  . G* B; y8 A7 ^9 A6 `9 A
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
/ G( B- Z6 u( x  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。: _. r; ]/ y! `) Q8 T  x  x1 }% W
  
  k. J  ^# c% M4 M) Z% j3 u3 t  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
$ `, x- e/ v: T1 y7 _  
% p) L+ n4 Z+ r/ h6 I* N  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了
% y  I3 b7 i# s1 F' T真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
- [% |6 G* O- U7 v( B: f& Q书还是买来看好,提高的快。' D0 S$ o4 p0 M: p; ]
, u. `8 X3 t$ Z! P' r
[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)1 N$ I  N9 F" Q+ t( w) h4 F7 \$ {
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 )

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