QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
- `6 I$ V! S8 q* H: P3 s
1 O% s+ ^. y) A5 L: I2 R[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码
: N/ x8 ]1 M% E4 }3 J$ k CSDN 下载频道
$ M9 \1 v+ X3 y1 k5 \: w
; A# X1 |; Q+ x  g4 ghttp://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)/ \- o! x( ^! `) l; [# ]( n4 Y7 n

  k" X- f5 k1 {/ m+ G我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。8 b# Q  T- `: O, z
  
; r9 A( P' w: g5 X9 e9 `8 x  第一天' t/ ?- I, P9 K! E' H9 y6 L/ v
  
4 q* C" T  ^( P  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。) I: l5 D1 x5 K+ j2 f3 E$ N
  opccomn_ps.dll
# z/ D* Q3 q! d; y% h& a" o  ~& Z  opcproxy.dll
+ M# Z2 }! e/ q3 ^7 |  opcdaauto.dll
6 |9 r; x0 |! g  OPCTrend.ocx
2 `1 ]' ~$ t4 ~  OPCBar.ocx
9 g3 l& {6 Z* y  OpcServer.exe 0 A6 k. ]& B. G( k- {% o8 B+ l) D: U' x
  OPCJDADemoServer.exe" n2 i# d0 x, F, e! U7 {
  , L. M$ i  H$ L
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
5 w7 E6 \+ j3 T  后面两个是demo 服务器。
% m& s8 R+ x' y% X- P& h  
8 D2 }8 `; v$ ]* U7 T2 w' n0 p  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free6 B( R; T  w0 z: L) w3 H7 P' D& i
  服务器。安装了(注册)。
2 D/ W) m& k: H  : s3 ?+ ]5 x) \8 `8 l
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,
9 @# D9 {! Z  k2 h  8 Q7 e% z! y6 o2 e+ k$ Z, m6 V
  点击连接服务器图标,立即出现了三个:
# A6 N) I) w! d. P" n  OPCJ.SAMPLESERVER.1
* r8 X: x: p# x) u4 l7 v) b  OPCJ.DADEMOSERVER.1  V2 M  F( \4 ?, W) }5 G# p9 R
  HEXATEC.PCDATA' \4 z" o: [4 w: Q9 t0 {, v
  
* @& Q$ P4 a" |% k& M  第三个是opcconnect上download的计算机基本情况的简单程序。
) y- l: K9 m* z& T# K) V6 N  
% M6 `* m9 Y/ ?( U  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这: {" L, f3 o& F
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
8 `# [3 j. S: g* K  {/ m  人敢学,也就没有市场。$ J. v. L: o. e
  
6 n% ]5 P- i& X% G5 \# c  有一段时间没用VB了,先热了热身,看了自己过去编过的code。' P/ d3 u4 o/ t+ q$ {
  第二日7 P; U* o5 J5 y) u
  今天先看书。
- A6 o4 k* k( q4 Q& k  u/ m  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。
. j  r+ e3 G. J  
9 q' a7 A# F: T2 O+ Y- ?3 r  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
( k8 p0 o, N6 ~" |% p$ p3 B  0 @9 N6 k9 w& B- r6 d) [# C( m; }  U
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。+ b/ p% w0 w% k' K; [2 ^# {2 Z
  
: v- E; ^9 K& ~0 P  e$ N, o( e  书上对OPC体系有描述,我画了个图。
# \8 y7 G6 f8 n; M# G9 z   ) l0 W% c9 L2 R  ~+ h6 E

( @/ u* X! p/ x2 v4 Q+ q( n
: H1 F0 E6 b2 ?/ L  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
: B% A1 c: M/ W3 l- Z4 r) r/ X  
& a; J4 ~% U$ G' _  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
* X3 Z7 ^" x! i" v  |  : V! W( b7 o# ^( X: D
  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。
: k  U1 O! M. V: Y  $ B4 w3 F& ?2 q! g4 }) }
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
; x: O" a& I7 L  / A. \2 t1 l: P+ b2 I; _3 ?7 V+ B. J
  我在第一天中安装的几个DLL中:3 v, W/ {1 U; ?0 W0 W
  OPCcomn_ps.dll 通用接口
+ R" V8 x. i$ t4 q7 I  OPCdaAuto.dll 自动化接口
! L5 L' o9 k2 V! P8 n0 s  OPCProxy.dll PROXY-STUB
, L* ?& o: M) ]& J: L8 s) D) Q4 _    e1 @& h( I4 m: G5 X; t& n
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
2 R3 V5 a7 Q) z% s9 g  
8 a# k. [* Q  h3 x$ |( A  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
4 V8 m. \" m9 K8 V7 J  2 x, }* X, d7 W4 P; \) k, D; y
  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。% |+ }# J" q; H$ k4 z& ~7 r0 B
  6 L5 c: n% d3 q5 ]
  按照书上的顺序,先了解OPC的数据组织。我也画了图。+ ~) a( e1 S8 B' o
     Y6 Y* c/ S, H) @' _4 s

4 o* {* A, U7 `* ]) h
" |- J6 M' s$ d" s
# R4 _" O4 M% y7 k  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。( ~  T) x- I( J" A+ D1 k
  3 e% _' y3 U# Y3 L8 }
  根据书的介绍,要访问标签,还有其他工作要做。. C. k' @/ n; J
  我累了。明天再说。
- p9 @% m, I# ^( F  
8 e/ {7 ~8 d! d1 j5 o  第三天' Y+ z  }/ v. ~1 e% r- m/ h4 @5 g% n
  昨天说到访问标签先要做些事。
  r# |: |" Y1 Y& ^, D* \  & |1 C) R+ w9 [, L  u, U$ W* ]
  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。4 q$ T( v, @& Q5 k# c) S3 U
  4 P8 N9 I0 d1 }- r0 R
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个0 a/ G) k9 g2 e# A! _, U
  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
2 z" P" @% o! s# p  
8 k/ y4 n' ]; H  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
0 B0 T& k6 h. o$ t  直接运行,没问题,看到了数据的变化,决定看其原代码。
% H2 E+ N& b4 I8 B$ r4 z  / J' j! \) A& g; S, l! H7 Z; _
  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。
' J) o8 [) i& y$ W  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。/ g/ a) V* V% l2 _8 N* P1 k8 H
  3 X% R5 o5 N4 o7 z  s/ c( Y
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。2 q% J5 e7 C8 [3 s, s# d
  
' w7 A# y: [& F0 H" R) z  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
5 j, d$ }" f' g  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。2 k$ ?) o3 S7 r# _& X& Y
  2 p  F- Z9 [+ a4 A/ S, E
  我给自己留下了两个问题:+ s6 l5 v1 H; p! ~& ~6 `' e6 D( p
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。3 P- E7 o0 T* S6 {5 o9 x2 Q+ O2 y
   2÷如何访问ITEM,取得其数据等。
9 T5 g2 i' n+ K8 y' n8 J# e: a  1 t; f1 j- S3 _' U7 n$ Y
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
% k5 ^, h$ u! B  今天到此为止,
2 R, J8 C) N; A% T0 v0 B  休息
9 h% H- N  S# w9 O* r- h  & ?, S: `6 M) ?' a9 A" D
  第四天9 i! |7 f4 T. u5 ?; r; C) ^9 C0 k
  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot
( |0 l2 I' `! Y) R  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。: P  W" ]- b1 r
  
% C. i0 ^% e! a8 `; z2 ]/ n2 N  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
5 I+ i+ U9 c9 Z0 E3 J" Y/ \  2 i5 o- f8 ~! L! p- X
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。7 p" i5 D) S: o8 ?, d
  ! T* @7 L, a; `8 l8 y# L/ ~+ j1 P
  我添加一个组,在其下面建立标签集合,然后用:  F" |" E5 e9 c/ t3 W
  标签组的ADDITEM方法获得句柄。6 Q4 q% T" R8 V: h  K
  用同步读方法就可以得到每个标签的数据。8 F6 R) \3 u3 b* w' K3 V  I3 x
  
, y* M$ i* a  A  ]8 m' E5 n  我发现有问题。昨天我就发现有问题。
+ r2 \; ~- y* l$ O9 x  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
2 y; p& Y0 V9 o5 |  
' ~% [, ?+ t3 ^# i' G  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况( \# N( b4 w7 m# w7 b$ e6 g) `
  bch1(树枝)
7 I# ?) ]4 t% P8 i2 L) N" u  tag11(叶子)
- E" z: ?  w' N" j2 r4 e$ x  tag12 (叶子)( f, Q7 B& t" F1 ~/ d% ]& O' q
  bch2
1 ?4 |  O0 Q, w! E9 J  tag21 (叶子)9 i5 ?- g9 }6 D7 m2 d8 X+ C; g1 R
  bch22 (树枝)
3 g- n5 Y, W% i- O   tag221 (叶子): O% K) O; I. v3 y7 N1 [3 W' p
   tag222 (叶子)0 h: T+ ~1 \: {9 I( f6 a0 A. y. O
  
* I1 b  h% x& _, A  
' D/ ^2 m" m/ T: ]2 H  I  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的
* j6 }* E* h8 l  }. J  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222' A/ z# {" {7 x
  应该用OPCSERVERBROWSER的GetItemId()获得。2 [0 ]$ C* d5 U6 y- o
  
; x' G. ^# p% `$ X+ h) t' ?9 Z- ~  修改程序,OK。
7 e( C9 M9 I7 ]* \  " G. P$ y" ], s
  还有什么问题,本机服务器的枚举。
- l5 ]6 ^, I6 @( B) S  明天再说吧。ZZZzzz
! F  v% D" _1 d: F& Q" h  
$ c3 J8 u" x' F9 M. F  第五天& a5 `+ l: v) W( f) f1 h
  % S! T- i4 n! B4 w+ k7 T/ Y% M9 T/ `
  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。2 Z/ A' V* @- M2 G' O" B$ ?+ M; W* b
  ) U, V) c* X. Z
  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。
, J% f* [9 [% z7 [, K4 v4 W' T5 |# B  我选择了一个网站:
/ E6 `/ q- g+ H6 T4 I+ ^. X/ X. H1 y+ B  www.kepware.com; r! o7 [) a& v% u# C
  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......1 @) ^' X( R# v" L0 |  I2 \  a
  . c7 z; S! {. B# _- Y  Y* g
  枚举OPCServer的法子:
5 m) O" ~% |1 b: Z2 a  Dim ServerList as Variant. i8 t& s) Y+ }' S2 R% X
  Dim i as Integer
. G8 r6 N( T2 P' l8 _$ y  Serverlist=anOPCServer.getOPcServer(node)
+ X% d3 O' Y9 W  List1.clear
* A5 g8 y# T  c, z* v! |  FOR i=lbound(Serverlist) to ubound(Serverlist)
& u5 `4 D0 x- T5 s. b- X, a1 a   List1.additem serverlist(i)5 I6 v2 I* S' ~6 h/ a9 M
  NEXT I
, `3 Q, Z: H' _& H1 B  
7 v& Q) _& z6 Q: J/ h* ?  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。
- ]$ c+ S, A- u) ^9 e  找到了枚举服务器的办法,在单机上成功。
) K2 I- D! f: j  m3 C  s  其实《入门》也提供了一个DOC文档,是OPC提供的:8 s; \- Y, P$ p8 v) z
  Data Access Automation Interface Standard Version 2.02
$ ]6 t0 \9 d" c) {' M) Y, [3 V  
* D! S1 y0 P$ f. c7 N3 s6 K( t- p  是一个必须的手册,只是有一些错误。错误总是难免的。% |) u( W( J+ o- [
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
% g& M. z3 R& V2 t! i  * |' ?" ?, k1 ~' K. s8 X
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。
7 }0 U7 Z* e5 {  ( c; O6 X& {9 N/ r. a6 S: p0 B, f
  第六天- `- w4 r+ g/ U# J8 M
  
' D* v* t5 x4 e1 A  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。  N  e% s+ |/ ?6 }- U
  
( l6 i1 J8 d5 |( e. ]  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。2 A4 m2 ]- s: L1 {9 W) l
  " q, k( M# r' k% E& S4 L
  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。* \/ A; R1 P" F4 Q; ]
  ( G1 ~5 Y9 r% H3 x" @' H* O: ^* X
  下午休息。$ v. S$ Z  e) }, @" d; W
  3 U: y9 r9 Z/ m) q' _
  第七天" f) T. c( ^8 N- U+ s
  ! r4 z' J% w8 W  [2 b
  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。* X6 O% z9 l1 |! \
  % ^2 \8 S( p; ]  p! f7 @
  我想起了第一天安装的那些DLL,还要么。试一下
' [! V+ p0 W* k7 |6 p  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。; u2 y0 ^& A  `' B* [! w, j# {: r! W2 Z
  OPCcom_pas.dll 通用接口" I- H+ x6 B, p% ^& e( v5 B
  OPCAutoda.dll 自动化接口# r( e, ?8 {2 B1 Q% B: Z
  OPCProxy.dll PROXY-STUB1 P* C) U1 U1 a, ]" n" \
  
: i: k, @9 ^/ d) ^# D8 `4 }1 a% N; J  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
1 v$ M! m$ m( e# W  
% c! f( P4 n' J! K2 I- m3 i. C% [  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。
0 }1 H- L, n& u" _$ q/ u, |: C4 d: I  ! z$ z4 F1 e1 q' e
  后记( j9 h7 W9 _3 m& ?! W2 U
  这是一次入门的学习,本身没有什么。我却有些感想。. ]; l6 l- R1 [  n$ q$ U& E
  
  [) n' N  b+ Z! N7 E& [  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有% M0 P* {- q1 w0 X9 }
   OPC ALARM & EVENT 报警和事件
" H* w0 E7 O. C" ~( @   OPC DX 服务器间数据交换
7 [  v. F  D$ O( J8 h! E   OPC SECURITY 安全7 G' M; b: u" F* f, t8 E
   OPC HISTIRDATA 历史数据库6 I  T% A2 ^) Q: I
   OPC XML XML
  R& f8 y9 p* M$ F, B1 {/ V   OPC .NET FOR .net! ?' d+ {) h  S! \" W
  这些对于一种工控软件是比不可少的。8 ~& a7 q/ d9 N, Q. ]
  ( v4 A$ c3 L$ e
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
% C* Z- F" ]  Y/ Q8 m1 h  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。- E8 X5 B3 S! D; F
  ! x6 L- j, |. i
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
% K9 {; p3 z6 I& \  
$ {- A1 J. U, {3 W* `" i4 t8 ~6 G9 D  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了5 n6 p. g! u" C
真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性0 e" _$ ]! C; s) T/ @
书还是买来看好,提高的快。; i; T, S( q) \! M+ D/ |& |3 l$ }

6 {* N2 c" a! L1 E[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
8 Z# j( H0 @4 M. M' \+ {# @3 O4 lhttp://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 )

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