QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
3天前
查看: 5946|回复: 8
收起左侧

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢., R, G1 g" r! o) }# c
8 r' B+ k; u( t( K8 F$ T% f# d
[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码  K. Q" z+ @% d, ?. e& |3 s
CSDN 下载频道" ]! o0 W3 q! O! @5 c

$ D: U( I% G$ \0 rhttp://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~)
& @# {' ?) j% I, S( P, ^/ x
6 T$ ^" o4 H* T/ T2 a& |; ?我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。
& `2 _+ F0 U% {) O  ; K; [. e/ d, a
  第一天
3 V- Z2 h' \& e: _/ s2 F8 c; a; v- P  
) I# h: ~4 F* p- H0 h  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
( o  c8 m+ b; Q0 f* g/ o* L  opccomn_ps.dll, b4 M) |' c6 H" s8 }& X6 N8 _
  opcproxy.dll
! G. C7 X" V3 Y0 y1 q  l( I. h( f" b  opcdaauto.dll9 b6 l# R" o+ N/ T7 W# S+ V2 i" i0 b
  OPCTrend.ocx+ b) t3 s6 O& r4 N" Z
  OPCBar.ocx
) R! r( z2 s: f5 u0 \  OpcServer.exe 4 D2 U) ^7 }9 V0 i" v
  OPCJDADemoServer.exe
3 ^9 O; N8 N; W. ]; e- T  4 U$ a  c/ X% o; P  @
  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。# T/ l' C* @  |8 H- R
  后面两个是demo 服务器。
; B" w& ^) O0 ^  o  6 J- z# Y7 a. Q' t8 @1 U* _
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free) b  d" ^& B- P
  服务器。安装了(注册)。/ }3 n; P$ u( ~: i2 J9 b/ r) L& Q
  ) y, C" Z  Z/ @* r9 N& U+ c! E* @* o$ V
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,
0 }( U8 y9 S  G5 J0 O1 Z$ K  1 O1 p8 C2 h0 @" R- @
  点击连接服务器图标,立即出现了三个:; j. v4 U# F! F$ V& t
  OPCJ.SAMPLESERVER.1' J+ ]0 n( |+ v. r: v
  OPCJ.DADEMOSERVER.1$ {) p/ r5 u: \: y. H
  HEXATEC.PCDATA+ X. T3 L: X. u1 b
  
6 T. ~9 N' p& r  第三个是opcconnect上download的计算机基本情况的简单程序。" h3 D6 y# k' Z
  
  [% U' p* v% M- n& g' D  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这& I2 u5 R# B$ q
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少0 O9 O3 a2 ?( a
  人敢学,也就没有市场。
' W) F/ M, ^3 c: ?5 g- f6 I   # F. T  N6 B% k9 u9 E) v: L
  有一段时间没用VB了,先热了热身,看了自己过去编过的code。
9 K' u* w/ _9 x4 F2 A  第二日( b% Z) D+ F4 I$ f; O/ D
  今天先看书。9 f5 Z/ M, |: k9 S
  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。- S6 D5 b/ X* M/ a; ?, S& l1 V
  
% ^9 G7 |; S9 u+ b  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。! c" q* `- ^1 i& X& b9 J
  " T$ o% o: g4 r5 V2 x: p9 f
  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。
- P, n( ~8 h" b$ c) H+ A    M' K- C* I" P" O$ l: Y/ u7 t; T
  书上对OPC体系有描述,我画了个图。
% a: ~' I, ~& U5 K* Z  K  
" |. @% z5 D  S, [
) O: F, S/ C4 s" z% J: U6 Q; Z* j, t; K; @6 Y9 v6 \
  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
3 m  w" `- q: R2 ^  H& u  % A3 \; D3 `' Z$ ~
  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
0 X, E6 a7 @+ c! g' s  
. ~) p, z& }! H, s  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。9 a1 P0 N% q8 A7 c1 z
  
' T5 f9 e2 `  O- y8 w  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。* \/ x  @% B6 Y" f2 W
  2 @0 K7 W) F: H& p+ `: q, Q
  我在第一天中安装的几个DLL中:8 d* c$ j- P7 E2 z! b( I
  OPCcomn_ps.dll 通用接口6 q2 w; K" z8 h, Y! U$ b( g7 M+ u
  OPCdaAuto.dll 自动化接口0 R: f2 N& b8 t6 @
  OPCProxy.dll PROXY-STUB8 [! s' W: u. t1 c, l" C
    s5 h' |6 @4 U& g7 h6 J/ l
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。" R- q  _& ?* u! ~2 z
  % J8 ^" U, G7 V! H, |9 Q
  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
8 `8 S/ @7 Z5 o% l7 X' P1 Q2 A- X  ( ^; b0 e/ ^  Y8 B' c) E; x2 a
  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。  \2 u. |3 x1 \8 k. K2 a
  # L  t+ Z" K; [
  按照书上的顺序,先了解OPC的数据组织。我也画了图。
% f/ N) C' u2 L   / ]" D2 k: H3 c: ^, ?* Z: j

# s2 D* _1 B8 E' @& f2 K! g# N% N: r  V3 U' Y

/ x1 C3 I7 c9 p4 a6 j2 c* b  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。
8 J$ Z/ m/ {: ?  j1 G7 t/ {  
0 j0 ]; J0 F" }9 O9 ]7 M  根据书的介绍,要访问标签,还有其他工作要做。
7 y4 z! G1 B6 P" J  我累了。明天再说。
/ q: }* g" J) [2 }  
/ c$ ^+ ?8 h. I- @7 S& H$ r  第三天
/ ~% B* O: Y7 g& n. b  K7 J  昨天说到访问标签先要做些事。  g! ^, t2 H( G
  0 P: h" c+ g1 ~, _5 I: }+ t. g' U$ u
  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。0 R7 B9 V1 b/ ]" `6 e6 A4 y3 M
  ' ]' I- _3 t  M7 @2 E# [3 m
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
( D/ k1 x; t7 N, T7 j  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。% i8 J& |" T, o) t0 s8 H$ Y& a! K
  - M5 u. Q$ F# c
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。
( d2 @& O5 k, H; f" t0 Q0 J  直接运行,没问题,看到了数据的变化,决定看其原代码。
+ S6 v7 Q4 c/ |  
% f  A" H( m0 c$ N' O. m$ ^$ F  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。
4 X/ c% X6 K, U" B: Z2 a) B  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
, o& U4 N! I- J. B4 `( V  . B0 r" p$ r+ R* L1 s, y
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。& T3 z& L$ H+ o
  / h3 f  d  D8 M( Z6 R! r; X0 E
  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
1 I* U1 h9 c) ^/ y5 I8 Q  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
# D& [3 q5 ]/ K; C: d' h  
4 P6 E+ u0 e- o) o  我给自己留下了两个问题:( ~. I& h% c) A) H* x( d+ P4 B" a" s
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。
" a, U3 A  Y1 L. r- L! O   2÷如何访问ITEM,取得其数据等。
% c+ G: U  P1 n! y$ z, M  / Z- k/ k0 O2 ]& `9 c4 T
  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。" f: |, T1 Y4 ?8 X
  今天到此为止,
- r1 [) W! p) j& b* T  休息
9 F6 N( C; V0 N4 }% T7 n, p  
1 m% L! x# Q0 z, G6 y" x7 g  第四天! w& u1 i, l1 x" c) z
  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot5 G  p2 }) t& E
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。1 Z2 ^5 O/ C  M+ b1 P
  
/ d: f7 U6 J4 R* d0 G  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。8 s) ?- g) R8 ^0 S: `: k) Q
  . a2 C! v, p6 @6 E
  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
4 t0 v: O9 u/ J, ^& A  3 J8 b) Z, P! p5 r0 E
  我添加一个组,在其下面建立标签集合,然后用:5 B7 ^. I! S+ O" `
  标签组的ADDITEM方法获得句柄。
8 _* ^* v0 r/ x( T7 J  用同步读方法就可以得到每个标签的数据。, A1 C: S0 ]" t2 J" _3 _
  # t4 f- p$ z; q0 j6 P
  我发现有问题。昨天我就发现有问题。, a# v; X4 s4 d- w% \9 @  M7 q
  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。1 e1 L: q3 J: ?' ?- }
  % f- E! C9 C0 m3 }
  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况
& M; I9 H% b3 c( n/ b) B  bch1(树枝)) V" @& C- z: o% E! S. `/ V( {
  tag11(叶子)
4 r- E" }! ?# M, [  tag12 (叶子)  V/ e1 r3 E  i2 b2 R
  bch2. O. q, d$ O. J( Y) F: k! F5 ^; X
  tag21 (叶子). i" a  S' t/ l) l
  bch22 (树枝)  q- K; L0 M' d8 y; b
   tag221 (叶子)
% b* h2 r. v  p# B" s   tag222 (叶子)
/ G5 M; i2 n7 ]* L) U  " {; ?% ]  X! U8 O6 ?
  
. J+ r8 h' Q9 r1 _  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的/ a: `2 {) _( z. ]3 R; N/ F& P
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222
, k" g/ \& H, P  应该用OPCSERVERBROWSER的GetItemId()获得。
6 i( ^- F  d- o( |0 T  
4 H  A8 E( ^4 F3 G# V; Y  修改程序,OK。
/ s# ~9 g. ?0 z; U& Z5 Z  
0 i. @0 [4 V" w  还有什么问题,本机服务器的枚举。# Q/ s+ I, P" ], e* W+ ?+ r) a
  明天再说吧。ZZZzzz
! u* X' Q; x" f3 S& K* u6 A# w& C  R# E  9 z( o9 T5 u- h, H. P8 M6 X
  第五天9 Q" R9 W! u( C+ M
  ( o* a9 O4 V" M; @
  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。
# c3 o6 b! P5 k3 b: d9 A0 \. d  
+ @2 W* b: Z# n. ~  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。# f5 `" q, f! Q. x% w5 A1 H: g7 K
  我选择了一个网站:
; h0 I2 u( w. `7 R4 M6 I" O: M  www.kepware.com
% Q7 i5 ~' Z; S# A0 a; r2 p1 N  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......, k. I' R& T) q) L
  
7 l1 B, L+ y( P) P3 m+ Q  枚举OPCServer的法子:* S* W) c$ F/ ~) K0 `4 A  Q( Z+ L
  Dim ServerList as Variant& @  N; E9 [' S" r+ \" j7 R
  Dim i as Integer
  K% G; D# ?- b2 l+ b  o' v; ?- r  Serverlist=anOPCServer.getOPcServer(node)- h; s$ `/ Q- W1 t! W
  List1.clear
: V' i2 b# K$ A( C: A9 A  FOR i=lbound(Serverlist) to ubound(Serverlist)
9 |# l. a) v1 e) X5 t$ v* Y: M0 M   List1.additem serverlist(i)
1 @( r; P9 a% C" ]0 S+ |7 S% c  NEXT I3 y6 j" u* I, S8 ?
  - N1 }( z/ P* E. q, H2 Q
  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。/ L& j5 k8 a+ ~; t
  找到了枚举服务器的办法,在单机上成功。2 t+ C/ r2 {! J9 ~, a: B* N
  其实《入门》也提供了一个DOC文档,是OPC提供的:
1 U3 E/ r3 F' h3 A, [  Data Access Automation Interface Standard Version 2.02' g# }8 u: R6 ~4 U
  
. {, x+ U$ T/ m" ]- x- q  是一个必须的手册,只是有一些错误。错误总是难免的。1 w* i% {# t! ^. ^0 {2 t2 X
  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。& e, I5 Z8 d% v
  * f# a6 n1 L2 a6 S  w( M: Y6 B
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。
2 ]$ I3 i( \/ L1 d6 j+ {- `+ p2 _  9 C$ z  a1 W$ L  k" [
  第六天9 d* s; ?; S+ r& l3 |& P
  
% {0 h$ P% y2 V+ q, E7 A  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。
2 P- C" N, Q4 A, \9 B# s  6 J% o# D: t+ k7 l% C7 A8 c2 N7 W
  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。
9 b0 S9 L6 x/ G* ^- B; k+ k  
% u9 U6 L1 O! i3 a  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。
8 T$ f+ p2 V% M9 c* D  
: J6 ~2 f& Z% E' `* a  下午休息。0 Y; M4 E+ W+ p* z# K* K1 }
  
& G  s6 Y* E! [9 ?. G8 Q. [  第七天
# P. w, k% v. h4 A' y- S9 r  7 X# b) p3 {( Z; _: @
  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。
9 I; _; j: ?" _* l  ; ^2 k( z7 m8 X/ T8 }7 K2 {
  我想起了第一天安装的那些DLL,还要么。试一下
. I) j/ Z, [. L. C0 ~% O3 p1 K  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。
: D1 k  H* X1 I7 q  OPCcom_pas.dll 通用接口3 }0 ?+ e" V' G; _9 {# y6 o5 M; T2 P
  OPCAutoda.dll 自动化接口, p; m/ C7 W6 e
  OPCProxy.dll PROXY-STUB
. ?8 \% p% \) u$ f1 A  0 W5 U  ?, {9 h3 ?: A
  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。/ {- m8 Z' o& c- U6 H! [
  & R  k) y: P/ N3 H
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。# J7 ]( X* E$ y
  & i2 ^; ~/ l3 z' [
  后记+ K# b6 }) N- k1 f" K5 P. A3 U
  这是一次入门的学习,本身没有什么。我却有些感想。8 X+ s8 n* y5 c* G
  
" X- S5 m" @. ]: W  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有
' b5 ?$ |) Z7 H7 y9 [   OPC ALARM & EVENT 报警和事件
5 C4 y& j) }; h# [3 |  k3 a   OPC DX 服务器间数据交换
6 c3 C2 I1 e% B. V   OPC SECURITY 安全
2 b2 |1 M' C+ d8 i) A, ?   OPC HISTIRDATA 历史数据库$ V+ k+ h* g. y
   OPC XML XML; c. q$ @0 F, X: [/ K1 [* Z
   OPC .NET FOR .net7 f# V; y+ T6 w5 U7 \4 y
  这些对于一种工控软件是比不可少的。, ~9 g- D$ O. ~* a0 @' Z
  % z6 q5 E. @2 `, U5 [; R8 z
  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。! H* J1 O, q  i4 J. D0 q, z( ^
  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
; E$ P3 |8 L( G  : {; H' [( x, p# _0 T" K4 h2 _
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。
2 f6 Q6 v2 x# U9 p! e; Z6 j" E3 k  
4 F! f9 s1 [- t4 [, Z  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了% ]. D8 |; h+ }3 b
真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
2 O5 q) H( D5 E' ?书还是买来看好,提高的快。
" }8 g9 ]1 ~: I/ q9 w% c) A! d1 `9 ~% I/ ]9 H# k1 x. ^
[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
. r, [5 t  e/ H- N: f  D( `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 )

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