(控制理论与控制工程专业论文)基于opc规范和internet的实时监控系统.pdf_第1页
(控制理论与控制工程专业论文)基于opc规范和internet的实时监控系统.pdf_第2页
(控制理论与控制工程专业论文)基于opc规范和internet的实时监控系统.pdf_第3页
(控制理论与控制工程专业论文)基于opc规范和internet的实时监控系统.pdf_第4页
(控制理论与控制工程专业论文)基于opc规范和internet的实时监控系统.pdf_第5页
已阅读5页,还剩68页未读 继续免费阅读

(控制理论与控制工程专业论文)基于opc规范和internet的实时监控系统.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于o p c 规范和i n t c r n c t 的实时监控系统 罗小松( 控制理论与控制工程) 指导老师于佐军( 副教授) 摘要 随着现代制造系统的不断发展,系统变得越来越庞大,功能越来越 复杂,对系统的开放性、可扩充性、可重用性以及互操作的要求也越来 越高。传统的企业信息集成的方式己经不能适应现代制造系统发展的要 求。以支持应用互操作的需求为核心,在分布对象环境中实现企业信息 资源的重用、重构与共享,己经成为当今的企业信息集成的发展方向。 本文在深入研究o p c 技术、c o m d c o m 技术和研究i n t e r n e t 技术的 基础上,提出了基于o p c 数据访问规范和i n t e r n e t 技术的实时监控系统 的实现方案,并分别对o p c 客户系统开发和o p c 服务器开发以及客户端 与服务器端两者之间的通信做了详尽的介绍。该系统符o p c 数据访问规 范。采用a s p 技术作为分布式计算手段,结合了o p t 技术与i n t e r n e t 技 术两者的优点,具有良好的开放性、可扩展性和平台无关性。实验结果 进一步表明,该系统方案能在一定程度上满足分布式远程实时监控的应 用需求,具有较好的通用性,应用前景十分广阔。 关键词:o p c 服务器,o p c 客户端,c o m d c 0 m 技术,a s p 。a c t i v e x 控件 t h er e a l - t i m es u p e r v i s a la n dc o n t r o ls y s t e mb a s e de l lt h e o p ca n di n t e r n e t l u ox i a o s o n g ( c o n t r o lt h e o r ya n dc o n t r o le n g i n e e r i n g ) d t r e c t e d b y p r o f e s s o r y u z u o - j u n a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fc o n t e m p o r a r yi n t e g r a t e dm a n u f a c t u r i n g s y s t e m ,m a n u f a c t u r es y s t e m sb e c o m el a r g e ra n dl a r g e r , a n dt h ef u n c t i o n so f t h e s es y s t e m sb e c o m em o r ea n dm o r ec o m p l e x n o w a d a y s ,t h e r ei sag e n e r a l d e m a n df o rt h e s y s t e m s t ob eo p e n , e x t e n s i b l e ,r e u s a b l e a n d c o o p e r a t i v e h o w e v e r , t h et r a d i t i o n a li n f o r m a t i o ni n t e g r a t i o nm e t h o d sc a l l h a r d l ym e e tt h i sd e m a n d r e u s i n g , r c - s t r u c t u r i n ga n ds h a r i n ge n t e r p r i s e i n f o r m a t i o nr e s o u r c e si nad i s t r i b u t e do b j e c te n v i r o n m e n th a v eb e e nt h e t e n d e n c yo f t h ef u t u r ee n t e r p r i s ei n f o r m a t i o ni n t e g r a t i o n t h ep a s s a g er e s e a r c h st h a tt h eo p ct e c h n o l o g y , c o m d c o mt e c h n o l o g y a n di n t e r a c tt e c h n o l o g y , a n dc a r r yo nt h es y s t e mo f t h eo p c d a t a a c c e s sa n d t h ei n t e r a c tt e c h n o l o g y t h e r e m o r e ,t h ep a s s a g ei n t r o d u c e st h es t u d yo ft h e o p cc l i e n ts y s t e ma n dt h eo p cs e l w es y s t e ma n dt h ec o m m u n i c a t i o n b e w t e e nt h e m t h es y s t e ma c c o r d sw i t ht h eo p cd a t aa c c e s ss p e c i f i c a t i o n a n da d o p t sa s pt e c h n o l o g yt od ot h ed i s t r i b u t e dc o m p u t em e a n s ,a n d c o m b i n e st h em e r i t so ft h eo p ct e c h n o l o g ya n di n t e r n e tt e c h n o l o g y t h e r e s u l to fe x p e r i m e n ti n d i c a t e st h a tt h es y s t e mc a ns a t i s f yt h ed a m a n do ft h e d i s t r i b u t e dl o n gd i s t a n c e dr e a l t i m es u p e r v i s a lt h ec o n t r o ls y s t e m k e yw o r d s :o p cs e r v e r , o p c c h e m ,a s p , c o m d c o mt e c h n o l o g y , a c t i v e x 1 i i 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取 得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论 文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得中国 石油大学或其它教育机构的学位或证书而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了 谢意。 签名:里赴捡沁年5 月之己日 关于论文使用授权的说明 本人完全了解中国石油大学有关保留、使用学位论文的规定,即: 学校有权保留送交论文的复印件及电子版,允许论文被查阅和借阅;学 校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手 段保存论文。 ( 保密论文在解密后应遵守此规定) 2 0 0 年g 月之己日 乏。年s 月己己日 中国石油大学( 华东) 硕十论文第1 章前言 第1 章前言 当今,随着市场的进一步全球化,企业之间的竞争不断加剧,给企 业带来了巨大的压力。企业纷纷寻求有效方法,加速推出高性能、高可 靠性、成本低的产品,以期更有力地加强企业的竞争力。而另一方面, 随着计算机技术( 特别是网络技术) 的飞速发展,当今世界己步入信息时 代,以信息技术为主导的高新技术也为制造技术的发展提供了极大的支 持。随着计算机在制造业中的应用不断地深化,现代集成制造 ( c o n t e m p o r a r yi n t e g r a t e dm a n u f a c t u r i n g ) 技术及其产业应运而生,并得到 迅速的发展。 o p c 是o l ef o rp r o c e s sc o n t r o l 的缩写,即用于过程控制的对象链接 与嵌入( o l e ) 技术。o p c 是一套在基于w i n d o w 的操作平台的工业应用 程序之间,提供高效的信息集成和交互功能的组件对象模型接口规范。 它以微软的组件对象模型c o m d c o m c o m + 技术为基础,采用客户服 务器模式。o p c 服务器是数据的供应方,负责为客户提供所需的数 据;o p c 客户是数据的使用方,对o p c 服务器提供的数据进行处理。在 使用o p c 过程中,总是包括有o p c 服务器与o p c 客户,o p c 服务器一 般并不知道它的客户来源。由o p c 客户根据需要,接通或断开与o p c 服务器的连接。将o p c 技术和i n t e m e t 技术的结合更能适应工控领域的 发展要求和方向,对工控领域的发展指明了大致的方向。 在本编论文中,主要谈及基于o p c 规范和i n t c r n c t 的实时监控系统, 一共分八章,分别介绍了o p c 概述,o p c 技术基础c o m 技术,基于 o p c 规范和i n t e m e t 的实时监控系统的整体设计,o p c 数据存取服务器 的开发,o p c 客户端和服务器端的开发,接着的一章中着重谈到了o p c 服务器与o p c 客户的通信,最后一章中对其整个课题作一个总结。 由于作者有限,本论文中存在着很多的不足之处,恳请各位老师和 同学批评指正。 中国石油大学( 华东) 硕士论文第2 章o p c 概述 第2 章o p c 概述 随着过程自动化的发展,自动化系统厂商希望能够集成不同厂家的 不同硬件设备和软件产品,各家设备之间实现互操作,工业现场的数据 能从车间级汇入到整个企业信息系统中。因此这就需要一种能够有效地 进行数据访问和管理的开放标准,能在工业控制环境中各个数据源之间 灵活地进行通信。o p c ( o l ef o r p r o c e s sc o n t r 0 1 ) 就是在这个背景下产生的 【1 1 。 o p c 是o l ef o r p r o c sc o n t r o l 的缩写,即用于过程控制的对象链接 与嵌x , ( o l e ) 技术。o p c 是一套在基于w i n d o w 操作平台的工业应用程 序之间,提供高效的信息集成和交互功能的组件对象模型接口规范。它 以微软的组件对象模型c o m d c o n u c o m + 技术为基础,采用客户服务 器模式。o p c 服务器是数据的供应方,负责为客户提供所需的数据;o p c 客户是数据的使用方,对o p c 服务器提供的数据进行处理。在使用o p c 过程中,总是包括有o p c 服务器与o p c 客户,o p c 服务器一般并不知 道它的客户来源。由o p c 客户根据需要,接通或断开与o p c 服务器的 连接【1 1 。 在本章中将重点介绍o p c 背景,o p c 概念以及o p c 发展等等。 2 1o p c 产生的背景 随着微电子、计算机、通信和网络等技术的发展,自动化领域发生 着深刻的变化。智能仪表越来越多的活跃在工业现场。可以提供大量以 前无法得到的大量信息。这些信息不仅包括现场的温度、压力等被测参 数,也包括装置的运动状态、组态参数。与此同时,现场总线得到了迅 速的发展,它通过标准化的数字通信链路将现场智能化装置与远程监控 计算机连接起来,实现了数据传输与信息共享,形成了全新的分布式控 制系统【l 】 当大量现场信息由智能仪表直接进入监控计算机或通过现场总线传 至监控计算机后,存在着计算机内部应用程序对现场信息的共享与交互 2 中国石油大学( 华东) 硕士论文第2 章0 p c 概述 问题。由于缺乏统一的连接标准,工控软件往往需要为供应商提供的硬 件设备开发专用的驱动程序。这样一旦硬件设备升级换代,就需要对相 应的驱动程序进行更改,增加了系统的维护费用。同时,及时计算机中 的s c a d 、a h m i 等软件都有独立的驱动程序,但一般也不允许同时访 问相同的设备,否则很容易造成系统崩溃【2 l 。 另一方面,现场控制层作为企业整个信息系统的底层部分,必然需 要与生产过程管理层和经营决策层进行集成。这样也存在着监控计算机 如何与其它计算机进行信息沟通和传递的问题。由于控制系统往往是不 同厂商开发的专用系统,相互之间兼容性差,与高层的商业管理软件之 间又缺乏有效的通信接口,因此通信规范问题成为了制约控制系统突破 “信息孤岛”的瓶颈。 o p c ( o l e f o r p r o c e s sc o n t r 0 1 ) 的出现,建立了一套符合工业控制等 要求的通信接口规范,是控制软件可以高效、稳定地对硬件设备进行数 据存取操作,系统应用软件之间也可以灵活地进行信息交互,极大提高 了控制系统的互操作性和适应性【3 1 0 2 20 p c 概念及优点 o p c 规范是一组以微软公司的o l e c o m d c o m 技术为基础定义的 与厂商无关的接口规范,它为自动控制和工业自动化领域提供一个开放 的、灵活的、即插即用的工业标准,是许多世界领先的自动化和软、硬 件公司与微软公司合作的结晶。 o p c 标准要求所有硬件供应商将硬件设备驱动程序封装成独立的 o p c 服务器。上层应用作为o p c 客户端,可以不包含任何的通信接口程 序,不必关心底层的硬件设备特性,也不必考虑软硬件如何通信,只要 遵循o p c 规范就可以进行通信,从而多种系统之间真正的集成。上层的 信息集成系统就脱离自动控制系统而独立出来成为o p c 的客户程序。 3 中国石油大学( 华东) 硕士论文第2 章o p c 概述 圃 $ 匝画 c 客户工 图2 1 多个o p c 服务器集成应用系统结构 o p c 技术从一出现就开始受到各大厂商的重视,发展非常迅速。国 内外许多公司纷纷在自己的产品中增加o p c 服务器或者o p c 接口支持。 o p c 客户程序和o p c 服务器的开发工具软件也已经面世,厂商和客户能 很方便定制开发自己的o p c 客户程序和o p c 服务器。o p c 技术己经成 为工业控制领域中的一项核心技术,并在其他很多领域得到广泛应用【4 】。 本质上讲,o p c 定义了一个公共接口,对于某一厂商具体的产品, 只需按照此公共接口开发一次就能方便的重复使用。o p c 规范的出现, 改变了传统的信息集成所采用的方式,其主要优点如下【5 】: 1 硬件生产商只需开发一套软件组件提供给客户,客户可以方便地 把它嵌入到不同的应用中去,无需针对每种应用分别开发软件组件。 2 当设备的特性发生变化或者增加新设备的时候,软件开发商无需 重写所有的驱动程序。只需加入相应的模块即可。 3 帮助最终用户构建更先进更灵活的集成制造系统解决方案,为企 业信息集成提供更有力的支持。 4 l 王上卤 多曰 t l 燮王笔一 一棚一 咒一 上卤 虱习 t土一服虿一一 王善 中国石油大学( 华东) 硕+ 论文第2 章0 p c 概述 2 30 p c 标准简介 2 3 10 p c 对象与接口 o p c 规范描述了o p c 服务器需要实现的c o m 对象及其接口,它定 义了定制接口( c u s t o m i n t e r f a c e ) 和自动化接口( a u t o m a t i o ni n t e r f a c e ) 。 每种不同的o p c 规范有粉定之接口规范和自动化接口规范二部分,以方 便开发者设计和实现o p c 服务器程序或客户程序【“。 o p c 客户程序通过接口与o p c 服务器通信,间接地对现场数据进行 存取。o p c 服务器必须实现如图2 2 所示的定制接口,也可有选择地实 现自动化接口。一般来说,自动化接口能为v b 等高级语言客户程序提 供极大的便利,但数据传输效率低;而定制接口则为用c c + + 语言编写 的客户程序带来灵活高效的调用手段。在有些情况下,o p c 基金会提供 了标准的自动化接口封装器( w r a p p e rd 1 1 ) ,以方便自动化接口和定制接 口之间的转换,是采用自动化接口的客户程序也可以访问只实现了定制 接口的服务器。 呻晷尸崔厅! 刁专 一 自动化接口 ( c + + 客户程序) 辱专 定期接口 苎能三网 固 图2 20 p c 自动化接口与定制接口 o p c 规范定义了c o m 接口,规定了服务器程序和客户程序通过接 口交互的标准,但并没有说明具体实现的方法。o p c 服务器供应商必须 根据各自硬件特性实现这些接口的成员函数。不论定制接口还是自动化 接口都可分为必选接口和可选接口。必选接口包括了客户程序与服务器 进行交互的最基本功能,因为此时必须实现;可选接口则规定了一些额 外的高级功能,可根据需要有选择地实现。客户程序应通过查询接口的 方式来判断服务器程序是否实现了可选接口的功能。 2 3 2 存取( d a ) 规范概述 o p c 数据存取规范是o p c 基金会最初制定的一个工业标准,其重点 中国石油大学( 华东) 硕士论文第2 章o p c 概述 是对现场设备的再现数据进行存取。该规范也分为定制接口规范和自动 化接口规范二部分,两种接口完成的功能类似,下面主要介绍定制接都 规范中基本的对象和接口功能【” o p c 数据存取服务器主要有以下几个对象组成,即服务器对象、组 对象和项对象。o p c 服务器对象维护有关服务器的信息并作为o p c 组对 象的包容器,可动态地创建或释放组对象;而o p c 组对象除了维护有关 其自身的信息,还提供了包容o p c 项的机制,逻辑上管理o p c 项;o p c 项则表示了与o p c 服务器中数据的连接。图2 示意了这几个对象的相互 关系以及它们和o p c 客户程序的关系【l 】。 图2 3o p c 数据存储服务器中对象及o p c 客户的相互关系 从定制接口的角度来看,o p c 项并不是可以有o p c 客户直接操作的 对象,因此o p c 项没有定义外部接口,所有对o p c 项的操作都是通过 包容该项的o p c 组对象进行的。而o p c 服务器对象和组对象是聚合关 系,即o p c 服务器对象创建o p c 组后,将组对象的指针传递给客户, 由客户直接操纵组对象。这样既提高了数据存取的速度也易于功能扩展, 体现了组件软件的重用性【s 】 2 4o p t 特点 o p c 标准己经是公开出版的技术标准,根据其目标,拥有以下几个 突出的特点【1 2 】: 1 开放性 6 中国石油大学( 华东) 硕十论文第2 章o p c 概述 因为o p c 标准接纳所有类型的客户机和服务器,并且o p c 标准支 持所有的编程语言( 如c ,c + + ,v b ,j a v a , h t m l ,d h t m l 等) ,所以利用 o p c 可以轻松获取实时工业数据。另外,o p c 基于c 咖c o m ,支持 i n t e r a c t ,能从远程机器访问o p c 服务器,这无疑也大大增加o p c 的开 放性。 2 互联性 最终用户可以非常容易地与不同厂家的自动化设备进行连接,而且 可以在诸多的自动化设备系统中自由使用o p c 客户应用程序( s m 工、 s c a d a , v i e s ,c u s t o m 等) ,比如使用同一应用软件界面程序集成不同的 现场总线系统等。 3 高效性 o p c 的高效性不仅体现在o p c 的即插即用功能( p l u ga n dp l a y f u n c t i o n ) 使得系统集成交得轻而易举,更主要的是o p c 能够优化快速地 传输数据。根据o p c 基金会对o p c 传输效率的测试结果,在本地以及 两台计算机之间,5 0 0 0 个过程变量的变化值能够在1 s 之内从o p c 服务 器传输到o p c 客户端,而对于5 0 0 个变量,只需要1 0 0 m s 左右。因此, o p c 被认为能够非常高效地传输数据。 4 产业性 o p c 是一个开放的标准,建立在己普遍使用的微软标准基础上,最 终用户及供货商无需在集成方面花费过多时间。 2 5o p c 应用现状及前景 数据存取规范提供了应用程序之间传送单个数据的灵活、高效的方 法,但对于传送结构数据和可执行的命令串并不合适。例如当o p c 服务 器传送一个大的的二进制对象( 如设备的组态配置信息,p l c 的梯形图程 序、或高速采样设备获得的信号波形数据) 时,o p c 客户将不知道如何对 此对象进行解码,或者命令串可能包含保留的变量名。复杂数据工作组 的工作就是对o p c 数据存取规范( d a t aa c c e s ss p e c i f i c a t i o n ) 进行扩展或 定义一个新的接口集,这些新的接口将允许o p c 客户和服务器能够识 别、交换和解码结构性数据,并能够传送命令串和监视命令串在设备中 7 中国石油大学( 华东) 硕士论文第2 章0 p c 概述 的实行情况。新的接口集应是对现有的接口的补充,而且不能与现有的 接口重复。 一些高效、底层的应用程序,如软p l c 、软控件,需要对数据进行 简单、快速的存取,而o p c 数据存取规范包括许多这类应用程序并不需 要的高级功能,此外o p c 数据存取规范大量使用服务器定义的0 吖参 数,这降低了其运行效率,限制了在实时环境下的应用。公共i o 接口 工作组的任务就是开发一个简单、高效的数据存取规范,特别是对物理 i o 的直接操作。该接口应尽可能基于现有的i e c l l 3 1 的标准功能,以支 持传统p l c 的编程:该工作组还希望定义一组由一个d l l 库导出的“纯 接口函数,并由一个简单的c o m 接口封装【1 4 1 。当然,这个接口应该是 对现有数据存取规范的补充,而不是与之进行竞争,该接口将被严格限 制于实时应用中。 现在许多公司正在致力于利用o p c 标准开发产品。w o n d e r w a r e 公 司原来一直采用n e t d d e 开发其软件产品,并且做得相当成功,但鉴于 0 p c 正在成为业界标准的形式,现在正逐步转向采用o p c 标准开发其软 件产品。u s d 加f a 公司开发了一种叫做0 p c 友好插座的产品,该产品允 许任何符合o p c 标准的对象加入刭该公司的软件中。在已开发成功的 f i s h e r - r o s e m o u n t 的d e l t a v 系统中采用了o p c 技术。i n t e l l u t i o n 作为0 p c 董事会成员,在推行0 p c 标准方面始终是不遗余力,现已利用o p c 技 术开发出了v i s u a l b a t c h , f i x d y n a m i c s 等组件产品【b 1 。 o p c 技术作为一项工业标准在国内也得到了逐步推广和应用,特别 是近年来引起了广泛的关注不少高等院校、研究机构和制造厂商都开 展了对o p c 技术的研究和应用。2 0 0 3 年1 2 月正式成立了中国o p c 促进 会。目前,已有多家公司加入了o p c 基金会,成为其会员单位,如北京 华富惠通、北京华控、浙大中控、北京中瑞泰等。 在应用方面,沈阳自动化研究所在开发新一代分布式控制系统时就 采用了o p c 技术,实现了上层应用软件通过o p c 服务器访问现场设备 信息的功能,同时,还开发出了o p c 数据服务器的开发工具软件 s m a r t o p c 。一些国内工控软件公司也充分利用o p c 技术增强和扩展其 中国石油大学( 华东) 硕七论文第2 章o p c 概述 软件功能,例如北京亚控公司的组态王,三维力控等等【1 6 l 。 虽然在我国有越来越多的厂商推出了采用o p c 技术的产品,但其兼 容性、操作性还有待提高。因此,国内工业自动化领域的科研机构和制 造厂商应加强和合作,紧紧把握住最新技术,推动我国自动控制系统及 仪器仪表水平的发展【l ”。 2 6 本章小结 本章首先分析了过程控制工业的现状,指出传统控制系统软件开发 在实际生产中存在的问题,由此引出了o p c 产生的背景,然后介绍了 o p c 概念优点,比较详细地介绍了o p c 的几个规范,在最后简要地介绍 了o p c 特点,应用现状,发展以及发展趋势。 中国石油大学( 华东) 硕士论文第3 章0 p c 技术基础c 侧技术 第3 章0 p 0 技术基础一c 0 m 技术 o p c 技术是基于微软的c o m d c o m 技术而建立起来的一项技术, 对c o m d c o m 技术的理解是它的难点所在,本章重点介绍的是c o m 技术。 3 10 0 m 基础知识 随着计算机软件科学的发展,应用系统功能日趋复杂,程序愈加庞 大,软件开发的难度也更大。为此,需要将应用程序划分为多个功能独 立的模块,由各模块协同完成实际的任务。这些模块被称为组件,它们 可以被进行单独设计、编译和调试。组件与组件之间通过接口进行通信, 因此,组件之间的接口就是组件软件的关键,在同一软件中的组件必须 使用同样的接口标准才能保证组件之间可以进行通信。c o m ( c o m p o n e n t o b j e c tm o d e l 组件对象模型) 就是一个由微软公司推出的开放的组件标准 f 1 8 】。 c o m 不仅仅提供了组件之间的接口标准,它还引用了面向对象的思 想。在c o m 标准中,对象是一个非常活跃的元素,通常把它称为c o m 对象。类似于c + + 中对象的概念,对象是某个类的实例:而类是一组相关 的数据和功能组合在一起的一个定义。c o m 对象被很好地封装起来,客 户无法访问对象的内部实现细节,也无法知道对象使用了什么数据结构, 访问c o m 对象的唯一途径是通过接口,即c o m 接1 :3 t 1 6 1 。 3 1 1o o m 概念及对象 c o m ( c o m p o n e n to b j e c tm o d e l ,组件对象模型) 是由m i c r o s o f t 提出 的组件标准,是o l e ,a e t i v e x ,d c o m 技术的基础,它不仅定义了组件 程序之间进行交互的标准,并且也提供了组件程序运行所需的环境。该 模型的定义是为了实现语言无关、厂商无关、位置透明以及减少版本, 从而使得来自不同厂商的、不同语言编写和运行在不同平台上的c o m 对象能够彼此协调地运行,共同实现某一任务【2 0 】 在c o m 标准中,一个组件程序也被称为一个模块,它可以是一个 1 0 中国石油大学( 华东) 硕士论文第3 章o p c 技术基础c 0 m 技术 动态连接库( d l l ) ,被称为进程内组件( i n - p r o c e s sc o m p o n e n t ) ;也可以是一 个可执行程序( e x e ) ,被称作进程外组件( o u t p r o c e s sc o m p o n e n t ) 。一个组 件程序可以包含一个或多个组件对象,因为c o m 是以对象为基本单元 的模型,所以在程序与程序之间进行通信时,通信的双方应该是组件对 象( 或c o m 对象) ,而组件程序( 或c o m 程序) 无论是d l l 程序还是e x e 程序都是提供c o m 对象的代码载体田l 。 c o m 提供的是面向对象的组件模型,c o m 组件提供给客户的是以 对象形式封装起来的实体。客户程序与c o m 组件程序进行交互的实体 是c o m 对象,它并不关心组件模块的名称和位置( 位置透明性) ,但必须 知道自己在与哪个c o m 对象交互。类似于c 抖语言中类( c l a s s ) 的概念, c o m 对象也包含属性( 也称状态) 和方法( 也称操作) ,对象的状态反映了 对象的存在,也是区别于其它对象的要素;而对象所提供的方法就是对象 提供给外界的接口,客户必须通过接口才能获得对象的服务。对于c o m 对象来说,接口是它与外界进行交互的唯一途径,因此,封装特性是c o m 对象的基本特征。 c o m 对象不同于像c + + 等面向对象语言中对象的概念,c o m 对象 是建立在二迸制可执行代码级的基础上,而c + + 等语言中的对象是建立 在源代码级基础上的,因此c o m 对象是语言无关的,这一特性使用不 同编程语言开发组件对象进行成为可能【2 5 1 。c o m 对象也具有可重用性, 它表现在c o m 对象的包容和聚合,个对象可以完全使用另一个对象 的所有功能。并且c o m 对象的重用是动态的,即被包容或被聚合对象 的版本更新或功能增强后,包容或聚合对象根本不需要重新编译或者重 新设置口l 。 3 1 2c o g 接口 c o m 规范的核心内容就是关于接口的定义,虽然c o m 接口本身并 不复杂,但围绕c o m 接口有许多内容,包括接口的标识、接口函数的 调用习惯、参数处理、接口与对象的关系以及接口与c c + + 的关系、c o m 接口的特性等 2 6 】。 如果组件使用直接暴露a p i 函数的方法提供服务,则比较简单且容 中国石油大学( 华东) 硕士论文第3 章0 p c 技术基础c o i l 技术 易理解,但是,当a p i 函数较多时,使用会非常不方便,不便于接口层 的管理。而且a p i 函数需要标准化,按照通用的调用方式进行处理,以 使用不同的语言编程实现。而c o m 定义的接口规范,不仅可以弥补a p i 作为组件接口的不足,而且充分发挥组件对象的优势,并实现了组件对 象的多态性。 c o m 接口是一组逻辑上相关的函数集合,其函数也被称为接口成员 函数。每个c o m 接口都由一个1 2 8 位的全局唯一标识符g u i d 来标识。 客户通过g u i d 获得接口的指针,再通过接口指针,客户就可以调用其 相应的成员函数。 c o m 接口的特点【2 6 】: 1 二进制特性。接口规范并不是建立在任何编程语言的基础上,而 是规定了二进制的标准。任何语言只要有足够的数据语言表达能力,就 可以对接口进行描述,从而可以用于组件程序有关的应用开发。 2 接口不变性。接口是组件客户程序和组件对象之间的桥梁,接口 如果经常发生变化,则客户程序和组件程序也要跟着变化,这对于应用 系统的开发非常不利。因此,接口应该保持不变,只要客户程序和组件 程序都按照既定的接口设计进行开发,则可以保证在两者独立开发结束 后,它们的协作运行能力能达到预期的效果。 3 继承性。不变性并不意味着接口不再发展,接口也需要发展,可 以继承发展。接口继承与类继承不同。首先,类继承不仅是说明继承, 也是实现继承,即派生类可以继承基类的函数实现:而接口继承只是说明 继承,即派生的接口只继承了基接口的成员函数说明,并没有继承基接 口的实现,因为接口定义不包括函数实现部分。其次,类继承允许多重 继承,一个派生类可以有多个基类,但接口继承只允许单继承,不允许 多重继承。 4 多态性。所谓多态性是指发出同样的消息被不同类型的对象接收 时导致完全不同的行为。这里所说的消息,主要是指对类的成员函数的 调用,而不同的行为是指不同的实现。c o m 对象也有多态性,其多态性 通过c o m 接口体现。多态性使得客户可以用统一的方法处理不同的对 1 2 中国自油大学( 华东) 硕士论文第3 章o p c 技术基础c o m 技术 象,甚至是不同类型的对象,只要它们实现了同样的接口。如果几个不 同的c o m 对象实现了同一接口,则客户程序可以用同样的代码调用这 些c o m 对象。 3 1 3i u n k n o w 接口 所有c o m 对象必须支持i u n k n o w n 接口。应用程序通过i u n k n o w n 接口方法,能获得由同一个对象支持的,并指向其它接口的指针,还能 管理在对象上获得的接口指针。i u n k n o w n 接口定义如下【2 7 】: c l a s si u n k n o w n p u b l i c : v i r t u a l r e s u l t _ s t d c a l lq u e r y i n t e r f a c e ( c o n s ti i d & i i d , v o i d 。p p v ) = o : v i r t u a lu l o n gs t d c a l la d d r e f ( ) 。= 0 ; v i r t u a lu l o n gs t d c a l lr e l e a s e ( ) = o ; ) 一 在i u n k n o w n 接口中包含了三个成员函数:q u e r y i n t e r f a c e 函数, a d d r 硝函数和r e l e a s e ,q u c r y i n t c r f a e e 函数指向特定对象的特定接口的指 针。它允许客户查询对象以便确定它支持哪些接口。a d d r e f 和r e l e a s e 跟踪对象的引用计数,当应用程序得到接口指针p i n t e r f a c e 的访问时,它 调用p i n t e r f a c e - a d d r e f 来增加引用计数,当应用程序处理完指针时,它 调用p i n t e r f a c e - r e l e a s e 来减少引用计数。如果指定接口的引用计数为 零,接口的执行被释放。如果一个对象整体上不再带有引用指针,那么 对象被释放。 3 1 4 接口描述语言( i d l ) 在o s f 组织( o r e l ls o f t w a r ef o u n d a t i o n ,开放软件基金会组织) 的 d c e ( d i s t r i b u t e d c o m p u t i n ge n f i r o n m c n t ,分布式计算环境1 规范中,使用 了i d l ( i n t e r f a c e d e s c r i p t i o nl a n g u a g e ,接口描述语言1 来描述远程调用接 口,c o m 规范在这个i d l 的基础上,进行扩展形成了c o m 接口的描述 语言。接口描述语言提供了一种不依赖于任何语言的接口描述方法,因 此,它成为组件程序和客户程序之间的共同语言【2 8 】。 在0 p c 规范中,就是用i d l 描述了各个接口,例如i o p c s e r v c r 接 中国石油大学( 华东) 硕士论文第3 章0 p c 技术基础c o i f 技术 口的定义如下所示【冽: l l o p c d a i d l i m p o r t ”o a i d l i d l “; 工n 七e r a c ed e f i n i t i o n s 【 o b j e c t u u i d ( 3 9 c 1 3 a 4 d 一0 l l e l l d 0 9 6 7 5 0 0 2 0 a f d b a d b 3j p o i n t e rd e f a u l t i u n i q u e ) 】 i n t e r f a c ei o p c s e r v e r :i u n k n o w n h r e s u l ta d d g r o u p ( i n ,s t r i n g l p c w s t r s z n a m e v , 【i n b o o l b a c t i v e , 【i n 】d w o r d d w r e q u e s t e d u p d a t e r a t e , f i n 】 o p c h a n d l eh c l i e n t g r o u p u n i q u e ,i n l o n gp t i m e b i a s , u n i q u e ,i n f l o a t。p p e r c e n t d e a d b a n d , t i 嘲d w o r dd w l c i d , o u t l o p c h a n d l e 。p h s e r v e r g r o u p , 【o u 】d w o r d 。p r e v i s e d u p d a t e r a t e , 【i n 】 r e f i i d l i d , o u t ,i i d _ i s ( r i i d ) 1l p u n k n o w n + p p u n k ) ; ) d l 文件包括对象定义部分和实际的接口定义部分。对象定义部分 中的o b j e c t 表示定义的是c o m 接口而不是r p c 接1 2 ;u u i d 后面括号括起 来的是接口的i i d , i j p 接口的唯一标识符;p o i n t e r d e f a u l t 为除参数列表中的 指针外的所有指针指定缺省类型。实际的接口定义部分中:i n t e r f a c e 定义 接1 2 1 名称,接口必须直接或间接地从i u n k n o w n 接口派生1 2 9 1 。 在编写好i d l 文件之后,可以使用v i s u a lc + + 提供的m i d l 工具, 把i d l 接口描述文件编译成可被组件程序和客户程序所使用的c 源代码 文件。m 1 d l 在v i s u a lc + + 安装之后的v c b i n 目录下。例如用下面的命 令编译o p c d a d d l 贝产生下面的文件: 0 p c 缸h 一包含接口说明的头文件,可用于c c + + 语言: 1 4 中国石油大学( 华东) 硕十论文第3 章0 p c 技术基础c o m 技术 o p c d a _ p c 该c 文件实现了接口i o p c s e r v e r 的代理和存根; o p c d a o 一该c 文件定义了i d l 文件中用到的所有全局唯一标识 符g u l l ) ,包括接口标识符i i d ; d l l d a t a o 一该c 文件包含代理存根程序的入口函数以及代理类厂 所需要的数据结构。 3 1 5 全局唯一标识符号( g u i d ) 用于唯一地区分c o m 中的条目的标识符是一个被称为g u m ( 全局 唯一标识符) 或u u i d ( 通用唯一标识符) 的常量。g u i d 是为每个c o m 对 象提供的十六字节标识数。c o m 类至少有两个g u i d :类标识( c l s m ) 和 接口标识( r i d ) c l s i d 用于标识c o m 类,登记在w i n d o w s 注册表中, 其中含有指向包括c o m 类的d l l 或e x e 组件的路径。l i d 用于标识该 类的接口,被应用程序用来查询和触发该类的方法,也登记在注册表中。 由于对象类是由g u i d 标识的,所以必须保证它们的唯一性,才能使最 终用户在使用由不同软件商开发的组件时不会发生冲突【3 0 】。 c o m 规范采用1 2 8 位全局唯一标识符g i 兀d ,这是一个随机数,虽 然并不绝对保证唯一性,但发生标识符相重的可能性非常小。从理论上 讲,如果一台机器每秒产生1 00 0 00 0 0 个g u i d ,则可以保证( 概率意义 上) 3 2 4 0 年不重复。 下面是一个g 1 ) 的例子 ( 5 4 b f 6 5 6 7 - 1 0 0 7 - 1 1 d i - b o a r - 4 4 4 5 5 3 5 4 0 0 0 0 ) 在c c + + 语言中可以用这样的结构来描述: t y p e d e fs t r u c t _ g u i d ( d w o r dd a t a l : w o r dd a t a 2 ; w o r dd a t a 3 ; b y t ed a t a 4 8 】 ) g u i d : 于是前面的g u d 例子可以定义为 e x t e r n ”c ”c o n s tg u i dc l s i dm y s p e l l c h e c k e r = f o x 5 4 b f 6 5 6 7 ,0 x 1 0 0 7 ,o x ll d l ,1 0 y 。b o ,o x a a ,0 x 4 4 ,0 x 4 5 ,0 x 5 3 , 中国石油大学( 华东) 硕士论文第3 章o p c 技术基础c 0 h 技术 o x 5 4 0 x 0 0 o x 0 0 可以使用宏d e f i n eg u l l 3 ( n a m e 。l o n g ,w o r d ,w o r d ,w o r d ,b y t e l ,b y t e 8 ) 其中r l a l n e 是标识符的名字,其余参数是实际的d 码。类标识的命 名惯例是c l s i dc i a s s n a m e ,而接口m 的命名惯例是 u d _ i n t e r f a c e n a m e ,有两种途径来获得g u i d : 1 m i c r o s o f tv i s u a lc + + 提供了两个2 具来产生c 町mi 兀皿l g 戗e 和g u i d g e n e x e ( 大小写没有影响) 。前者是一个命令行程序,直接产生 一个g u i d ;后者是一个基于对话框的应用程序,运行g u i d g e n c 】【e ,产 生一个c r e a t eg l r d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论