QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
2天前
查看: 5943|回复: 8
收起左侧

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.) ?6 G1 T5 w8 h+ P# G/ K, t0 r7 \

& i# V. j6 f3 D9 J( }[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码
' i' G7 k, m: n% ~( t CSDN 下载频道, B  q! b: i) y
  H; b7 d/ {1 u+ M
http://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)
) J4 l. e1 x6 V* w, {
) q3 l# ?! ?" m& ?, O我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。- K8 o( z0 u% |+ B2 S# ]4 u/ W0 [
  4 Z: s# \4 w1 H5 n3 l* d
  第一天
$ o3 [! @2 M: ?- Y( A  & W; h; [3 `$ `% N" |; F. |2 }4 \* e
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
; q( h' R; Q- M  t  opccomn_ps.dll; E; r+ E4 G$ @3 k& z
  opcproxy.dll
# j4 f3 T' e1 B2 M+ U  opcdaauto.dll
1 v2 V& x! i) ^. K& w  OPCTrend.ocx
  q& q2 ^- g+ U" W- G  N) A! H7 n  OPCBar.ocx. E4 c+ z- q7 D/ r
  OpcServer.exe
1 H. g2 M, r. p" R" \6 ?7 y  OPCJDADemoServer.exe
+ s! y( V" B! J. L. Q4 Q  , e: g5 j! B6 n( L6 R5 w
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
4 f6 g9 Q) k+ [# R" V: e9 U3 N  p  后面两个是demo 服务器。# g( V# o5 B( W  j9 O+ G
  & {) S. T# X3 E
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
& L- k2 O$ o) Z2 M6 d. N  服务器。安装了(注册)。, Y5 f2 n. i7 G3 v; |
  : H& Q* E3 V9 r1 P! B
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,
3 D1 I& l/ N* L  8 y- M& _5 \5 A& h  h* u2 h% m; |; c, e
  点击连接服务器图标,立即出现了三个:5 r. S1 O: P: [& P0 V; x1 W
  OPCJ.SAMPLESERVER.1
& S$ \1 b2 Y7 y+ \3 f; X$ O  OPCJ.DADEMOSERVER.1
+ D& Q& x* O& @+ H+ g  HEXATEC.PCDATA
. z  E2 N& N' t  ! V4 m. f% [5 l9 X) z
  第三个是opcconnect上download的计算机基本情况的简单程序。4 F& z3 N% K4 l& N* J" G7 g2 |
  
7 U7 c  X( ~2 G( }  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这1 g2 Y/ F! m1 ~3 @8 _' y
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少( @1 j9 k: `) M6 y
  人敢学,也就没有市场。2 r, I) S# C! K9 A
  
, q0 ~! r* F% K( g: Y! d  有一段时间没用VB了,先热了热身,看了自己过去编过的code。
0 w: K1 K. W. b$ O( L: i% k8 R  第二日
& P# v8 c' A# e9 i5 D7 C: p* {  今天先看书。
8 h3 L! s' Z  R& R  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。
3 Y+ a" Y; @4 K6 ]1 C7 u. u7 |2 k+ r  
0 k% R5 @# p+ M% n+ D4 Z  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
) l6 \1 V: C5 @, t4 q  * D/ d) S& K6 U7 }' ]. B# Z
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。
# b# _# a& [; e% j  & a  g' G/ f- t' [$ S9 z. Z
  书上对OPC体系有描述,我画了个图。
% ~* d8 O' I7 |* b/ f  
2 y3 W. a$ x( g
4 n- m+ a9 h' ~" z( C( J+ x
# d# s, }$ h; W* I3 |% R: [  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
. Y1 n% y1 h# V" |) _. T8 B5 ]  7 A# t( ~0 N* p/ Y2 b, `
  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
4 f- X- M) b6 T  
$ g1 n! u8 L8 B8 `  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。
5 Z0 N4 T3 V$ x  ( `' Z" ~' Z8 F% ]0 i
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
/ ^8 j( W+ |8 F8 Y- N+ l  
1 w7 N2 A+ A0 Y2 y  我在第一天中安装的几个DLL中:
* z% l. ^8 {( J: ^; C! s. I7 ^7 {  OPCcomn_ps.dll 通用接口
- }% k" ?& q2 f8 i2 ?& f1 d  OPCdaAuto.dll 自动化接口
" u" H% K$ j1 v; Y5 t  OPCProxy.dll PROXY-STUB  _+ t# ]3 f- j+ K
  & n9 O0 v$ N7 H( x" H5 Y
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。. v- V6 j& {5 s3 R8 {" _
  
+ {6 e  S  ?+ ]5 o+ l/ z( N' e6 g  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
' R6 ^2 h- L6 [4 [% D  
. C" t) S9 x7 L) l* l3 t1 o9 l& z  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。8 T, e; P5 K* Q8 w( H' P  j
  8 \  b( C0 j3 A$ A' {8 D( |
  按照书上的顺序,先了解OPC的数据组织。我也画了图。3 g% s7 ]* X: V) M
  
3 h" e" P& {6 Q; s3 `; C  N" R
+ w( s; T: Q0 Z8 V( @7 `
2 F" J5 U' u' P: T4 u" `# l% i( G9 ~
3 h* ?' j$ X' A; p: [  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。0 K; F  c6 J# `/ e( x, z
  " z5 _9 F' U; y* y
  根据书的介绍,要访问标签,还有其他工作要做。
% }" d$ B) P- l  X# |  我累了。明天再说。
3 I' J& P5 V  T$ v  $ _9 a- s- U3 i
  第三天
) e$ l: V2 d$ {1 K9 r2 v# {8 S  昨天说到访问标签先要做些事。
( Y' t* ?2 e, }  
/ a% i3 g% t6 w9 }* J' i; H* s1 c  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。
8 ~( E4 D& ~' X2 I  
% z$ d% N3 f7 ^  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
, g) b& L$ _6 n& ~7 J( S* r% X  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
' H7 J4 }7 }  b6 G' c9 K    i' s9 l. {% _! s; j& E& K6 q
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
) _* s- O0 ~: i% {* A- I! x% w) P3 k  直接运行,没问题,看到了数据的变化,决定看其原代码。+ o3 O- x% _; ?7 @
  
% r8 o* C0 U5 q+ U5 |  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。. E% X+ m1 w) e% a# |
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
* i8 k1 K  U4 @8 ?  1 h1 Q, e+ f& m- y) T
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。
* R& m- T3 m3 Q' I6 w  
9 U0 V7 [# z) }  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
7 Y9 h' X: R$ |- j, t7 r  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。1 m0 Y( W' ?* n3 K7 P' @
  
- ]' h# W" A( E/ F; M) g  我给自己留下了两个问题:' f+ n1 O# K* k- m) ~4 ?
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。
  |: c+ A" y6 e4 ]5 u3 q6 p  y   2÷如何访问ITEM,取得其数据等。  V! E; S6 h9 X, G* r# p+ Y3 i4 [
  
8 c# }  j+ ]' x2 M- y" H% }  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。# ]2 i8 k% ^' l7 j# f4 O/ s
  今天到此为止,
, d5 Q6 H  _3 D, \  休息
# J3 k+ t+ M0 s% w4 x  V% `, p  6 R: d8 u9 o. X# n
  第四天  w7 M  C$ k9 T6 }, ?2 r
  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot
1 J9 w% X5 ^& x0 L& ~( W' q" B/ x3 Z  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。
) E6 @7 {( W. R4 X  
' H+ F5 j& s1 V' P  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
6 P0 G8 `" q3 o" [  1 E4 I4 g' o- p! t
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。) f) l# ^! o, o, }) ]% Q
  + _5 e6 x) Y5 |- k3 B' R, I3 N
  我添加一个组,在其下面建立标签集合,然后用:
  D8 [1 d: B# Q5 L2 ]7 m% r  标签组的ADDITEM方法获得句柄。
8 S$ j$ E9 {9 K7 g  L  用同步读方法就可以得到每个标签的数据。! V7 q) x% C( Q5 u# \% O# b
  
/ R) a- K5 e: R  ?; g" D  我发现有问题。昨天我就发现有问题。
5 _1 m+ O& c# ]1 @  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。, R* M) V) m. d4 _! P1 z
  
" L5 ?' z$ w4 ]* m8 b, Q( ^  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况# V4 i) J. v# h
  bch1(树枝). l0 D9 N  x  F1 |8 V' X
  tag11(叶子)
1 L) K: b% n6 ~( E  tag12 (叶子)
- l; _) u3 h2 X' x5 c6 C  bch2) B% `" P8 u/ a
  tag21 (叶子)
# f6 J- c. x# h& n4 l  G3 K* @& s  bch22 (树枝)1 e# D( [% B2 n- G" Y3 N5 @( z. c
   tag221 (叶子), z- U0 |" p3 e( @( T
   tag222 (叶子)7 R6 s8 s- _) ^, K/ L  J
  
" I7 i: Y9 A* h- z- A  
" s. w: T- |# A! Y4 J9 e  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的2 q. Y5 d  `/ H; v7 ?# @0 U
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222. Y7 Z+ {) e! D
  应该用OPCSERVERBROWSER的GetItemId()获得。  |4 h5 c2 `1 d) o% O
  & X: W  ^  p0 ]' ]; d
  修改程序,OK。
) Q0 U" y' X& t* k$ k. r( c  
+ Y8 ^! g/ Q, h" m7 ]7 M  还有什么问题,本机服务器的枚举。
% i& P5 ^& b) t, A( y  明天再说吧。ZZZzzz* q$ w( c0 K) o6 Z5 X' u
  + e# N2 A; A5 B& q) n, \
  第五天+ Z& T# ]* Q2 m# S3 b2 x7 l$ p6 z
  
3 A  G+ l4 d) ?, t2 h  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。
" o- P/ I7 x5 p* B6 R  " g6 Z# P5 @5 N9 p+ e
  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。
0 ]- ~, ]' J' ^  我选择了一个网站:
& n+ l- g! b. f& V% w! `  www.kepware.com
. X; P8 F$ Y& k) L& b  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......' t! y; H% k; [; L4 `
  
9 }2 V8 J, b5 U  枚举OPCServer的法子:
+ m- H9 s$ S, ?7 C7 L7 {- V4 a& w  Dim ServerList as Variant; @; y$ X+ x6 ^* W- m2 C
  Dim i as Integer6 w+ `  l. x; }6 y
  Serverlist=anOPCServer.getOPcServer(node)) c" \' i! A3 @. T7 @, B
  List1.clear
+ S" z  m1 A8 N! b  `2 v  FOR i=lbound(Serverlist) to ubound(Serverlist)
8 }4 |+ E. m; K) P   List1.additem serverlist(i): \' X' a$ M3 q9 e3 J
  NEXT I
  }% h3 |+ Z$ @5 A  7 I1 Y# V& T7 _
  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。
$ g5 y: V5 I8 G3 o% O' D9 E  找到了枚举服务器的办法,在单机上成功。
& K/ d! v1 o. M: e  其实《入门》也提供了一个DOC文档,是OPC提供的:
: Q% B# v, P% J  Data Access Automation Interface Standard Version 2.02+ H6 j1 L! Y  p+ b6 i% b- D
  % b3 t/ x. s" W; x7 z0 e
  是一个必须的手册,只是有一些错误。错误总是难免的。
& C9 I. B$ X9 s  }  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。5 A! O1 M7 y  n& z9 u
  
. k8 c2 k0 {: b9 a4 I6 a  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。
; M& q0 i) r% ?- C  
2 o+ a3 A" V- A; P; K+ I$ O: ]  第六天  F$ a& j+ R% H/ M5 H/ k% `
  
/ Z. P: {- C9 s( h8 P6 \/ t/ y( s  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。8 F7 `. m  n4 S# [% c
  6 h5 [. X2 c+ F5 E6 z: G" f
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
" d( y- e# E7 _9 q# h$ y& g) p7 b3 z  ( C0 ]- v& Z' k
  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。
( ]& d5 [" F; h# w  
* ^" w& }0 k1 X. T1 ^- l. {' A% d  下午休息。
% `( P+ y& m1 p3 |1 \- c4 h  " }- b: h* d1 F8 N
  第七天% h  g0 l, b9 o1 z7 S# z5 l" `
  
% T) L2 \4 o  u) c  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
( F; b) n: `: g0 w3 z6 h  
# o8 c. k2 o8 V5 {5 i6 f* I8 C  我想起了第一天安装的那些DLL,还要么。试一下' l, n" {7 J9 e4 o2 G' X+ V7 V
  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。4 y$ e& c1 N) v8 e: k. @
  OPCcom_pas.dll 通用接口
7 U; J4 U; n& @% l) T7 |) B  OPCAutoda.dll 自动化接口4 L5 n' k* H& r0 Y% x
  OPCProxy.dll PROXY-STUB
2 @2 K. e# s: }+ e" G' [/ U; D$ \1 E    m+ t" f+ x7 L/ C
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
8 _8 X1 [2 N) |  
* ?  J  z% e4 ~# m+ t  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。) u2 A$ y0 k4 H6 Q) E1 g& j
  
* y# i& N; l/ ~2 x" V  后记2 M$ m% r4 P/ _0 c: ~. Z
  这是一次入门的学习,本身没有什么。我却有些感想。
, t6 c$ O1 c, ~1 a" i) P5 E' E/ O  / K# s* l* G' v- j+ d  _1 H0 R
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有$ \* r& x) p, |5 D5 f% q% s
   OPC ALARM & EVENT 报警和事件
! t+ I- X* i! @1 U* H   OPC DX 服务器间数据交换) i- e. M2 s& B% A" I, _  [! F0 @
   OPC SECURITY 安全! m/ v# J0 z1 [2 D# ^6 y
   OPC HISTIRDATA 历史数据库5 h: o' H% X7 o, F5 Q, F
   OPC XML XML" r9 t) g! t& Q
   OPC .NET FOR .net
1 g1 T% P) q3 _1 D3 K5 ]% U  这些对于一种工控软件是比不可少的。6 A  J$ _; x4 J5 O( p
  ! N+ Y, N+ o9 o: u/ W% ]3 V
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。6 @: Y" x$ ?" y# i
  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。+ R+ h- h7 b+ B" y
  / n! ~5 {' k# N' M/ |3 B  g' l
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
9 Q6 P, C5 c% ?& y# @* u% O7 n  
5 [! Y3 F' ?! R( {1 T5 D3 S  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了
% c9 ^9 V! L. r1 |" `真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
( r# B: P5 J$ n& R书还是买来看好,提高的快。0 u2 R* O& ^! G" Z
% G: ]3 Y8 l% a, j0 @
[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
) V" z; X5 {+ D9 C5 w/ F$ Jhttp://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 )

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