QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
8 C: I2 M( F& S# q* m8 ^( X) b, _5 `3 W8 V+ d5 `
[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码
& M0 i4 y7 V: `8 z$ ~8 J3 U CSDN 下载频道
6 X& K! v5 O/ ]. @! e5 K; N4 z5 W
' s" n9 }2 u7 Q/ ?http://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)$ W( o1 G" v% P( e9 s; W; I

& A# `: v6 e, Y6 J/ U/ m) Q! f6 B我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。* \8 {0 x2 P8 [: }! R7 u/ M/ y: o
  . C3 I1 Q% ]( h) s3 p0 `# d2 d" a
  第一天
: F0 z  ]7 V( e' o9 O/ R/ I) m- s  
( T5 A9 ?( Y$ T/ x9 e& m  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
; }7 b4 b: \2 V# o  opccomn_ps.dll
; w% x2 t$ b7 O  opcproxy.dll
9 J* Q% M8 ^* I4 o  opcdaauto.dll
$ I% k! y! \/ T1 g2 q/ I) {1 v  OPCTrend.ocx
  y2 L: ^3 r. g  o# N/ _+ w  OPCBar.ocx
" ^9 W( f8 S. [* S8 m  OpcServer.exe 4 S/ I& v2 u: F. ]8 n0 d
  OPCJDADemoServer.exe$ r+ q6 A. P! e) C5 j& D
  
/ x0 [# X( G% I$ s  C' k2 @; X  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
2 @0 N; N& j4 |1 ?/ ]  后面两个是demo 服务器。
* n$ P# D6 c6 z  8 v; x8 h, u3 @' o. g3 D% O
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
  r4 y8 `& {; @" L/ Z4 W: s  服务器。安装了(注册)。
. r, H" r1 K. U2 V0 v0 d% g  k  
+ g% `: V- ~& l* i! D5 L7 W  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,
/ l, w( t) Q2 P8 A+ x  K2 O  
! Y. O2 t! t, i  点击连接服务器图标,立即出现了三个:
1 A8 R" T, l; x3 V- F) E( V" ?$ ]  D  OPCJ.SAMPLESERVER.1
5 U- g0 J& c2 }9 S: o$ {  OPCJ.DADEMOSERVER.1
" H5 e4 Q# B" y4 n  HEXATEC.PCDATA
  ^, r' X+ Q( P  3 N8 `& O) S; W) _2 f
  第三个是opcconnect上download的计算机基本情况的简单程序。* a) v) m! m' c/ u* Y
  
% H; O) S' P8 S5 k4 c7 Z1 r8 ^  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这
4 o* T9 L1 |/ ~9 {; `9 {+ s  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
4 e7 ?" T+ E- n  人敢学,也就没有市场。- |8 l* w: Z7 t1 I
   ) T7 l4 B3 F! E4 y  {
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。8 F9 w% s( f$ e5 s5 z
  第二日
. h, d% I6 G6 f  今天先看书。, k1 e* D; W* k2 @) z* T
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。6 b/ K6 r8 f2 @- T) W3 |3 {
  
) r/ I# x# q8 M- u! k/ v* M* f5 f% c  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。8 s& w, x0 {9 q$ g+ a
  
5 j7 e5 [: H) c, n6 _  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。5 Y9 ^" D% H! ^" u/ o2 _
  
4 ^6 k$ I6 W2 _& ~1 p6 W4 Q) _  书上对OPC体系有描述,我画了个图。- _8 a; U# H6 r  I+ a5 A2 W7 H) G: i
   9 |: O5 M6 X8 A1 A
6 H0 Z( y: ~7 E8 R. n+ {% p) n
. I  B# @" q$ s# X) z
  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
0 a2 m7 P' b( Y& T7 T  
6 o: @9 w; s; I4 L) R  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
* e& N8 I. k/ o8 m. M  V  , |. \4 p1 Q7 i" ?
  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。+ u9 f4 w4 M2 w3 m( i! O
  # M6 |, d7 h$ Q, C/ s8 u
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
% Q9 I7 h. p' v9 b8 U; z+ P7 L5 x  9 v! G) q0 |- N  e. b, e
  我在第一天中安装的几个DLL中:% p! D) G+ _4 S  K1 o* V" Q' z
  OPCcomn_ps.dll 通用接口
, W" K) y5 M% o, _, T% z& V  OPCdaAuto.dll 自动化接口0 ]9 L. T1 \4 F. \: m
  OPCProxy.dll PROXY-STUB
1 a9 X8 A$ {0 m9 N  P  * }% P- t" E* ~7 O
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。1 n( z) c- K4 D) n; Y) l# I0 [
  9 x5 ^/ }# V( H# y( F
  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。' z# M' j3 H5 m# L; W
  
" X( H& ]* `: ^1 A( g% Q  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
, t# }- h% L+ n! h  
" [: D' b3 m+ U7 u7 }' M0 w) K  按照书上的顺序,先了解OPC的数据组织。我也画了图。6 {, {6 E3 d8 d
   5 Z3 [% J: \  ]% e0 X$ M- n- x
2 r0 ^  e; a. c& R' N6 V8 w4 I1 y) }
, \! b& ]/ `$ \: K( |( A* p% F( l
0 T; m  j8 R  a
  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。& {9 i/ F, g& T. `- ~* H/ q
  : j& a/ A: B7 E6 l
  根据书的介绍,要访问标签,还有其他工作要做。
/ Z$ B) H3 n* H/ ^. s# d2 [  我累了。明天再说。8 m8 `& C" u2 j/ m. l) m1 s
  
, K! m. q: V' z% }  第三天! d& J# F- Y- E2 R+ ^
  昨天说到访问标签先要做些事。) [" x# T4 j6 {
  
/ N% }5 A( Z1 u, Y% i* o  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。
  Q% Y, @. U; `5 l  9 v8 h/ Z' A; P5 l3 ]5 c6 ^
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
8 p) _8 g9 V' _9 N+ v  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
5 W, k- W- `5 X; i2 t  4 Z# d/ l. |  R% G; K7 D2 k
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
! K7 T% w, b/ z2 d: @& A* R  直接运行,没问题,看到了数据的变化,决定看其原代码。5 V2 N( }. D0 ]3 y; y
  
. o) A9 L8 h# |$ N! d  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。
; P. E3 F9 `6 \) C  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。+ S$ H0 i- j) I. P, ~  f; H
  / Z/ w% l- \+ @# \3 \- Y" d
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。
/ r: q* N8 b1 g  6 W0 n, M! ]3 V3 S1 F
  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
$ R) h/ Z$ B. E7 S7 K. w% R1 r  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
6 x4 h* o! b/ D7 `7 X  2 p2 _* v/ L5 e6 Z6 }% s7 C
  我给自己留下了两个问题:
/ [, {) N+ i8 k6 L6 m; o/ i   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。' G% i4 Y2 z( R
   2÷如何访问ITEM,取得其数据等。, t2 M" n( p* Z3 ~/ S
  2 `% F# U% j8 B0 _. J; E
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。5 |0 ~4 U( G$ `  {9 V9 j! P" L
  今天到此为止,
- ]4 z- P) ?) E  休息9 [: f& k6 Y3 {0 N- r5 H
  ) K* s4 S4 b. Z3 `
  第四天
6 v1 F& E+ f1 g/ b; K' W! g  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot( ~# H* M7 ]! h- f+ T% R
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。7 o' G: |0 a, u- h
  " Q% ^  Q, C% p1 q" b3 H
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。1 P# K4 G5 i8 |8 o- R6 n$ V9 E
  
7 m) {$ w$ o. O3 j$ d" e* O" ~2 B  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
- t8 n( _0 M  U- [* q% [  ( P% q3 K( A- Q! ]& N) w9 |# k8 D, o
  我添加一个组,在其下面建立标签集合,然后用:
3 P9 m! I. @3 q$ s" v  s% Y: P  标签组的ADDITEM方法获得句柄。' P/ c; P( O' h& ~- d8 _
  用同步读方法就可以得到每个标签的数据。8 ^% M9 I3 C+ G0 i( [1 n8 P
  + [9 ~. n' P  E" R( D# i
  我发现有问题。昨天我就发现有问题。
* C* o. }1 ~6 l  P4 E4 t- U  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
/ c& b9 Z8 Z; I  W  
4 x0 S0 J& i0 V1 }! b  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况, o& g1 T/ u) `7 k4 l$ m
  bch1(树枝)9 w" i9 E2 a9 ~9 n, ^
  tag11(叶子): Z* H, n$ Q2 x, ]/ }: Z
  tag12 (叶子)" k* j( k' g) ~4 n% K' O: q, f( Z
  bch22 e- w- G9 O" a5 _9 `% @2 G! m( X
  tag21 (叶子)9 A4 Q9 @( B4 x! a: A  p2 J
  bch22 (树枝)( W# Q0 G, T0 A
   tag221 (叶子)
, a+ \" K; z7 r/ g   tag222 (叶子), u; A! k* Q4 c! O) a
  
3 O& y! R$ o* |4 _) m: q  " u  ~% a5 N: F7 S) ^
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的
" {) Y+ ?; ^1 l( ]  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222
" N/ P+ ?% p$ e0 {- ^- f# E  应该用OPCSERVERBROWSER的GetItemId()获得。
4 j* W" |/ F. y' P. w8 H  
; ]7 P1 \" r( V  修改程序,OK。0 E3 h& B; ~5 s( \$ ~# r. O
  * o, J  `& ]3 t: m$ G1 ~! D4 _
  还有什么问题,本机服务器的枚举。
8 `* X" b" w4 ^4 G2 h. a  明天再说吧。ZZZzzz
8 \4 m- i0 h9 ]/ Q4 M, r* d: N  
' F$ u( {- K  P  第五天' K/ z% ^, Y& T
  5 O. `& ~3 }  {. E. X( O
  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。
3 Z9 I- U) W( G7 e3 D- G  
, \2 q2 W6 g  n, ?0 D5 z  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。' @- T' s$ z0 m" Y$ ^, u
  我选择了一个网站:5 m9 n. W/ ^. a0 ^: c
  www.kepware.com
5 P. M+ S# F; f8 M  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......9 h3 c- k% N! I$ ~3 I: N
  # e9 x2 Q# F' x8 [' x; a  b
  枚举OPCServer的法子:
! o4 h  r* s9 R$ @  Dim ServerList as Variant
! ]( }9 X8 G% c! j2 ^  Dim i as Integer# g% Z, H: k& j7 L4 J" r3 \
  Serverlist=anOPCServer.getOPcServer(node)
# }' N% Y( a  T3 S; s) M  List1.clear
9 A* X  d% {% ]% a$ u$ T8 M) b  FOR i=lbound(Serverlist) to ubound(Serverlist)
8 H7 h$ u, H& V$ Z  U   List1.additem serverlist(i); s/ _+ i7 P* o( X
  NEXT I
  m0 S% C1 L9 y5 y1 o  
& W9 C8 T' ?! W9 l. ^. E% f( g  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。
  q% \* M& u& e" e  找到了枚举服务器的办法,在单机上成功。
8 a  b% r3 S% k; o  其实《入门》也提供了一个DOC文档,是OPC提供的:
: e. P  W8 |- ^6 [  Data Access Automation Interface Standard Version 2.02- i" _3 ?- f( ~4 z0 c5 l$ O
  
# n; i( n& i) P9 z+ M  是一个必须的手册,只是有一些错误。错误总是难免的。. Y3 N3 Z$ U- v3 b9 ^
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。0 R( P% y' @/ h# Y. p+ Z' g. c
  1 ~+ U# |$ n: g& n7 |9 _
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。, \( w& _, G# x2 o# r' e
  
4 y/ E$ @3 F/ A* M9 \  第六天* M8 S. _9 P% a) h. v, }/ d1 j
  
  F7 @, ~0 \( M% y3 L3 l  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
9 X& O2 n  k8 S. j' l) j+ s  
' T0 u7 m3 C5 J, B" V  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。! P: C) d, w: A; }- {
  0 W! b  H, G& |; T3 C+ R0 |
  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。
( W0 q, W  H9 `" J  u# U  
! s2 b. I" S8 M( J  下午休息。8 \; V) Y3 p) s1 N4 R8 D
  : k( g/ T8 k" R" V4 a  o7 {
  第七天
! j1 _$ }) V0 s5 }) x  
2 J" [- g" [& C4 ]. r* k4 t" t) u9 j  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
2 _& e% P6 a) V  
3 i- N3 t( Q$ O# H2 q/ K; m/ a  ^  我想起了第一天安装的那些DLL,还要么。试一下+ _" q; e5 m. O8 S. J( V  C
  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。
/ D* O( e2 w/ ~2 I  B7 t  OPCcom_pas.dll 通用接口2 `! M* _2 m5 U% }/ a
  OPCAutoda.dll 自动化接口7 u# @5 r& j2 S
  OPCProxy.dll PROXY-STUB
0 ~/ a7 Z/ g0 E3 F  
( }" {! b0 P& b) i' B! }2 \  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
; ~9 U* z  M# T; n  n+ g  ; G! t. Z3 C  e8 j
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。
7 T# E* R% L% V5 N5 x. h  : l3 c8 d1 W1 o$ p, z# a. s: e* i
  后记5 U  @* a) d% L% I( H; n/ L
  这是一次入门的学习,本身没有什么。我却有些感想。
7 y. ^  j0 D' X8 ~8 S' o  - h' r! _3 U8 `: ]& ]9 G. `4 Z
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有- h/ u  r; A3 L: B/ D5 r" ~
   OPC ALARM & EVENT 报警和事件
/ b- T0 W  ~- y   OPC DX 服务器间数据交换
& O3 l7 l+ J5 P   OPC SECURITY 安全0 |2 D, \' N, C5 p
   OPC HISTIRDATA 历史数据库
" s' e8 }# l9 N8 T   OPC XML XML+ a. r5 j$ |/ i5 ~0 U
   OPC .NET FOR .net5 M8 [3 }/ A+ P: t5 g- s+ h" l! G
  这些对于一种工控软件是比不可少的。
: H- Q* _0 W3 {; e/ h  
4 @# c3 q3 x$ W- B' \$ x# q  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。/ g; [' Z" W* G  F4 v" W9 P
  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。; L  s# a1 s6 P+ S+ }7 ^- W
  
( d0 I7 B2 f. K! k  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
& l. c, d# Z3 R0 u; x  
% [* U. f4 z6 U9 b% v1 F4 R* W; q  o  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了; g: _$ c! R2 e; a( q  g+ @
真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性- Y$ u0 P$ ?$ m1 K0 S. |2 g
书还是买来看好,提高的快。& d5 F& _2 ~* D: _0 h

7 `' e9 T6 s, q[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
$ k/ H6 Y& Y. c4 mhttp://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 )

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