QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢.
( C) z; A, i7 N/ h' k0 b$ K0 \5 p, k" V  o8 I
[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码; \  s$ A0 T2 g  g1 j4 A
CSDN 下载频道* Z8 f5 Q* e" q- A  _0 L

' u& ^6 X' z+ M7 z" `3 P7 rhttp://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)
, C& X# K( {3 r1 S$ ~% h- ~2 F* m0 ]% S
我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。
# ?+ C5 K5 c; m. I  c: ?  
) b" j9 R/ p1 w* x/ [" p6 g  第一天
6 @* t0 o- s- R* G  
# G! p1 X# y# ]  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
+ X) F$ ~. g) R' j4 q  opccomn_ps.dll) _% J- q0 ]. t4 Z# w# b( U% Q
  opcproxy.dll
/ l2 Z% Y+ Y) ~, W- {$ j0 o/ j  opcdaauto.dll
9 p) L) }! m* W6 K" w3 ~. P  OPCTrend.ocx
* e! w2 U- e* \9 V$ [; M  OPCBar.ocx
! ]% J5 L* P+ N+ z' h& N  R/ V/ A  OpcServer.exe 0 |: W3 L$ z7 b9 w, o, k* U
  OPCJDADemoServer.exe
; a9 r. [, [7 e; h: m, A1 k  : Y4 v0 M; o" j+ J
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。: T* }+ t1 g0 d7 V# w. ~
  后面两个是demo 服务器。. o3 ]" n# G/ n) ^# \/ _% o- r
  
, V1 ]4 Z9 q: F  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
' N. ?% {! ^  d) j: z  服务器。安装了(注册)。1 H. K+ h) J) [
  
  P& U6 e3 S% Y  k# A3 V3 {6 {! f  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,. p  \& W5 g$ A% E5 P9 N: @! _  t( \- b
  5 V! D& p  F" |' r) A# U
  点击连接服务器图标,立即出现了三个:9 B- N& v! G3 D1 O- k6 `
  OPCJ.SAMPLESERVER.1  Y! v7 D6 I3 Y3 q+ j8 g! E
  OPCJ.DADEMOSERVER.1
# v; [0 z$ n& _9 o( T5 G/ y  HEXATEC.PCDATA
# T/ ~0 i" v  n$ R& u6 D) ?  
3 e1 ~) b0 a/ b5 P: n' N7 v  第三个是opcconnect上download的计算机基本情况的简单程序。
7 L9 O7 s' g' h  @& V0 |  " C) R. w  ?7 u; `
  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这6 J' p/ _8 j0 f& W; W# m
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
9 Y/ o* M  X* U1 K/ N. ^" W  人敢学,也就没有市场。
8 j8 a" X1 a7 B/ [$ a   0 W* m1 c) x1 r( Z) e
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。+ T) Y' I& ~  ?: G3 L' ^" c
  第二日
" W& c; H9 m! A8 @7 ?8 O* |9 T' X  今天先看书。* i: f, B' c- U  K
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。' h# f6 x/ B4 q" ^1 q: N$ N
  # P! p: z9 }9 e& q4 H9 w* Y
  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。3 r" }+ j- U* T. y7 B
  
* z  h: y* N; M8 c- a4 @  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。: q: ]& Q3 ^/ U3 x1 N
  
$ ]/ L# q/ s  |# v' C  书上对OPC体系有描述,我画了个图。3 c; {# x$ o: A' b: j
  
( t1 I) \5 K! N: K' i: U% d; G4 h: r

0 P9 f. |2 F7 S9 @  a  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。4 x8 C% T4 {: @9 P9 ]6 U) Q
  " J2 ]4 J3 q9 P+ {& ~4 H% S4 N
  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。" Q  Y: `2 W/ Q, L* L
  0 u& h0 Y4 Q6 e5 w( C- c
  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。1 X) ~2 j& C$ ?
  
. Q+ i7 Q  j5 C* B8 C, C$ A  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
8 p: v6 [! G% m& }# w5 X  & M: {* t( c' k) V7 |& e9 q) H
  我在第一天中安装的几个DLL中:1 e8 Y! [3 w) S$ p
  OPCcomn_ps.dll 通用接口
: `3 l# n; s5 [/ C8 p  OPCdaAuto.dll 自动化接口
* R: h3 d7 b  v' d5 N  OPCProxy.dll PROXY-STUB1 y& }* m% C: z9 ~8 l6 d/ A
  3 M3 ?$ Z& {6 f& W& K- g* g
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。: S% S% r+ k# _2 D
  
0 X) o: o3 U% W. c) K  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。* {0 \  x' p# U, I. h0 Z6 p( m; e
  2 Q5 n6 ]( T: G
  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。, `2 O; Z+ p, X; }- }8 A0 D
  
2 \. W! N3 A8 ?  按照书上的顺序,先了解OPC的数据组织。我也画了图。! n  C8 O/ e; p" y
   : J" W9 S# J! |! c0 H  d" Y
& A, U3 f& t7 T3 ^" ~
9 |1 O; S0 b( ^0 }- a+ T9 o: m+ H

) I0 ?! `( s* l; @  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。
: Z7 x+ J5 C! V' P# E" p) _  
7 ~  v# a6 V% H- k  根据书的介绍,要访问标签,还有其他工作要做。6 C* t; f3 W! \' N6 v. J+ a
  我累了。明天再说。
4 q+ F+ y9 b# X7 q; z  7 f! ]9 d# s4 p3 |" N
  第三天! S- ~7 b( V/ l2 d5 m5 f5 p7 I. \
  昨天说到访问标签先要做些事。: u8 z  y) ?/ ~. i2 I- C
  
! b- u6 y+ w9 G  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。- m+ O+ d& M, u) l
  8 ~: w0 ~$ D0 x/ _6 L
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个+ x6 x* }3 _2 T  F( R' q
  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
! W( |2 I! i. V/ R9 W  - @. v2 t/ f* p$ h" Q+ D8 n
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。! [$ }; S2 t0 H# P/ o8 ?" ^) |
  直接运行,没问题,看到了数据的变化,决定看其原代码。2 J# }' ~: Y8 d  ~
  2 |" p0 U) m9 F4 N; q1 k  i8 Z
  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。4 J$ u; c5 \9 L2 p: n
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
( ~) l2 t: j6 e9 h  
1 _7 j0 }" t7 Z  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。2 d2 c1 Z" t: `4 F7 Q" k6 p
  - g. ]# ~0 K9 R2 Z2 I, F# _0 x
  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。: H- \( P( P9 n- l6 P0 _0 `9 x4 r
  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。, \; p% f3 ?+ ~( W- r2 _
  5 s2 c! y1 K2 W* S; G4 x, B
  我给自己留下了两个问题:
5 g6 D  y' M- N6 c6 F/ F   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。
: \% ]" |5 u4 p" O/ z   2÷如何访问ITEM,取得其数据等。
1 f* n# Q9 `- s9 ]6 t& U9 H  : o) n1 n/ ^& r0 L7 s! z
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
# f3 [; p1 [/ o5 d) q' m( b8 c( s  今天到此为止,
$ r6 d' I; U6 G7 x  休息3 X) y& a/ g+ V
  
8 s$ z/ H5 A* O" r! ?( O' L7 O/ ?  第四天7 O: c1 ?1 I! C, h  h: _$ u" O7 E
  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot
9 @6 ~; h6 c2 Y7 W% g" A  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。& R; M3 u  b+ J4 h8 h% x" `* w
  $ ?! }) m* ]. A0 n; R3 z
  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
- x  i' P( S9 x0 h$ b' M  9 r4 Z# K+ M3 ^& x7 x8 q
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
$ G) H: r# ?: ?; Q/ G  
' R) T& z5 s, `, u! X( ]  我添加一个组,在其下面建立标签集合,然后用:
5 F9 Q- r) Z7 T  I/ k  标签组的ADDITEM方法获得句柄。
, X. q% e. c) r- ]  用同步读方法就可以得到每个标签的数据。( k8 C- @# O9 [& k& r
  / M( L: ~; y+ d! j6 Y* o. Y
  我发现有问题。昨天我就发现有问题。
/ a# r2 v6 L! c+ N" g; f3 }3 l) b  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。) c( W" ]; W5 w; q/ G7 U
  2 l1 t* I1 ~7 F/ z& F3 F5 W
  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况
$ B% O* t3 n$ M4 E" g  bch1(树枝)5 d( ?3 g6 J+ x2 w3 ]. w5 p7 E
  tag11(叶子)
: k4 s& E4 c4 ~- w+ s4 a6 s  tag12 (叶子)9 M5 B1 ^# V/ x" {! A. C
  bch2
2 W5 b5 F- [; Q% g! Q3 }  tag21 (叶子)
8 J' x- s" [1 V. R2 b% m/ Q  bch22 (树枝)
# u- V3 l  m8 o: x   tag221 (叶子)
. b! x7 P) _6 D1 k1 P9 ^   tag222 (叶子)" k. u$ ?9 S& v2 ]/ p5 h
  
) X& I0 J$ k/ _' f( R/ ^4 i) L5 d  6 T! }( v) N3 v6 y6 m$ `' c
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的
6 V' N% f) u+ G: `  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag2225 A4 G$ d( y2 `+ x+ C
  应该用OPCSERVERBROWSER的GetItemId()获得。
: C8 b8 ]& n% {5 |9 J  
( t8 E% h6 }0 R  修改程序,OK。
) x% d7 ?4 X( @0 v7 v  + m9 ^  V3 d. k7 \. |
  还有什么问题,本机服务器的枚举。
$ i& ?5 t& X, {$ j2 l2 F: K& o  明天再说吧。ZZZzzz
6 p9 A2 x4 t5 C  ) B. W  {( E0 r0 p9 b7 O) P, O  F
  第五天3 E' x$ |* d3 V6 j
  
, C$ S) M) e* p1 w  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。
  R" y; B6 p7 P% |# I+ `  
& t& L, s$ b4 d2 k2 V  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。6 R. c5 Y# Y( D0 p( p
  我选择了一个网站:
! Z1 D8 e1 U' W% G* l: j  www.kepware.com
2 e+ F! E) J1 e& U" {, u  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......" Q0 q+ C, M8 U- s0 z
  . w+ T/ |# A5 p- F
  枚举OPCServer的法子:
# y+ {' z& C! N. H; y  Dim ServerList as Variant
$ C# G' A2 g4 V0 z; l+ v) m- W  Dim i as Integer  t1 g' O! |# r6 |1 |
  Serverlist=anOPCServer.getOPcServer(node)
8 N( p& o) e2 f' u  List1.clear  M  {/ P$ U+ g, N
  FOR i=lbound(Serverlist) to ubound(Serverlist), }; O3 A- z* T, |' J6 ]3 l
   List1.additem serverlist(i)
5 {5 h+ |! K- a0 Q* z  NEXT I8 m8 Y  c( L& ^! ]3 j& y2 v8 J
  
2 g# o& v' T) E  W  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。- E3 [  g  z/ ?: C
  找到了枚举服务器的办法,在单机上成功。
1 H4 j, m+ M2 r* o1 `  其实《入门》也提供了一个DOC文档,是OPC提供的:  A! I( X  S+ d2 u! M
  Data Access Automation Interface Standard Version 2.02, `. R! x, Q1 U( p3 |
  3 D: |6 W2 {) o. z8 ?
  是一个必须的手册,只是有一些错误。错误总是难免的。
: K7 J: K+ f2 |; z7 |' d' Z  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。# v2 S1 M1 Z9 Q5 x
  * t: p$ _. p  U2 b: `
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。* X! M3 a* Q1 F3 C+ i/ Z
  2 u3 v3 C( Z- K1 ^6 m% ^- D
  第六天
# M$ c  b% q2 k' V( }  
0 _5 T( b3 N8 E5 \, D7 X* ^  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
& q' q3 C# e1 g9 r2 [( T  
) z" l9 q: k+ U  I7 S  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
* R4 [/ B* S# `, X! D; y( M. _& E  
! V) \; E& B  D6 y  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。6 H* D* \3 |; v! o- l2 x! `# d
  
9 j* W- U! j4 N6 p/ ^* {  下午休息。. H) g/ i  ]$ W1 ^2 \7 j
  
: S& U' w5 X) [7 y) I' g6 P  第七天
  f! T' D" _- z( G5 [  
% M0 W/ m2 _6 L1 Y. U$ B  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
. W6 e2 J7 J* @9 \& c- M3 _  
4 _8 h1 G* [/ Y) O% \' \1 h  我想起了第一天安装的那些DLL,还要么。试一下! _# A, J1 L- e+ F
  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。' U. y* y4 q) b' a. [
  OPCcom_pas.dll 通用接口" U& [7 F, P  F) _
  OPCAutoda.dll 自动化接口
' k+ ?  q. Q" m8 d% ^! W1 A  OPCProxy.dll PROXY-STUB5 c& V/ D' C: p: F1 v0 m
  7 [- R; `. Q7 L3 y8 ~
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。6 p! i4 @2 F5 A+ k4 c& w$ X
  ( v$ [& B6 q' i! C- k% u5 p
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。
" X5 \- b6 }7 \2 U0 Q' q4 e" j  3 A2 H2 C: ~7 f# J
  后记( N" d" D' ~+ W4 d& e. g: c
  这是一次入门的学习,本身没有什么。我却有些感想。  n( u  z- C5 H% D
  $ i% \: P8 h1 A; L% ]' C" s$ ]
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有
9 G) K0 e+ w6 I/ w2 c( K4 c   OPC ALARM & EVENT 报警和事件
" a! k2 [1 f. `, }8 ~   OPC DX 服务器间数据交换' g  |" I1 {0 ]9 G1 q1 i& o
   OPC SECURITY 安全/ F8 w. L: W  r  n" K
   OPC HISTIRDATA 历史数据库
! p2 J: |. b6 `8 a5 J9 k7 C* [   OPC XML XML
4 Q9 X8 t( {& {/ B, U4 m   OPC .NET FOR .net
7 I8 h$ G; t& R2 p! F, P4 P  这些对于一种工控软件是比不可少的。- N- \" h+ ]4 _6 e
  1 X8 D! E# `: U: d' f( f1 |& ~' e: T2 S
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
. u, f4 r, a' _  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
& N) Y5 O5 q6 R8 `$ L+ x  
6 n; u3 p7 q' ^* M% l, ~  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。6 ~2 x1 e4 u7 V7 k8 S( W2 h
  / P3 F3 o1 L8 }4 p! {
  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了2 Y0 Z: @( H& ^! `; Y
真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
; G9 r/ J% A! w. Q& p4 v1 G书还是买来看好,提高的快。
! l/ Y% B5 C9 s: Q# x
3 M+ q0 i$ ^( _, F[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
# A7 c$ b& L+ v( e$ Fhttp://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 )

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