QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
谁有<<OPC应用程序入门>>, 请上传, 谢谢." e( U7 d- H# R$ Q" L5 k

' }; _9 O+ F; B/ J* k. A5 q1 \$ X) I[ 本帖最后由 zhous_ch 于 2008-5-31 10:21 编辑 ]
发表于 2008-5-31 20:17:38 | 显示全部楼层 来自: 中国陕西西安
OPC应用程序入门源代码/ t6 S  [6 z5 C3 I* E3 m2 M
CSDN 下载频道& x2 H9 `. e$ R2 @5 G# [  s

8 I8 x1 C" B( w7 Z. r% Z. Qhttp://download.csdn.net/source/330819
 楼主| 发表于 2008-6-1 11:24:23 | 显示全部楼层 来自: 加拿大
先生你有<<OPC应用程序入门>>书吗?
发表于 2008-8-1 16:28:18 | 显示全部楼层 来自: 中国河南新乡
转载   (飘在北京的云~~), k0 ]& g. W9 {. k  D
. w7 g' e; R1 I1 L. J
我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。6 R5 F6 P  N$ P$ }2 k
  
% R3 A; ]6 z7 [) }3 Z, `  第一天& Z  J# i! I$ S" ~& o2 N% W( x
  ! D4 H8 a" M. }9 ]1 A3 M7 @+ P
  安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。
7 R* R! F3 y+ `- o- Y- m$ D  opccomn_ps.dll
# ~4 J; V9 g) S$ _+ h: T, T  opcproxy.dll! Z- r2 D! y  L% ^  s
  opcdaauto.dll
4 Q. Y& Z( S& a; l/ `  OPCTrend.ocx
/ w5 ?- F6 g: J$ p( P  OPCBar.ocx1 v. s; C! y5 Z
  OpcServer.exe 2 |/ E! E. W3 ^- m
  OPCJDADemoServer.exe7 e0 J' @* S! Y" q  h, q
  
+ w0 G  U0 U$ p! e/ c# L$ C  看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。. {! n2 l+ r# f& ?9 `
  后面两个是demo 服务器。: y1 ?" x6 @6 l% u% T0 ~+ o
  ( ?5 a5 D+ R- ~, x3 x4 A; r9 y, W
  上网,用GOOGLE,查OPC,很自然就找到了www.opcconnect.com.,又下了个free
8 u: T1 g  Z+ T% R7 V  服务器。安装了(注册)。
% h' U7 G0 e, }) C7 \  9 w; s# S3 t+ b
  到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下,7 Y3 w, R  H) |
  , `: L/ E0 P5 k! z3 z' q. ?4 S/ U
  点击连接服务器图标,立即出现了三个:. m6 n, _/ k/ G# F! ~% I  u) n" `, |
  OPCJ.SAMPLESERVER.1
$ ^- n1 L$ o/ ?  OPCJ.DADEMOSERVER.16 t3 s& L/ ]% {! v
  HEXATEC.PCDATA. m! a# P# o( Z- r; ~1 V
  
1 }  n0 F3 J) J! ~6 i  M$ s  第三个是opcconnect上download的计算机基本情况的简单程序。
# e' q+ a; T( G1 L, B; W  
; y; ]/ w6 b+ j7 \8 A  点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这0 e' d& p1 U; `2 f: S
  工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少
$ R- d( T- G. n+ O+ s  人敢学,也就没有市场。) F& i  R. H  v6 w. @7 k
  
0 r% A1 z) j# Z3 ?5 h  有一段时间没用VB了,先热了热身,看了自己过去编过的code。" L7 z8 o! \9 d% y/ M
  第二日+ ~) C, w; D/ T' s* y
  今天先看书。
! H* J% U( H2 h& q  《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现有错误。我还是仔细地看下去。
5 ]% u8 i& g0 p7 V. Q, ~  8 N% k/ N  |+ i. U- v
  这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂,最起码编用户程序(客户端)不难。
5 b/ _  U. p8 x( {7 \. y4 ?  
  ~; Q2 F5 `) [8 t  `9 c7 h+ _  在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。& B* h8 ~  g, Q) V/ J
  
- z8 {# s1 j- T3 G: z; i3 c3 z  书上对OPC体系有描述,我画了个图。0 K7 p2 ?3 s( |/ s$ l; A
   1 v, }4 F  I" X* |+ c

) c/ J# O2 |! H4 Q& g' Q
" L! S+ W* _0 G  OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。
7 c: J$ g* v! v  
3 Q+ a! a, T" g  OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以,并没有必要了解OPCserver是怎么工作的。
! H- ^* F# X& D( n- [  
" K: ]3 X9 O7 B% W: }  @  对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了 DATA ACESS 2.0,实际上已经有了3.0版。* \$ H% ^1 M  P2 t5 G" T; v
  
' E7 W, o% H3 ]: O$ P6 F% Z  而在通用接口和自动化接口之间还有一个东西,是成对使用的,有点象MODEM,在两个接口之间起数据传输作用,有个名字叫PROXY_STUB(代理—占位,翻译还不如不翻译,反正不懂)。
9 |  J0 n- |3 E; k3 E7 F  ; P7 }/ C- ]" X! ?( |0 [
  我在第一天中安装的几个DLL中:
; [8 Q' p4 }+ R. Q: n  OPCcomn_ps.dll 通用接口
4 i5 U* {; r8 o) C3 X8 D  OPCdaAuto.dll 自动化接口: V; Q5 w9 B- n$ D, U
  OPCProxy.dll PROXY-STUB
, P0 L; y. h8 n  . m; z* I) l( @
  我们的任务是用VB编写客户端程序,只要知道怎样用自动化接口就行了。其他的不去钻了,要不一年也搞不明白。
/ t- N; N! x$ |3 E  E  
, Y3 g4 |% N3 t5 ]  我运行VB6.0,新建一个新工程,点击菜单中的“工程”.“引用”,选择”OPC AUTOMATION 2.0”,就可以利用自动化接口。
6 [' a; J+ P/ G- G' I! e) p  * t+ l' J9 @' B8 \# A6 L& ~' C7 M
  《入门》没有建议将这些DLL安装在什么目录,我觉得放在WINDOWS的SYSTEM下是比较好的。
% U4 s2 j% J" t' w  ) i3 u6 \" G" o! Q
  按照书上的顺序,先了解OPC的数据组织。我也画了图。
2 S& C0 I+ |1 S5 ~# R  
8 C0 N3 n0 I( m, Z' C# K5 S, ^) \) N6 z

) n' G! d7 [% ]! W; h- {# \5 Y; x; C0 d& `$ D: t
  我们要的就是item,翻译成标签,这就是点,我们所谓的点,比如PLC的I/O点,仪表的数值等。编客户端的开始就是找出数据。4 t9 z* \1 K3 T1 {% |
  3 h$ J4 e$ B* M) H' O4 Y# k
  根据书的介绍,要访问标签,还有其他工作要做。! d6 Q- t4 C0 t; U
  我累了。明天再说。
- d5 E5 H: {8 e, H  
+ C9 }+ e4 p3 m9 E- s; @  第三天  M3 T" I  f! ]% ~
  昨天说到访问标签先要做些事。! i5 T- h" `7 H4 b* ~2 @
  * M3 l( s9 }2 ?6 ~: F
  首先要找出你要访问的OPC服务器的名字,连接它,建立一个组( GROUP)的集合,在下面建立一个具体的GROUP,在这个组中添加一个或多个标签。才可以访问。
8 S% G$ f# h" G3 X  / N* k5 A2 a& @( ~- |
  我用第一天下载的WXOPC工具,看到了三个服务器,我选择了其中一个
: z& z$ l# G, ]9 `0 |% P  hexatec.pcdata.1,是一个计算机基本情况的DEMO服务器,我发现服务器的名字都是这种格式。
2 `, D7 v  w. D9 M# z  1 h/ h0 @! o. y/ u9 s& L) b( Y
  按《入门》的样子,做了个客户端的架子,一个小时后完成了服务器的连接,新建组集合,建立一个具体的组。下面有些不清楚。干脆拿《入门》的演示程序打开来研究。$ Y( |. j8 g$ Y% |0 S- i
  直接运行,没问题,看到了数据的变化,决定看其原代码。
0 @! {9 r& Y! d% O9 `7 F* C  % I) ^6 o2 V8 w( i1 D- K; ]8 D+ F
  它用的是OPCJ.SAMPLESERVER.1这个服务器,没有实际意义,每个数据都可以读写。, V, z" @3 y; B
  我发现标签名可以任意编,好奇怪。但是我用WXOPC看到的标签,数据却不一样。
5 v' K$ _$ j/ M9 R6 A- ]  9 l8 T7 M, w5 o! p: d$ W" N& S
  我在FORM上加了个text 控件,叫text1,我让服务器名等于text1.text,这样我可以自由换服务器,还不错,几个服务器都可以连接上。但是只有它自己的服务器才可以读出数据。是不是骗人。1 |* |' X. \, l! Z  {( z# D
  . e3 A% x4 `+ ^$ h
  试一下按服务器自己的ItemID去访问,我用WXOPC找出hexatec.pcdata.1的标签名,比如“version”,发现还是出错。
! H! ~# }0 y1 b. L5 z* {. t  我又到工控论坛上,问已知标签怎样才可以读出数据。没有人回答。
9 O) @$ e# l( V" F# r  j  + B3 h6 ?) S! b
  我给自己留下了两个问题:+ W( g* a# T9 y9 X+ O6 d- N
   1÷怎样获得本机上得所有OPCserver,获得正确的名字。我看到WXOPC可以。论坛上也很多人在问。/ |6 ?% f" E4 J
   2÷如何访问ITEM,取得其数据等。) h+ O% C; U1 t7 a
  
$ Y7 l- h9 u8 H- t/ i% t% z  又看了一会书,看了有关OPCSERVERBROWSER的内容,好像是有用。
- v* ^, E! d6 U* g  今天到此为止,
* n  l7 H7 Z2 S3 T  r" J* H/ w4 w  休息, P/ t$ ^; y/ ?$ _8 b
  ! T' V2 N9 m9 P
  第四天9 g$ h0 A% R, k) r; }8 a& \! }
  熟悉OPCSERVERBROWSER的用法。主要有showbranchs,showleafs,movedown,movetoroot! O2 x' v* I& ]0 c- S9 t6 l& ]
  等等。OPC服务器,实际上是一棵树,有brahchs和leafs组成。我编了一个简单的SUB,实现了两层的树的ITEM的枚举,实现不了第三层。这实际上是树的遍历算法问题。我不知怎么做。我准备去问别人。
% U9 P* o$ b# t/ C1 H* u% m7 `5 ^  
9 W' P0 {* B0 Q2 I  从形式上所谓的GROUP/ITEM 和branch/leaf是一样的,实际上并不是。GROUP是用户自己添加的,并不一定要和OPC服务器Branchs一样,每个LEAF是一个 Item,它们可以有用户任意放在哪个组中,不必考虑在服务器中是在哪个branch下,也不必考虑在第几层。
: G+ b- f$ l, L  m1 [) q  
# M" x4 D* m. Z  l  既然我知道了每个ITEM的ID,我想我可以得到各自的SEEVERHANDLE(句柄),从而访问到实际的数据。
3 q. j+ @2 {0 D2 y; a3 E  s% g  
2 M8 P1 r" K: V5 X: N0 J  我添加一个组,在其下面建立标签集合,然后用:7 B0 q( A; V  Z7 F$ |* E, j, I* s8 d  P
  标签组的ADDITEM方法获得句柄。
( p) C7 {2 k) [" m) {  n/ U  用同步读方法就可以得到每个标签的数据。8 c, Z, o7 v) T8 L
  8 t% Y: h, Q2 Q$ C' p; B
  我发现有问题。昨天我就发现有问题。& T: ?: p/ e# N
  今天论坛上没有人给我回答,去国外网站看看,www.opcfoundation.org上有个FORUM,内容很多,有真正的专家,其中一个是OPC基金会的技术代表。FAQ上还保留了从1998-2001年的问题及回答。: |% C+ n4 B- w) N+ A  |) y: j3 s
  . d0 O6 x7 k8 C
  你相信吗,我真的找到了。有一个叫fullqulifity ItemID的说法,比如下面的情况
8 Q& x' G! R, o2 g. R! r$ Z  i- S3 G  bch1(树枝): `' u# C' l$ [0 B- x; y) j. e
  tag11(叶子)
, `1 k) b' l: A' h; w: K+ a  tag12 (叶子)6 i! S7 R9 {4 O, f) D3 L
  bch27 V7 a# \6 v5 y4 H
  tag21 (叶子)
9 O4 L; J' v  R6 s& W  bch22 (树枝)7 V" s% a' o% L. ?+ n- s7 ]
   tag221 (叶子)
, ~6 I% l& q" _7 ~  g9 i/ T   tag222 (叶子)
- n4 G7 K- E; j, j) p# D) V  
. j4 U/ j- M3 J( K& D* V  1 n/ H: L* r4 s7 l8 Z% n$ Y7 B
  通常的ITEMID是tag11,tag12,tag21,tag221,tag222这样的; [9 s, m8 O3 c
  而Fullqulifity ItemID是bch1.tag11,bcg1.tag12,bch2.bch22.tag221,bch2.bch22.tag222
  p2 N! f4 S  R7 ^  应该用OPCSERVERBROWSER的GetItemId()获得。
) o+ F. f2 @: V- ~0 q1 R9 G2 v1 X; h  
$ C) w* w' [0 ^1 u* K  修改程序,OK。/ T1 X: N$ ^$ C
  + n6 D  f4 K9 p" q) M
  还有什么问题,本机服务器的枚举。. a8 d+ z* J0 @2 w
  明天再说吧。ZZZzzz. ?# V4 j3 w7 J: \7 B: R, _7 f
  
  A* {0 Q( U$ d$ E( M$ |: W  第五天
& B5 X6 k/ @* n  
  k- W# t" c2 O) c  W" m" n- N, n  国外网站上真是有很多有用的东西,不象我们的论坛,原创的少,转载的多,内容也太少了。今天我直奔主题。% m+ u7 p% n2 M  _) e4 {
  
! K% j1 ?8 R; N" B5 J  上GOOGLE,输入OPC VB SAMPLE CODE ,GO!。很多。
* \- u2 e# g- q6 u0 I' `  我选择了一个网站:/ g& P& }0 }/ c4 n. y
  www.kepware.com
1 g! _/ X1 g$ k# C+ J' J  下载一个叫KEPSERVEREX-OPC-EXAMPLE的东东,21M。哈哈,带原代码的OPC客户端工具。运行,很不错,那个WXOPC和它比较一下,简直......5 X" k0 y5 M' F9 e/ W
  
" y# m3 F. T- V8 W; U  枚举OPCServer的法子:; R! c+ |5 i1 f' v
  Dim ServerList as Variant8 r/ ]7 E1 i0 S9 u$ Z. s9 q
  Dim i as Integer
" N# ?* w& C' q  Serverlist=anOPCServer.getOPcServer(node)
$ t2 C2 S1 q9 P% k4 z, B" r  List1.clear
- V: C* a& {, B  i  FOR i=lbound(Serverlist) to ubound(Serverlist)% w7 V* Q; z4 n7 Y% [  l
   List1.additem serverlist(i), p  H0 z& b1 }* q& X
  NEXT I
; J, K/ T: O% c3 I. D- w  ! {. l: {7 [# _# X
  就这么简单,为什么在论坛上有这么多人在问,而我也没搞懂。5 m: c! M) P2 d
  找到了枚举服务器的办法,在单机上成功。" f% M/ `# E' }
  其实《入门》也提供了一个DOC文档,是OPC提供的:0 @0 x4 O1 A8 s, J! t2 v
  Data Access Automation Interface Standard Version 2.02
2 A' y: H6 w/ ~9 n- m  
9 Y! g8 j" a4 M, v0 x# }- m  是一个必须的手册,只是有一些错误。错误总是难免的。
( _, H- ^3 l' ^# F  入门如果有人指点,实际上不难,没有指点,实际不容易。好在有网络。
  F! V4 `! A8 L8 ~5 O1 G6 p9 k  ( T) j/ l  _3 H/ L2 Y
  上班时,我借了本《数据结构》,里面有算法,不知为什么,我却没找到未知层树的遍历算法。上班可能脑袋不清楚吧。  V* W6 v( ?4 b
    U1 L# q3 b4 u1 Q
  第六天* P; r9 ^& A2 T* p+ u2 L1 a
  4 I7 m2 d3 H- h4 G) G9 p
  上午,想解决树的问题。昨天的KEPWARE的例子,用了TREEVIEW控件和OPCSERVERBROWSER。" d& r! @$ @0 E' d" l& X
  
# f2 M' G; m& z; w' `  我用GOOGLE查找“treeview” “树的遍历”,有了答案,好几个地方。仔细一看都是一个。是利用TREEVIEW和递归算法实现计算机文件目录系统的展开。递归,怎么忘记了。' S# I2 P5 E/ L$ y% N; L- j
  $ f- |$ m0 t/ r
  采用递归算法实现了枚举所有ITEM的过程。用了3个小时。
& o0 H( g$ Z+ P! K: I" ~$ `  * \8 F: \$ g9 C1 V( y
  下午休息。/ C8 [9 b' ^$ O: G+ D! M6 @3 Z# I
    z0 t/ U# @3 h( P
  第七天
) x5 h3 f9 j/ u: [- M  . ^4 c. |$ A7 _/ a. L) X3 M. f2 Y
  将自己的第一个程序,转成EXE文件,在不同的地方试运行,都正常。0 P: p( j+ ]& t0 ]5 d
  
0 J( `, ?# W+ X( v  我想起了第一天安装的那些DLL,还要么。试一下
3 |  D! p2 T* S' b  将一个改名,运行,出错。再试另一个,出错。一个都不能少。记住。
, g1 r1 W2 |1 K6 z  OPCcom_pas.dll 通用接口
! v$ G+ [! p& Y9 [1 W  OPCAutoda.dll 自动化接口
9 O! T" z: r, O* e  OPCProxy.dll PROXY-STUB
" l" e- l3 ]) _. f  
8 k# b( k/ b2 Y7 s( V. f2 U5 Z  想起组态软件支持OPC,就用组态王试了一下,发现用OPC和用其他方式没有什么两样。一般设备是先找硬件端口,找设备,找I/O点。而OPC是先找OPC服务器,在找出标签(也是点)。真正的组态没有什么两样。/ ^6 N5 ]+ ]& ]! E
  ( q! P. U5 b2 ^2 e/ O
  下午,想做个总结。更想休息,七天了,每天6小时以上。好累。3 x8 o, A% n" v5 }
  
; g2 A3 Q' @# B+ C( D  后记" k! I0 [& D7 n. Z  _
  这是一次入门的学习,本身没有什么。我却有些感想。" t+ h: O% _$ z. M) r
  . g2 H6 O: ~( n6 v! k
  OPC还是很难的,最起码,要自己编客户端已经不易,何况还有5 N% ~1 f( s/ u7 ?; I  y
   OPC ALARM & EVENT 报警和事件+ U" t" h% l8 l8 h; x  N1 O% a
   OPC DX 服务器间数据交换; |$ b. _; ^* D
   OPC SECURITY 安全8 s/ p3 Q; I/ T' Z: V9 ^0 F) k1 n
   OPC HISTIRDATA 历史数据库
& D$ c1 f1 \- Y& a2 n   OPC XML XML
. s  y- J1 `8 O+ |   OPC .NET FOR .net/ D% U9 n4 t5 |$ \8 C+ r
  这些对于一种工控软件是比不可少的。
( u4 `) z7 g5 u# Y! z# o  
) |( m2 w2 z1 u: u  工控行业的发展日新月异,我们这个专业要不断学习。真羡慕医生,白头发代表经验,代表水平。我们呢,白头发代表落后。苦。
$ ~  _1 I$ O2 r  中国工控落后,我们用的95%以上都是外国货,说明书都是外文。还要学好外文。苦。
$ |, T1 Y0 _9 f+ f  $ C  _3 d; i1 H9 r8 j- U' X# v- s
  这次有多问题的解决都是在国外网站上找到办法的。有种感觉,在网上什么都可以找到,只要你知道你到底要什么。甜。# o6 T$ [2 R1 v6 u" P9 g: t! n
  ) M) |3 g7 c/ I
  总算对OPC有了些感觉,累,也甜。
发表于 2008-9-5 09:45:30 | 显示全部楼层 来自: 中国湖北鄂州
4楼的兄弟太强了
4 R; t# @8 v/ t真是热心人啊
发表于 2008-10-11 08:06:13 | 显示全部楼层 来自: 中国江苏常州
这本书原来我也准备买一本学习一下的,不过出版了这么多年,不知有没有新版的了
发表于 2008-10-13 08:35:30 | 显示全部楼层 来自: 中国河南南阳
四楼说的那个人及其变态,是高手,不要和他比,一般人跟他没有可比性
4 }0 R8 K% j8 M书还是买来看好,提高的快。8 c( v& C* v9 q4 Q. O5 J2 r

0 X. X- m) ~1 p  \5 ^[ 本帖最后由 ymkmqv 于 2008-10-13 08:42 编辑 ]
发表于 2008-10-14 01:22:07 | 显示全部楼层 来自: 中国上海
4楼很详尽啊 支持下
发表于 2011-1-7 23:48:54 | 显示全部楼层 来自: 中国黑龙江哈尔滨
《OPC应用程序入门》(PDF/书签)
2 H# h, o. o2 q# p& i3 vhttp://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 )

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