QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 5955|回复: 8
收起左侧

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
7 N* L. D# T6 l7 m; _5 Y. R, ^8 w
8 W1 U2 f8 S, D) t% s& g# L[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码
( n, i2 n* j7 N" j4 O8 X2 R- y CSDN 下载频道
3 z; w* V' v8 K* h
+ d- N  U( {& Q" Nhttp://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)
+ S( T6 C6 W+ }" L, O( Z$ Y  J. A. j5 O* c- g' `
我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。
7 v" ]3 `+ }0 _0 v2 n  ) i: q, o8 a7 i1 m* r: T
  第一天
$ j& I  {2 T8 T* d  
5 v5 ~% \+ Y/ Z8 C, U1 G  `  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。( T: ^0 [2 M7 ]) l
  opccomn_ps.dll
* y1 B6 k, m) P; U) K; v) @" C  opcproxy.dll
: K7 R5 w& Y3 ~+ z7 j  opcdaauto.dll0 D  b, |7 a6 r7 }8 ]5 T) J
  OPCTrend.ocx
" f- d5 {2 b# J/ C) P9 D7 l  OPCBar.ocx
" y% \9 I0 f7 k5 u+ l& \  OpcServer.exe
% b$ ]# i! t4 z2 z* ?7 d6 J7 J. R0 p0 ?  OPCJDADemoServer.exe
+ M, G, x8 K# T  " U8 i$ _. R$ n0 x, P, k, B
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。% M# i5 u0 T4 y! n6 [% M) F0 {, M
  后面两个是demo 服务器。* Z8 Y1 C+ ]6 `5 J$ c
  
9 v! b" k# c/ U  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
# i% c. z( q8 ~/ C9 B, h  服务器。安装了(注册)。% A( q0 z3 f: q2 @- M( y( o
  
. v+ z, Z- D' k  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,3 K9 N( a( Y% E( O' C/ ~
  5 K% F# j* [# `
  点击连接服务器图标,立即出现了三个:
! M0 E4 g- M: z2 V5 N$ ?. c+ z  OPCJ.SAMPLESERVER.1& ?1 G' ?/ D, f0 ?3 g" l$ B$ s9 w3 s" W
  OPCJ.DADEMOSERVER.1
* ]5 U# l, e0 d' ?+ a+ `  HEXATEC.PCDATA
: {6 j; M2 r2 p% g, B" J# ?  
: L1 _: O' M* [0 L  第三个是opcconnect上download的计算机基本情况的简单程序。6 c  }: H: F) ^) ~" q
  
3 p1 y$ B3 X9 `6 ?5 k( L' h8 x  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这
2 l3 k$ T% s1 C7 V  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
" Z+ B  ?: ~! \' |6 a: b' w  人敢学,也就没有市场。* D: |* s1 u9 Y
   2 e' q2 l- n. ]; M
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。( ]+ l  N9 A$ K
  第二日
5 w7 z& o# N( H1 W9 C  今天先看书。
7 }4 n$ L1 {0 O  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。
( p, n& }7 B. U4 A2 v  
* o% M( Y: G! E! f0 e0 f" o  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。0 R( `- L+ k8 [; ~
  $ }8 f1 l$ I8 _& W2 `7 x) A7 P
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。5 x/ c- v' f! W* o$ ~# \4 O9 h1 p
  
8 }4 _, y' }/ Q) k/ b9 H/ g  书上对OPC体系有描述,我画了个图。  f1 J1 z/ {" ~& |% W- a
   : ~1 u! |6 R. z3 t8 m) p

, ?6 t: V, r- x: d( g. G3 R- E: I
! d. Z/ {- ?' N3 w4 [( B& ]  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
6 H0 ?6 \2 F( [. X, p2 l- U% X) I  
1 O# h8 Z7 R* J8 T  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。% d  A6 k, h5 S2 A4 K+ G8 H4 v
  : {8 k# {4 R4 X
  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。% u6 m& b& Y1 S: J* U+ P" }
  
- @* M: s' L' l" o: J  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
" w) _, l0 @1 d2 B  # ?( Z- t  v3 z
  我在第一天中安装的几个DLL中:; \- `) F# C, M# q2 P# n2 c' y
  OPCcomn_ps.dll 通用接口8 O: a7 F( k3 W% W# m
  OPCdaAuto.dll 自动化接口' }) [# U5 Y0 I, j9 S) @( }
  OPCProxy.dll PROXY-STUB
8 R+ o9 j& [( p7 n3 Z  
4 M6 C- j# D9 U" T  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
9 d) @1 p9 P- H2 ?  
. Z# w2 D% T5 F  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
/ e( G* n' Q' Q  ) Z) b/ d( s0 ?; b# M
  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
* e: p, I& g+ r( z  7 T7 t: @$ R# O2 |. T
  按照书上的顺序,先了解OPC的数据组织。我也画了图。
6 z; G  @% B/ ]3 l8 S$ H; [. U  R  
! W: j% G8 T( l1 }  g4 q& V+ }3 a6 p! x' I2 r. p5 F

! T; m1 j' u$ ~5 h. ]! g9 p0 A4 J1 g( E1 t2 @6 Y
  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。
4 r( Z/ K/ o9 x8 J! U! O. |$ }  
% W' }; b0 i2 G" F  根据书的介绍,要访问标签,还有其他工作要做。
$ C% _# l/ B' O6 W2 y* a  我累了。明天再说。" O! T6 Q2 Q3 v
  4 ]* p( R2 A8 w; w/ [" R
  第三天. x4 c) \# Y: S' |/ }; i
  昨天说到访问标签先要做些事。
- y& _8 H! d, D; _4 l. D0 f  1 b; k( J5 ]( d' \7 w) \7 z+ C4 h
  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。. N* @$ g& D  ~9 L* B# g2 X7 R: h
  : D9 H+ k' G: W$ W
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
. l5 J# v8 [2 o* x* Q0 y  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。+ [0 `; d2 |  W+ l
  ) ~, M3 ]7 f- F# @2 e
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
( i( t+ \9 u+ d0 w  直接运行,没问题,看到了数据的变化,决定看其原代码。. o* M' Q3 ?# B# h- ?8 O
  & I- F$ ]" m$ T  U, x) d) i
  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。
, e% `- C( A6 `- B1 p4 V/ J  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。. f; k8 i5 w7 }( s
  " j3 J0 {! V/ c
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。7 ?' }; G8 B0 T1 K/ b2 N2 E' d% t
  8 k4 k( r! W" e% H& C% R
  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
1 P- v8 i0 j4 W  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。5 ?8 ^$ K' W" Z4 f2 p, u( k
  
  F8 Q) p# I5 A, Q  我给自己留下了两个问题:& Q9 X1 s% K0 s3 y: c
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。" \3 n+ ^8 b2 ]% B8 \4 |
   2÷如何访问ITEM,取得其数据等。0 \- F, |* z8 e; a
  
7 w! ]2 r$ c. n  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
1 [$ g# w6 |% L/ s: b& a  今天到此为止,
' i2 F. X0 X5 R3 g" r. N  休息
; v& V0 e  M/ q1 j- K4 O- T  8 @; C- e, v/ F8 o4 n! h8 a* y% Q7 z
  第四天
* f/ _, h6 C3 |& d  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot
2 t# |* t1 H/ K7 V$ E  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。
+ A0 j. G" o. V: Y6 n  
% W4 t! t4 I0 M2 c6 k& N. z: m  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
' k' W" C) ]: J' n3 a" [1 B6 y$ o  / l: V+ n/ z) S$ `  \! W
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
. _: G- q& a& k  4 H: L3 {* P- B! Z( M
  我添加一个组,在其下面建立标签集合,然后用:  v/ n$ f* Z( S, B8 c; r1 L
  标签组的ADDITEM方法获得句柄。
3 R! s! t9 O; ^2 c8 `5 T' A: [/ B  用同步读方法就可以得到每个标签的数据。
/ H" p7 N' E& r. f. ]: x# }7 [+ W' |  
; H5 {, @  |0 o+ A  我发现有问题。昨天我就发现有问题。
2 d* z8 I; Q, R5 S  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
( V: ^- K9 q! k8 _' p: c7 v; O1 \  ' L( J! l* H2 m; U! f5 n  Y  U
  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况# J; E7 I. v( p& ?# T
  bch1(树枝)
8 H. [: P& G- ~% \7 k% S% E; j  tag11(叶子)# @! N/ l& }+ b2 [) h7 [& f
  tag12 (叶子)4 n5 a: V2 c& P" Y& G: k
  bch2
5 d1 K: ?3 J; [; c& t5 l  B. w! `  tag21 (叶子)
# B: J- s) v6 p  bch22 (树枝)4 I1 \7 G2 w  G4 u9 ^6 e
   tag221 (叶子)  h. e; l4 i" V7 N4 Z" u
   tag222 (叶子); R6 d( \" B  T: G* h; O, r
  
6 {/ O7 T/ G* S5 ?/ J  
- ?3 b3 S9 S" U6 p  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的+ u. q2 u# r$ X8 y1 \7 j: v) R$ o
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag2224 b* Y9 y. I8 x# s8 N7 L5 O
  应该用OPCSERVERBROWSER的GetItemId()获得。) H) X9 M9 @' q& u% `! u! u* A
  
8 ^. X* q: a- ]" k5 q0 q( A  修改程序,OK。+ T5 X, ]1 @* D2 O1 \* y  t; H" N
  
/ B; N& D5 H. |3 ~6 p& ^# O  还有什么问题,本机服务器的枚举。$ M* J  O4 B, m5 Y0 O
  明天再说吧。ZZZzzz: }6 e3 v- G' |
  
, j0 H1 m7 Z! [( }8 @  第五天
8 t, e4 ]9 J' W, G  
# }2 R5 N/ A3 P" Z$ ~  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。: H- Q+ v! l: y1 Y$ N; [- D
  
4 @6 ]* V) |2 j2 v+ S  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。3 ?! J9 ^: ?! L7 A6 t% u5 G
  我选择了一个网站:5 j6 n2 R9 {- I( s2 X4 k- `
  www.kepware.com& g' {) s. M$ z( r( z
  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......
8 ?! R  K3 Z$ x* X1 s. w1 }/ k, o  
! n4 U" v& b$ d5 O( e- }/ ^  U  枚举OPCServer的法子:* \- A6 G# x9 m- c
  Dim ServerList as Variant
! n& O7 j" P$ n) `* {/ H  Dim i as Integer/ n  A. _. w2 ^5 h2 y! a" |8 C
  Serverlist=anOPCServer.getOPcServer(node)& \( Z2 S" g' J& f' g
  List1.clear
0 }) a8 L1 Y& L+ K4 x9 k  FOR i=lbound(Serverlist) to ubound(Serverlist)
6 ~- K  \5 m: z$ g   List1.additem serverlist(i)
  ], i  p5 N) _" J; z  NEXT I6 E  v  }/ o) K4 M! H
  
6 T3 L. \7 t- H- ^. c% u1 E6 b/ u. S  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。: ^# r. s$ E! X
  找到了枚举服务器的办法,在单机上成功。; k8 z4 z; T" ~( i
  其实《入门》也提供了一个DOC文档,是OPC提供的:  X* c8 D& Q' W$ J
  Data Access Automation Interface Standard Version 2.02) J2 m8 z- V, |4 w, B& V# y6 K0 v
  2 y8 h2 ~  {" O# R
  是一个必须的手册,只是有一些错误。错误总是难免的。
0 ]: T/ n( h! U8 E- j7 R  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。, L  F# B0 [2 l3 _& d: ?
  
; U: j1 U: Q- ~" i: s  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。0 c- Q: f8 L' I- f4 A2 E1 a
  . B/ A$ T; P3 d% r
  第六天, m2 w: G3 A( x# R2 d2 n
  
" ?4 ~5 p$ I" `$ H4 O: s8 v' ~; |  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
7 E' r/ ~% d" d$ y5 @8 `  % }2 n9 w  Z/ H8 Y% ?
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
; [+ t% U# \1 ^0 _, B. N1 R. M  
. B2 B! Z0 J5 s  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。: t& \5 h6 o; d7 v: U9 Y3 ?" ~% Z& O
  
! b! W- v/ F8 P1 K" Q3 G2 I  下午休息。
  r, q6 u' u0 F" p  4 {) }% O9 U9 x0 M
  第七天; c; {2 j: P1 T, d6 e6 }7 k
  
' S' J) B/ s! C& s' ]. H  T. A  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。, @6 f  Y' O# m: W  A; ~$ r7 m8 w
  % b' K3 c/ x3 e
  我想起了第一天安装的那些DLL,还要么。试一下
6 G& o3 c( t2 ~# L. x/ o1 s  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。
% ?2 a3 w6 x& {% U6 z  OPCcom_pas.dll 通用接口" \+ F/ k/ I3 f' d4 Y: Z' E6 k/ G) }, e
  OPCAutoda.dll 自动化接口  Q" P3 y5 q  _2 a9 x7 c) u( y
  OPCProxy.dll PROXY-STUB0 m+ v9 ^! V5 s% w9 d
  
) F3 ^& Q: M8 I( f: q2 P6 E1 T  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
0 t+ a  O, q: r: U. H6 r  
, \7 S/ Y1 S$ ?8 _8 k% w  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。( F& c. M# q1 d1 X, k8 M1 E, r
  
( y, N* S* E& u4 t! E  后记
7 M6 d: o% J6 B: ?( \( x  这是一次入门的学习,本身没有什么。我却有些感想。
% n: ]0 J. ^$ Q6 X6 Z  
/ b; P# ^2 a; X. ?. v, i  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有
' }* ~5 Q4 j+ C# P: U" K+ X2 O   OPC ALARM & EVENT 报警和事件( c8 x; R$ X8 P% z# I  A
   OPC DX 服务器间数据交换+ c8 O! p3 N8 j2 s. _
   OPC SECURITY 安全
5 B- A: J' `0 f& a+ \/ j   OPC HISTIRDATA 历史数据库' e9 u# h; Z4 S
   OPC XML XML1 M# \5 ^( f4 U% H4 J6 j
   OPC .NET FOR .net7 {9 z% J+ C+ m9 d& a: Q" `
  这些对于一种工控软件是比不可少的。
6 {7 E! Q1 M4 L3 @  
- G# b! y4 b  i" F  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
1 Y" Y6 C$ C. }* |  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
" A; ~6 Z. G; d  
8 E* m* K& R' v* y  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
! R. a3 N, N9 P% F, R: B5 m2 e" ^  
7 Y1 t* e9 S$ p  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了
# T( y3 c# z$ s7 H. O# c. V真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性& f) ]+ o) j# @. |  q5 @6 u. E
书还是买来看好,提高的快。
) n3 C. c+ i2 K% h- f+ R! o  \! Z- ]& |! L+ J& ^5 N' d" V  h
[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签), v0 W& f4 w* p- }. k
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 )

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