QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
8 r) C$ m+ o3 E3 R( y
  @  U6 A3 K  I( p# s[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码# a/ {) j! e/ b$ O, }, k7 u
CSDN 下载频道
5 w) [4 q0 Y6 k3 L
1 C' c" O+ a% v) f$ U& Ahttp://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)& ]# U' ?: Y6 M, Z) a6 f" N
0 f# ^3 W* W8 H2 r5 d0 t  P
我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。
& W/ Q& F+ t# z' q: d! Z+ L) x) }& P  
5 b0 Z# `' s. D: v6 L  第一天3 D) W6 v( D) O' ^! X! G( X
  7 F1 N) H) f' q( t/ C  o
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
5 q/ d! x7 f+ K. a6 q* {: {  opccomn_ps.dll
; s. k/ a' \- _. I1 d# T/ {0 m  opcproxy.dll: [$ u7 G& N( }. H+ t) K6 L7 w
  opcdaauto.dll# E) ]) O/ y; c3 y
  OPCTrend.ocx9 i! h* _, b2 w$ d8 H3 D7 y0 B) r
  OPCBar.ocx
- T' q7 R; Y+ S; g( \3 U. ?  OpcServer.exe 1 L9 `, Z; M5 A& K) I) l
  OPCJDADemoServer.exe& P" S" _5 f) F6 D& b8 u5 V& h
  
* a: B  r! _8 s5 Q" j- e) _  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。  c+ X4 f) [+ \8 J4 N
  后面两个是demo 服务器。
# b+ x. k% L  V. Z  
( a* E5 y. P5 i$ X7 b: A  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
* \' ~% c( U. i4 _  服务器。安装了(注册)。1 h3 F% b' |- U! b( ~6 t8 N
  ) O! r' P7 }5 Y1 q2 k0 y
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,3 v$ b0 U5 M0 ]( z5 \- e
  , C+ i( K) \4 V5 ]
  点击连接服务器图标,立即出现了三个:
. ], Q: q0 I) l  OPCJ.SAMPLESERVER.1
9 b7 K4 Z1 E5 h! e  OPCJ.DADEMOSERVER.1
3 A% y) O/ M/ i) [! W# w; j  HEXATEC.PCDATA# `* X: L8 D1 Y: D. R
  5 j. q! T" |  G3 p: F
  第三个是opcconnect上download的计算机基本情况的简单程序。
) Z+ _7 u9 Q. y  $ ]; k' E3 P& v+ y, w
  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这8 r8 ~) m8 X. R/ Q
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
5 R3 o/ [6 k: W1 w9 A) C9 `+ l" H: N  人敢学,也就没有市场。
, _- s  }% ~' G  `( R& S7 [, ~( b   7 T5 \0 _' g" ?2 m3 u
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。
# Q4 L5 u* W; B  第二日
0 o! i+ t9 I$ k  今天先看书。$ i& G; `$ B- N) m
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。
" v/ o4 w3 W3 @3 x& p1 ^8 \  . n3 g" g: I4 U- I2 L: i% t5 a; [
  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
- k* T- ]- A5 k1 ?0 Q7 o& ^  2 i8 w3 l/ B$ f$ e
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。& W2 H; K3 n% m, q' T8 N
  2 n$ w, ?& M. ^' @9 u$ C% q
  书上对OPC体系有描述,我画了个图。/ n2 X' c1 E! q' y# [: Q
   ! x0 q$ z$ v  ~& P* r  k2 h' w! H
: D8 v6 `1 Z: |2 j+ T
  P* t& G8 n  k* J. g
  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
# V, b; b* P* h: l& Y+ e# e1 D  
4 L1 W7 S' V& I+ g1 y  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。% \/ V  ~7 C; W5 m
  
2 W  H  X$ R3 {& q( Z: d. E  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。
5 X! a/ r9 ?8 F* l9 {8 X  * s2 ~: m% ]: x' e4 [
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。' v' Q2 n+ B0 L8 V, m
  
3 }! i+ s' Z+ g8 q% o) d' K  我在第一天中安装的几个DLL中:
5 U* T3 d  c7 k8 k  s3 R# L- i  OPCcomn_ps.dll 通用接口
0 {( ~  G0 W$ g( Z# e  OPCdaAuto.dll 自动化接口
$ {; U# Y+ Q# @% k; U0 y  OPCProxy.dll PROXY-STUB2 A4 y& ~( _9 A& d. x9 g0 F; X9 b
  
% N4 l) g& O2 X  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
% H$ P! J" y# o! |: W9 E4 f" l  
- y# @7 i* v2 N9 ?7 D- D  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
& B/ u. C( d$ z" ?  
! F8 c9 v  |( y9 x; F  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
% u! ]0 q! r2 L% R  ) P% \9 f( z% t9 g+ \1 ]
  按照书上的顺序,先了解OPC的数据组织。我也画了图。
; T) |8 ]  u3 \* ?# E4 a  
: s/ n4 z: Q" X1 w9 F7 d5 P) |' A/ B7 r- q$ X" A& Z. e

6 B2 P# t$ k( R  q
6 P* u/ T; P/ Z8 b7 \- T/ N  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。: f5 C' V2 j( s
  5 j: Z& H4 q& n3 C3 l. r% ~& I
  根据书的介绍,要访问标签,还有其他工作要做。0 B$ P* d7 h, c
  我累了。明天再说。
; b! P  j! t5 k( W- R5 ~7 Y  m  
4 z- ^* X4 m% d7 V( G  第三天: L" d7 Q$ w# N- x
  昨天说到访问标签先要做些事。5 \! \. L% M5 K( P9 y
  
" G' y; b+ L$ D7 {$ i- S  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。
" G$ N  C  X4 _. A- M$ p  |" P  Q- M  
" s1 U. W2 p8 P  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
7 M. G2 O9 ]6 _  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
9 s5 B  t+ u' m  ; D, y4 m8 S+ W0 @) i) y
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。( w( ]3 R4 ^' k# W3 [" y' E2 Y
  直接运行,没问题,看到了数据的变化,决定看其原代码。7 W1 a9 U) H+ f, F* c
  
! N3 N1 F3 x3 s' `! _4 M8 {  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。
% D) A* B+ e/ N& ?/ v0 w  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
) j9 O9 b( l# N0 r/ V  
% [( y+ \: q) G2 T0 p$ Y% |  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。
- R5 o3 x3 S% Q' z! q6 z7 U    T1 _# T+ P) ^* D0 s' J9 t
  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。4 a9 G( T* [; d$ n/ V
  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
. m" z% b! z& Y6 C+ |  ' G+ v$ r* a0 h5 }0 `
  我给自己留下了两个问题:; E5 c3 a8 @) H
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。5 {& v8 W( ~& k
   2÷如何访问ITEM,取得其数据等。
- i* h0 q1 V4 P, ?4 l' v1 X  ) n5 A5 }, x5 n! g& a$ A; a' b
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。) C! O' C" m& C- S/ [
  今天到此为止,( w; Y4 x% y/ A' ^
  休息6 u$ z! I7 x% r/ w6 W
  2 u8 Z$ s5 U9 w. r  |. v8 k
  第四天
" l) K* t1 {, r" H  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot) ^! ^% P. z$ o  y4 L* J0 p
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。
4 Q2 s4 P1 _4 l3 a8 R5 L  / q% ^# v6 w9 }6 w
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。, s4 _; H6 `6 Z9 M/ A
  
! I, t3 b4 p8 L% h# [' }. P  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。7 m- i* I% o1 i" X- T) f5 D
  9 h1 J0 O, S' D& u+ O
  我添加一个组,在其下面建立标签集合,然后用:
% k5 z4 Z# D" w- ]) A6 C/ Y( j  标签组的ADDITEM方法获得句柄。
: Q: W4 a& w4 x, N* i  用同步读方法就可以得到每个标签的数据。9 [& Y: `+ C& m4 S+ O1 D
  5 w* {) e+ h3 t' V: [# t
  我发现有问题。昨天我就发现有问题。: y4 B8 z9 V6 }# i. P
  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
# [, p- h( \6 ^9 o- O4 e% M  
% \) T9 `5 F' v8 m* H6 P  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况
& {& q+ L# E: y4 L4 ^7 I  bch1(树枝)
) G  j. L1 S8 q  tag11(叶子)
% h* s2 V# P: x( B. e  tag12 (叶子)
4 O2 O' x9 L* y- I) M" Y- x  bch2# Q9 g  ~) o- r" V
  tag21 (叶子)
) U, K8 S' O# q) w1 k+ V  bch22 (树枝)
  {- |7 J9 g# u7 N6 f- z3 d/ ^   tag221 (叶子)2 w$ X' z. I7 V- u! B3 ^
   tag222 (叶子)
+ H+ K- F: v6 v2 g  6 W4 }+ G4 B& ~7 t0 V
  / R" ~3 T& [9 D
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的
8 r+ W  p: ^" x& s2 z9 _  N* T. t  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222  V( m$ `1 Q7 {9 E5 V
  应该用OPCSERVERBROWSER的GetItemId()获得。: D* W/ X, L6 z* m
  
6 A( A' |% }, g  W& S, a  修改程序,OK。5 h, \5 E: ], T7 [: e# j. i# l
  7 Q5 a  @  M# U& O) y
  还有什么问题,本机服务器的枚举。
3 D* z6 S  o/ g5 D* ]) ?! _  明天再说吧。ZZZzzz! r% Z+ ?/ x3 Y0 U" J) G
  
, [4 y+ O) Z, I, G  第五天, D$ f+ G/ W9 W$ C1 X; B, c- K
  
& m) n. m) Z5 D6 E# \  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。
0 g6 y7 I2 C( r" e6 v! d& O  ) `  G. n% f$ u  {+ ]
  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。; ~. [  k# |$ k
  我选择了一个网站:
" _  ^  O( m) r4 c: P1 O  www.kepware.com
9 A! _( T0 l% O" T  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......7 A. K& M) G1 o5 M: Q( ^& B2 v, u
  
  [- A9 `0 e7 G* F& T9 W4 D  枚举OPCServer的法子:& `8 q( [; d' F) A" n
  Dim ServerList as Variant
# H( n7 x/ t" c! {# t# t  Dim i as Integer) |6 Q, v7 n# R: d) M, X2 `" h
  Serverlist=anOPCServer.getOPcServer(node)+ ?0 A4 U9 w* \
  List1.clear4 j2 n7 j" C# q" y$ ^. n5 L
  FOR i=lbound(Serverlist) to ubound(Serverlist)
  D$ \- E+ M1 Y+ c% g) T% ~9 x   List1.additem serverlist(i)
" ~2 R5 R8 P: M% ]6 g4 K7 V  NEXT I+ v# N2 X( k! |7 Z$ N: G* A. P/ Z
  
" w! g9 p6 ]" Y% D1 F% U3 |  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。8 [! E5 Y* F+ `; h
  找到了枚举服务器的办法,在单机上成功。8 L9 o& |9 b  e& j, T/ t* f
  其实《入门》也提供了一个DOC文档,是OPC提供的:' m' P3 V4 Q3 e9 s# @0 n
  Data Access Automation Interface Standard Version 2.02
! O* D3 E4 g* ]( t4 _) {$ V  
% Y7 G9 m4 Q, `9 D/ `  是一个必须的手册,只是有一些错误。错误总是难免的。  Q; ~  h& s& Q7 S5 |6 @* Q3 V
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
& `9 K; c6 R' ^2 o- y' Y7 L6 _  
7 }+ Z3 ?, S9 f! R/ M6 K6 S1 r  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。  M5 u, ]4 ]6 |
  
4 ]" a* {( i& a% h  第六天$ X& {6 I( o3 ?- b( D& q. m
  0 ]% t  m4 M; d: i9 X
  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
3 {* y6 F* G- @7 ~2 F, t2 ^  
, H2 L0 ~3 \. N- k$ r- J; ~  j  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
4 t4 W7 E. S& [# G  
8 ^( _0 c* z" r* z! t% S# Q  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。0 g, O5 O, s1 V8 l8 Y7 H
  , e2 D/ V5 H: J, P6 Q: l( j
  下午休息。
% o0 d% H, Q- l  
8 J5 r0 l" E2 C) e  第七天9 k3 Y2 ^5 Y( e5 ]' [) g- y
  
7 u" ^  J' K; J0 x4 [! C7 \2 L3 ?  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。. R) O1 H) {( ]  L
  
. Y# E4 M% Y) w: k8 e9 ?9 Y+ A- v3 j8 X  我想起了第一天安装的那些DLL,还要么。试一下
7 N+ M; H/ N+ d6 m" [* P/ O6 U8 i  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。. d4 }& Z  j  N: ~- l' p
  OPCcom_pas.dll 通用接口: e- G4 o' a  `1 ]  T
  OPCAutoda.dll 自动化接口
, P& M6 G$ S0 x  OPCProxy.dll PROXY-STUB
  q. F: D) I" q: R' f1 \; U  
- Z) |  V* t( s$ S; @, u7 r  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
+ ]1 c$ L/ j4 ^4 c( _  
4 B3 |' X0 t6 \* c9 Y& s  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。9 D. s! n9 o% }( X. G
  
, E$ b! V; F- u$ D7 t0 J/ C5 z3 k  后记6 |' v. Y2 q" q
  这是一次入门的学习,本身没有什么。我却有些感想。
; K& U/ U5 {$ X, h- K  
& Y+ z. Y! I- ?( M  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有; c) c/ ?$ R' B" n: y9 I- q
   OPC ALARM & EVENT 报警和事件# H: l) v3 V# `' ?2 n1 I" u
   OPC DX 服务器间数据交换
) v# P& ^: n+ Y, m   OPC SECURITY 安全9 W8 t  d* X; g
   OPC HISTIRDATA 历史数据库
# x& v9 J7 z8 u% e0 L$ c; D3 @   OPC XML XML
! N8 ]7 Y: w) T7 L" v1 f- D, c   OPC .NET FOR .net' B7 g, j! V! `" {3 o* t% w* H2 ?
  这些对于一种工控软件是比不可少的。- K9 K4 z" C7 y2 X9 v/ e6 F
  
( X! ]% S5 j9 Z3 O5 B" U  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。7 c8 m' D2 o* V4 E5 I7 K4 `
  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
' U6 b  H1 {3 G  4 p& l+ F' S# W
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。! K) C9 H3 n" E1 i8 f; Z$ z
  
. `* G, w. t, o  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了- h- Q( z9 s& P
真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性# w5 p5 a6 o3 A5 @! C$ d2 p% @
书还是买来看好,提高的快。  h1 M3 N7 l4 n" D

+ U3 v* E6 `* y8 }" k[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签), h: c/ h% G3 d' D1 }9 c. }* I' j
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 )

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