QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 6099|回复: 8
收起左侧

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.! [5 i: X% _3 E% e9 s

. \3 H' w1 [+ D) f[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码
+ f4 d( N2 A- ?' ?" |* J4 | CSDN 下载频道
9 K& k) c' D: V" v* U2 P, W" l9 P' W3 C. M+ [9 M
http://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)8 j1 R8 r7 |5 ^* n4 D  V. g2 Q; I7 ]

/ t* _% u7 [6 O( z# P) q我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。, O5 H2 Z9 H# \
  
( v8 |7 x* X' p/ V" p9 ~; C8 K  第一天4 m6 C! A* W, {: x1 i) X
  2 t6 r$ t1 I1 F5 D5 _
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。  a2 F6 Y. O* U7 @' Z
  opccomn_ps.dll/ Y8 r3 c/ x. W
  opcproxy.dll5 d, E3 R9 }/ l7 ?
  opcdaauto.dll
* U  }3 ~5 Q' u* y; F$ d2 r/ k2 c2 u1 H  OPCTrend.ocx# ^* D$ z  f" l4 [+ o
  OPCBar.ocx
2 z# {- ~. g3 n8 r: V  OpcServer.exe + t! v7 l- ?. Z. t
  OPCJDADemoServer.exe
) O( G, R5 c  d8 a2 I  % y  c; {" f" H2 \
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。
" F6 @$ T* n' O( N0 }2 G* A  后面两个是demo 服务器。
7 K: S: J' J- w& o% \  # w5 c9 @' E1 j5 c& d6 m1 l" ~. X
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free" e1 a* y6 |: |3 P+ m7 g
  服务器。安装了(注册)。
/ l& k# k+ ^2 L: U) ]1 ~* `  
0 x1 w4 F% ~! O# ~, L  l4 z2 y) l  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,+ r# H1 P; Z- @9 t$ p+ H  l9 F* c5 |  h, K6 y
  
8 d! f( A! w  S8 t8 {  点击连接服务器图标,立即出现了三个:8 W+ B# ?" o9 }+ g7 T' O/ `6 R; `
  OPCJ.SAMPLESERVER.1: S* n' p1 Z7 e! f7 M. o5 F
  OPCJ.DADEMOSERVER.1
6 r0 J- R' E& n8 F& \4 i  HEXATEC.PCDATA* H/ X/ V! u  B) w6 J
  
$ X5 e+ O! Y- |1 c) j. C% l9 G& E! x  第三个是opcconnect上download的计算机基本情况的简单程序。
+ b) a3 Y9 |' Q- r& `  0 {$ o- z7 {0 r1 i) {
  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这
% w1 a+ [" n4 @5 U6 n  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
" ^. F' G& ^2 c7 X7 q* `! \/ K* [  人敢学,也就没有市场。
/ Y) x5 D6 a+ k* \& M2 f  
. R+ m8 k7 Q; Y: h1 o1 e& [  有一段时间没用VB了,先热了热身,看了自己过去编过的code。
) R( J# ]. t- z: R  第二日
" j  t8 O0 Y0 _# p/ z  今天先看书。# M. F' x1 t5 R- _* M  r
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。
$ p% f6 D3 Q/ t6 H; R( Z# ]  / e) G% G  x6 A. X+ \
  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
2 x) M% Q& ~$ k) @* [) Q2 Q" }; m* W  
) o) E& p- y2 ~; T6 u/ s% j9 B  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。
) {/ g- G; U$ g3 o2 z  7 }" p8 R) U+ ~  s- ~
  书上对OPC体系有描述,我画了个图。- V+ |9 O6 y( i6 t8 |
  
/ p( c  p. J% I" R, m& U) ~. T! S1 \/ e( n
4 r* N( G5 P1 P( E$ j
  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。: [0 i& E% e6 P
  : C- k, V3 h! o6 Z; Y5 V9 n
  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
6 @6 k% e0 T: F( r, N# z  1 w) T9 T( L& t% \; y% K6 p  b
  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。' s+ O+ T' f/ P. B" }  d
  8 ~. ^5 [+ {1 O1 X* s. y5 o
  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
1 G( \1 L' x+ y8 O  
5 ?3 I0 `- q  q9 n1 `/ n. s  我在第一天中安装的几个DLL中:
5 N0 ~) T1 T4 `0 }  OPCcomn_ps.dll 通用接口% L- j( O$ ]5 N
  OPCdaAuto.dll 自动化接口/ M& f2 F7 h4 n' I, j1 h2 o% r
  OPCProxy.dll PROXY-STUB
0 J2 c2 K$ n; t% E" B& ~  9 Y6 I" L! d" ~! X1 R( F
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
% r5 ]; Z& r2 O7 l  , {4 S  d3 U# Y: W0 J! V& ^
  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。+ K7 }' _! K  ~( E4 h. u
  
* ~9 x/ e6 X, {0 \6 Z# w& n  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。5 f9 b0 l4 p, h
  # [' S" M( T" F* @  ]( T
  按照书上的顺序,先了解OPC的数据组织。我也画了图。, e* ?# T# O6 M/ F
   * A7 J' u" k# _! n; V
3 `: o) ?2 M. d/ k

$ r  i3 \, {2 ?6 P1 v6 k! k: E/ U0 w
" L5 ]: [4 L" `+ L  `4 x  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。
& d& @# j+ _5 o' M0 _3 ?  
+ P# x- @' c; ?: B( S; K7 q7 X  根据书的介绍,要访问标签,还有其他工作要做。! [% O3 V2 V6 [/ r  z
  我累了。明天再说。
: a. A5 [! P% g' d  ]6 J  : a) D$ y  a/ K+ v' G0 i% \, I
  第三天/ U# e  ^5 h, x4 ~8 }; L. q
  昨天说到访问标签先要做些事。
: s1 u  Z. T+ I: K) {- G* Y* J  
; H& H, H( W1 P& [  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。
! \8 Z) p' X) g! }6 L  
6 f4 \3 Q4 p7 C/ z1 e! g, L# F  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
* k) l1 t! ]+ x  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
4 b& z+ H, x, C1 `  w+ i; S  1 G9 ^% w/ e+ o4 v
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
, Y7 ?" I( b0 ]  a  直接运行,没问题,看到了数据的变化,决定看其原代码。! e1 A, M, ~- N% b5 ~" m
  
5 S# ]$ S& C0 z  R6 W  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。) i1 S  T; F+ Y% M, P" h9 ^$ Z
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
- f& q* H- G7 [9 r$ I9 |  
! m' }, |2 @+ c, U4 ~  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。- L( t6 l$ R2 d" m4 {1 T0 E3 I' [3 ~
  
/ F! e- u: K8 N- _0 d4 i  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
3 S& t. ?5 g0 z$ g6 g1 {  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
+ _  d. O# _# T: E  
# @0 _9 v2 Q+ p8 n0 ~  我给自己留下了两个问题:. Q) u* H. O7 n
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。% N2 b% j/ I) _1 n( {9 W3 y
   2÷如何访问ITEM,取得其数据等。
  k6 U/ }+ X% y$ b8 ^/ i  3 l6 w8 Q& P! e  w% Q* w3 m
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
; s% r+ {" Y% \+ l  今天到此为止,$ O" v4 t1 K4 _; E% |2 d$ u
  休息
, H. @& }$ J) g  l9 s6 w, y5 {$ a  
. Q: g- w% h2 D4 k9 E2 M  第四天4 d" z: W- R* `* ?
  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot% O2 ?5 {; k, o/ [+ ~& m# b+ `
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。2 J7 x/ F$ g1 a8 ]" C* ?
  
# K+ j% d6 y7 K3 Z% b  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。4 `+ c5 S' _4 j- @0 m# ?5 {5 v3 G
  6 H, x# k$ m# D. W, {
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。3 M4 h% Y. Z# i# y  }
  ! i* C" h% O5 h/ `9 A
  我添加一个组,在其下面建立标签集合,然后用:
, Z; G1 K! H, p1 e% g  标签组的ADDITEM方法获得句柄。7 D: h% I  d& [' J6 O. a
  用同步读方法就可以得到每个标签的数据。1 w0 I% s9 S6 C# Z1 i$ {% Y
    p6 X7 _. {7 r( y) h: c
  我发现有问题。昨天我就发现有问题。
5 S  D$ F) c5 f/ M  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。
; D3 S, S3 M8 z" s/ s$ z2 [0 I  
, B0 u( P- o/ d4 O  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况
5 Q' V8 U; e, M! a- S! d/ k; p  bch1(树枝)
/ ?- ~% w) i$ R6 D2 X8 R  tag11(叶子)
$ d5 b5 m2 f, E* {  g5 ]  tag12 (叶子)# I& d4 k0 S' j, e) ~
  bch2
( u# k6 E5 o8 Q2 M# P  tag21 (叶子)
1 J' I* A. J6 g: `5 P1 i* [  bch22 (树枝)# B- ^( a; D" E) u
   tag221 (叶子)' m& l2 J7 _$ q: ~5 s; R
   tag222 (叶子)
( G2 U1 H8 y" R; y% b+ x  ! h* t2 @7 y& Q% X
  " g$ B6 x: B7 Z0 D. ^
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的( `, a: Z, r) C% {7 z
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222* S8 f1 b# }  Q2 ]
  应该用OPCSERVERBROWSER的GetItemId()获得。  G. B- X9 P$ f7 D3 N& I3 F; m0 I( A
  0 x6 s& r- }* w. V
  修改程序,OK。% O6 k3 E5 \2 `: X! o8 F8 n  r4 p
  1 @. d! b# \. Y2 E
  还有什么问题,本机服务器的枚举。
0 k* c/ m! r* @8 A3 o* \  \6 h: Y2 E  明天再说吧。ZZZzzz( w) t% q0 @9 Q2 D+ W  f
  5 C5 R: A* i6 Y) ]0 s
  第五天% M# k0 Q& ]8 s/ B4 ]
  
. A% f0 K* [$ X$ B) f; _  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。% _  T4 f, N/ V/ P! [  U
  
5 f3 ?  e% U5 G8 B9 Q6 s  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。
" G1 |7 n: m) U: Y0 ~- Z  我选择了一个网站:- u4 x: h/ o9 W6 D
  www.kepware.com
1 }# X) l9 c# [# y9 w  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......- L* O9 n* J3 J' c5 |' e4 ?( c8 `1 q
  
' r! c9 ?: M5 C" w8 r  枚举OPCServer的法子:
5 n% [/ I, s+ W" ]* P  Dim ServerList as Variant
1 ]2 h% O. n7 q; B* D  Dim i as Integer8 m' i6 S9 A% g  }$ y
  Serverlist=anOPCServer.getOPcServer(node)
, p0 W. d* c9 i8 w. p  List1.clear
" F  J; M' m- @. L& Q, T  FOR i=lbound(Serverlist) to ubound(Serverlist): n7 G) M, I4 `8 q5 K. U; i, C2 U
   List1.additem serverlist(i)
5 [4 n. ~4 P9 Q: v- \' y. p# ]  NEXT I4 _4 ?% N; v4 Z, T
  
2 C  G: g! G/ U4 L& I2 x8 r  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。7 y  J- k) [; p8 e
  找到了枚举服务器的办法,在单机上成功。
9 t6 M6 T4 E3 @( Q* r+ f5 [  其实《入门》也提供了一个DOC文档,是OPC提供的:
2 V0 `& n7 `& X4 r4 O6 i  Data Access Automation Interface Standard Version 2.02
9 [; g+ V2 l$ n8 t7 T  \  9 s  v8 b/ T6 F& i, k0 k% M; m, G8 [4 a
  是一个必须的手册,只是有一些错误。错误总是难免的。
" z7 W5 `% G6 _& d7 l$ n( y6 p  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
) s+ |" x- S4 \5 W( {/ Q    U/ Y, F! y5 Y1 ~# {
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。* V7 h0 a( S0 e8 j% C8 j) r
  , M) s. C4 t9 B; J% {$ Y( L
  第六天6 j0 |. C9 Z' b4 d* i1 \
  ( M/ d4 c( g  v5 N% F) z4 o% Q" y6 ~3 o
  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。1 F9 ]  B% ?: A6 Q; \
  3 e3 i) D  A+ X) ?- t
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。# y7 c' ^  h: m: f
  
" o  l/ W( m* w9 A; ~  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。! ~+ @, R0 f& x3 h
  2 Z' O/ M! ]7 M6 e
  下午休息。* k8 }- T- g+ M6 u- O* C1 c
  
4 e- c2 a8 Y% \4 M! c, e1 H4 |% p9 z. I  第七天) p. X" b( |8 p# W8 r
  3 H* Q& m  u" E/ X- u) Q: W
  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
( U. R; P9 g+ p$ |* ?  
: ~; c2 s7 o, K  我想起了第一天安装的那些DLL,还要么。试一下
& i' E9 P+ A5 r. J7 x. x  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。& d4 f8 L& t4 k/ w. n3 N4 E6 q
  OPCcom_pas.dll 通用接口
/ I0 ]& l4 N3 N2 X. ]  OPCAutoda.dll 自动化接口
8 E+ J7 l6 K" H$ S! e  OPCProxy.dll PROXY-STUB  [: P* {; q; q$ t7 ?% S4 c
  
& P  r/ T3 m0 D( M9 w) P9 F  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。
  A1 f: P3 w) f$ d8 D0 ]% `  
$ }8 d2 r6 c' o- ]' D, n4 [  r  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。) Q4 A9 g& \  Q! n4 I0 j6 h& C
  
4 _, ?1 ~7 T) Z* a7 P  后记+ I# Z- t( s5 d& X
  这是一次入门的学习,本身没有什么。我却有些感想。$ Y& m7 j! E8 S% b. U+ i
  ! v. u* B9 {. x# H# N& T( r; J6 T
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有
( [/ R( G  j5 O) N# m   OPC ALARM & EVENT 报警和事件
6 n- g2 N' w( T4 E# b$ h& s8 r4 B8 z   OPC DX 服务器间数据交换
5 c- m' ?, Z: N9 z# G" ?* D9 T   OPC SECURITY 安全
4 w0 ]7 N+ B- E% k   OPC HISTIRDATA 历史数据库+ B7 ]$ s" E- D" P5 K
   OPC XML XML9 m6 n$ X# Z' O( u! s# ^+ ~. ^$ y
   OPC .NET FOR .net
5 @% y, A. B- y' m8 t, [  这些对于一种工控软件是比不可少的。
. i6 j: {4 K5 l6 n7 B  l  , @. v) @) b7 X8 j& K, M
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。; c/ v1 V+ L7 q* @. G: }
  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
6 M2 i& v- }! Q. \: P( l% D  Y  2 f! N* _) W2 Z4 K  o. ~7 D3 H
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
  N# ?, @- I: P  X  ; H5 Z) l- s. R: v% b( K4 K
  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了
. t- b, t. y# T6 m% W! Z真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
- `; w) \7 r$ _2 m! s书还是买来看好,提高的快。8 z0 b7 t* U& g) ]; J+ M" S
  c3 a! {) [! ~1 {& |( a. {% }
[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
" R7 F# p0 j, z" _8 g3 k$ thttp://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 )

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