




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 现场总线是应用于工业现场的、在微机化测量控制设备之间实现双向串行多节点数 字通信的系统。o p c 规范和i e c6 1 4 9 9 标准在现场总线控制系统中均属于用户层协议, 二者都基于组件技术。 文中在简要介绍微软组件对象模型( c o m ) 和o p c 技术规范的基础上,讨论o p c 服务器的设计原则、设计方法和设计步骤,以s m a r t o p c ,o p cg e n i e ,l i g h t o p c 三种开 发工具设计数据采集模块的o p c 服务器,组态软件以o p c 服务器作为中间层实体采集 来自数据采集模块的数据。结果表明,o p c 服务器能使监控软件( s c a d a ,h m i ) 以统 一方式访问现场设备,实现监控软件与设备的无缝集成,避免了为不同硬件设备开发驱 动程序的重复劳动。 利用o p c 开发库设计服务器方便快捷。文中根据服务器设计的可移植性和通用性要 求得出o p c 开发库的设计思想,以l i g h t o p c 库为基础用v i s u a lc + + 设计以d l l 为形式 的开发库,并给出标准c o m 0 p c 接口和库a p i 的设计方法以及库的使用步骤和实例。 i e c6 1 4 9 9 标准是分布式工业过程与控制系统中的功能块标准。介绍i e c6 1 4 9 9 功能 块系统的结构、优势和设计模式,使用f b d t 软件和m v c 模式创建仿真实例。提出在 w i n d o w s 平台下利用c o m 技术实现三层体系的方案,并对o p c 技术和i e c6 1 4 9 9 系统 从技术、层次和作用三方面进行比较。 关键词:现场总线;过程控制;组件对象模型;功能块:分布式控制 a b s t r a c t f i e l d b u s1 sas y s t e mw h i c hi m p l e m e n ts e r i a l ,d i g i t a l ,b i d i r e c t i o n a l ,m u l t i n o d e dd a t a c o m m u n i c a t i o nb e t w e e np c b a s e d m e a s u r i n ga n dc o n t r o ld e v i c e s ,a n d i ti s a p p l i e d i n f a c t o r yf l o o r o p cs p e c i f i c a t i o n sa n di e c6 1 4 9 9s t a n d a r db o t ha r ep r o t o c o l so f u s e rl a y e ro f f i e l d b u sc o n t r o ls y s t e m ( f c s ) ,a n db o t ha r eb a s e do ns o f t w a r ec o m p o n e n t t e c h n o l o g y a f t e ri n t r o d u c t i o nt oc o m p o n e no b j e c tm o d e la n do p c s p e c i f i c a t i o n ,d e s i g np r i n c i p l e s , m e t h o d sa n ds t e p sf o ro p cs e r v e ra r ed i s c u s s e da n ds e v e r sd e s i g n e dw i t hs m a r t o p c ,o p c g e n i ea n dl i g h t o p ct o o l sa r es u b m i r e d c o n f i g u r a t i o ns o f t w a r ea c q u i r e sr e a l t i m ed a t af r o m d a t aa c q u i s i t i o nm o d u l e ,u s i n gt h eo p cs e r v e r sa si n t e r m e d i a t ee n t i t y t h er e s u l t ss h o w st h a t o p cs e r v e rc a r lf u l f i l lt h ef u n c t i o no fa l l o w i n g m o n i t o r i n g a n dc o n t r o l s o f t w a r e ( e g s c a d a ,h m i ) t oa c c e s s f i l e dd e v i c e si nac o n s i s t e n tm a n n e r o p cm a k e st h es e a m l e s s i n t e g r a t i o no fm o n i t o r i n g & c o n t r o ls o f t w a r ea n dd e v i c e s ,a n dr e p e t i t i v ew o r ko nd e v e l o p i n g d r i v e r sf o rd i f f e :r e n tv e n d o r s d e v i c e si sa v o i d e d i ti s e a s y a n df a s tt o d e s i g n s e r v e r s u s i n gs e r v e rd e v e l o p m e n tt o o l s a c c o r d i n gt o r e q u i r e m e n t so fp o r t a b i l i t ya n dg e n e r a l i t yf o rd e s i g n i n go p cs e r v e r , ad e s i g np r i n c i p l ef o r d e v e l o p m e n tl i b r a r yi s a r r i v e da t a tt h eb a s i so fl i g h t o p cl i b r a r yac u s t o ml i b r a r yi nt h e f o r l t lo fd l li s d e s i g n e db yv i s u a lc + + t h ed e s i g n i n gm e t h o do fs t a n d a r dc o m 0 p c i n t e r f a c e sa n da p io ft h el i b r a r ya r ep r o v i d e d ,a sw e l la ss t e p sf o ru s i n gt h el i b r a r ya n ds e r v e r i n s t a n c e a r c h i t e c t u r e ,a d v a n t a g e sa n dd e s i g np a t t e r e n so f i e c6 1 4 9 9s t a n d a r d ( f u n c t i o n sb l o c k s f o rd i s t r i b u t e di n d u s t r i a l p r o c e s sm e a s u r e m e n ta n dc o n t r o ls y s t e m s ) a r ei n t r o d u c e d ,a n da s i m u l a t i o ni n s t a n c e d e v e l o p e db yf b d t u n d e rm v cm o d ei sp r o v i d e d t h ep a p e rd i s c u s s e s h o wt o i m p l e m e n t t h ea r c h i t e c t u r e u s i n g c o mt e c h n o l o g yu n d e rw i n d o w s p l a t f o r m c o m p a r i s o n b e t w e e no p ca n di e c6 1 4 9 9a r em a d ei ns c o p eo ft e c h n o l o g y , s t r u c t u r ea n d 6 m c t i o nu n d e rf c sc o n t e x t k e yw o r d s :f i e l d b u s ;p r o c e s sc o n t r o l ;c o m p o n e n to b j e c tm o d e l ;f u n c t i o nb l o c k ; d i s t r i b u t e dc o n t r o l i i 现场总线用户层协议的研究与实现 0 前言 现场总线是在微机化测量控制设备之间实现双向串行多节点数字通信的系统,也被 称为开放式、数字化、多点通信的底层控制网络,它应用于生产现场,在制造业、流程 工业、交通、楼宇等方面的自动化系统中具有广泛的应用前景。在现场总线控制系统中, o p c 技术和i e c6 1 4 9 9 标准都属于用户层协议,二者都基于组件技术,属于自动化领域 的技术创新。 在过程控制和自动化领域,开放性和可互操作性日益成为一个通用要求,这也是 o p c ( o l e f o r p r o c e s sc o n t r o l ,过程控制中的o l e ) 技术所要达到的目标。o p c 基于微 软的c o m ( 3 l e d c o m 组件技术。o p c 技术可在过程控箭和工厂自动化应用中实现软件 即插即用技术,实现从车间底层到管理层的无缝、开放、简易的通讯,使所有系统、设 备和驱动程序可自由互连与通讯。o p c 的出现使异种系统之间通讯不再需要专用驱动程 序和接口。o p c 将成为工厂控制应用的标准接口。 i e c6 1 4 9 9 标准是国际电工协会制定的分布式工业过程测量与控制中的功能块标 准。利用组件技术实现功能块。一个大的分布式工厂控制系统由多个分散设备组成,每 个设备完成一定的控制功能。由i e c6 1 4 9 9 功能块实现这些控制功能,并根据标准要求 进行功能块互连,可形成分布式控制系统。 本文主要介绍o p c 服务器和开发库的设计,同时在研究i e c6 1 4 9 9 体系结构基础上 提出其实现方案,并对o p c 技术和i e c6 1 4 9 9 标准进行比较。论文共分六章。第l 章介 绍背景知识。第2 章介绍组件对象模型和o p c 技术基础。第3 章包括o p c 服务器的设 计要求、方法和步骤,用三种方法设计o p cd a 服务器,并实现组态软件与数据采集模 块之间的互连。第4 章研究o p c 服务器开发库的设计,给出c o m o p c 标准接口和库 a p i 的实现方法。第5 章介绍i e c6 1 4 9 9 体系结构,给出体系实现方法,并对o p c 技术 和i e c6 1 4 9 9 系统进行比较。结束语中对需进一步深入研究和开发工作进行规划。 现场总线用户层协议的研究与实现 1 绪论 1 1 工业控制技术发展趋势 2 0 世纪9 0 年代以来,计算机技术、通讯技术、控制技术的发展促使控制系统向数 字式、分布式、开放、可互操作的现场总线控制系统( f c s ) 发展。与此同时,工业自 动化系统中已开始应用模糊控制、人工神经网络和专家系统等智能控制技术。制造自动 化向计算机集成制造系统( c i m s ) 发展,并行工程、精良生产、敏捷制造已开始应用: c i m s 在过程工业中的应用称为计算机集成过程系统( c i p s ) 。c i m s 的进一步发展是现 代集成制造系统( 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 gs y s t e m ) 。 现场总线( 包括工业以太网) 是工业控制技术发展的趋势,属于底层网络 1 1 。在现 场总线控制系统的用户层,国际电工协会制定的分布式工业过程测量与控制系统中的功 能块规范i e c6 1 4 9 9 标准能很好的实现与现场总线底层网络的集成,从而构建全分布、 全开放的工业控制系统。对于现存( 遗留) 监控软件( s c a d a ,h m i ) 来说,满足开放 性和可互操作性要求并实现与底层网络的集成【2 】,从而实现贯通车间底层到管理层的无 缝、开放、简易的通讯,则可借助于o p c ( o l ef o rp r o c e s sc o n t r 0 1 ) 这一中间层技术。 o p c 技术和i e c6 1 4 9 9 标准属于自动化领域技术创新。 1 2o p c 技术概述 在传统的控制系统中,智能设备之间及智能设备与控制软件之间的信息共享是通过 驱动程序来实现的。由于软件开发商对驱动程序的要求各不相同,硬件供货商不可能提 供所有驱动程序,所以这项工作主要由控制软件设计人员承担【j 】。 随着现场总线技术和pc 机在过程控制系统中的应用,网络中需进行数据访问的智 能设备不断增加;另一方面,企业中越来越多来自不同部门的人员需通过pc 机对数据 进行访问。这就需要软件设计者开发更多的驱动程序以满足需求,这种开发方式主要存 在以下弊端 4 1 :( 1 ) 每个应用必须包括每个硬件设备的驱动程序( 图l i ) ;( 2 ) 硬件性 能的变化可能导致某些驱动程序的功能故障:( 3 ) 不同应用各自含有一个独立驱动程序, 因此不能同时使用同一设备,造成对硬件设备访问的冲突。 o p c 允许应用以统一的方式读取现场数据。o p c 标准由世界主要的自动化设备制造 商与m i c r o s o f t 协商制定p j ,它基于m i c r o s o f t 的o l e c o m d c o m 技术。o p c 技术的实 质是把应用与现场设备之间的通讯转化为应用与o p c 服务器程序之问的通讯,即两个上 层应用之间的通讯,o p c 服务器负责读取现场设备数据并把数据传送给其他应用( 图 1 2 ) 。其他应用与o p c 服务器之间通讯采用c s 机制,一个服务器可同时服务于多个客 户,一个客户也可同时连接到多个服务器。利用o p c 服务器作为中间实体,现场设备层 对上层客户应用( s c a d a ,h m i ) 是完全透明的。不同的客户应用与各o p c 服务器之间, 现场总线用户层协议的研究与实现 形成条标准“软总线”1 6 】。当前的工业监控软件( s c a d a ,h m i ) 之间通讯缺乏统一 标准,利用o p c 技术形成的软总线,工业控制系统应用程序之间的通讯形成了一个接口 标准。这个接口规范不但能够应用于单台计算机,而且可以支持网络上分布式应用程序 之间通讯,以及不同平台上应用程序之间的通讯1 7j 。 具体来说,在工业控制中应用o p c 可带来以下好处:( 1 ) 硬件提供商只需提供一个 o p c 服务器程序,就可使所有客户利用它们设备;( 2 ) 软件开发者不必因为硬件的新变 化或增加的特性重写驱动程序;( 3 ) 客户选择不同服务器和设备就可构建集成制造系统。 图1 - 1i o 驱动程序问题框图 f i g 1 1 :s c h e m eo f a n “i od r i v e r p r o b l e m 图1 2o p c 形成对设备的统一访问方式 f i g 1 2o p cb u i l d st h ec o n s i s t e n tm a n n e rt oa c c e s sd e v i c e s o p c 基于c o m o l e d c o m 技术。o p c 规范定义一系列c o m 接口,但没有规定接 口的实现细节。当前o p c 标准主要包括以下规范: o p cd a t a a c c e s s l 0 & 2 0o p c 数据访问规范1 0 & 2 0 ,当前最高版本2 0 5 a o p ca l a r m s e v e n t s1 1 o p ch i s t o r i c a ld a t aa c c e s s1 0 o p c 报警和事件规范 o p c 历史数据访问规范 2 现场总线用户层协议的研究与实现 o p cb a r c h1 o o p c x m l d a ( 即出) o p c d a t a a c c e s s3 0 ( 即出) 1 3ie c6 1 4 9 9 标准概述 o p c 批处理规范 o p cx m l 数据访问规范 o p c 数据访问规范3 0 1 9 9 0 年,国际电工协会第6 5 技术委员会i e ct c 6 5 收到一个新工作建议( n w p ) , 要求将分布式工业过程测量与控制系统( i p m c s ) 中的软件模块( 称“功能块”) 的某些方 面标准化瞄j 。此n w p 中特别强调了使用“现场总线”i e c6 1 1 5 8 标准( 此标准由t c 6 5 下的分委员会s c 6 5 c 负责,当时正处于研究制定状态) 的口m c s 。但是功能块同时也 是可编程控制器使用的编程语言标准i e c6 1 1 3 1 。3 ( 由分委员会s c 6 5 b 第7 工作组 s c 6 5 b w g 7 负责定) 的基本组成部分之一。因此,t c 6 5 决定制定功能块的通用模型, 并成立了第6 工作组t c 6 5 w g 6 来负责6 1 4 9 9 计划的制定。这是i e c6 1 4 9 9 标准的由来。 另一方面,在工业实现领域,硬件和软件技术的发展促使在工业控制和自动化的末 端设备( 传感器和执行器) 里可嵌入的功能达到一个新高度。这些自治的智能末端设备 节点是实现控制功能的基本单元,通过网络可将它们连接起来形成一个完整系统。利用 基本单元组成完整的控制系统,需要有体系化的框架、方法和工具。这些框架、方法和 工具应该支持这些设备中控制功能一一知识特征( i p ) 的广泛使用,同时支持把这些设 备组合成可伸缩、可变形自动化( s f a ) 系统。这些框架、方法和工具的主要要求包括【9 j : ( a ) 面向软件组件,支持i p 封装、重用和移植;( b ) 设备互操作性;( c ) 分布和集成应用 的能力;( d ) 可伸缩性;( e ) 可扩展性;( f ) 可重构性。t c 6 5 着力制定的i e c6 1 4 9 9 标准 也是为了满足以上要求。 i e c6 1 4 9 9 标准定义了分布式i p m c s 中的功能块。功能块是一个软件功能单元, 它由一个由其类型决定的专有数据结构和相关操作组成 1 。基本功能块由事件输入和输 出、数据输入和输出、执行控制表e c c 、算法和内部数据组成( 图1 3 ) 。执行控制表是 一个事件驱动的状态机,它决定状态机的状态转换规律、状态机当前状态与输入事件的 关系、执行算法与进入新状态时发出事件的关系。算法决定功能块的功能特性。特定事 件发生时,其变化反映在相应的事件输入上,它驱动相应算法执行,算法读取输入数据, 根据输入数据和内部数据产生内部数据和输出数据的新值,最后发出一个事件并把它输 出到事件输出上。 利用现场总线设备、智能仪器和传感器构造的大型复杂控制系统,控制功能可物理 分散在许多设备中,不同设备中的软件通过通讯网络互连起来。利用i e c6 1 4 9 9 功能块 实现这些控制功能,并使功能块分散在不同设备中,则功能块互连形成分布式系统。例 如,智能压力传感器可定义成一个内嵌的模拟输入a i 功能块,它提供一组已定义的输 入和输出,如实际测量压力值、传感器标定值和错误状态。这些输入和输出可连接到其 他功能块的输入和输出,例如压力传感器错误状态就可连接到个驱动报警显示的功能 块。这种方法为控制系统的设计和改进提供了高度灵活性。 堡塑璺堡旦宝星塑坚竺堕壅兰壅塑 r e s o u r c e c a p a b i l i t i e s ( s c h e d u l i n g ,c o m m u n i c a t i o nm a p p i n g p r o c e s sm a p p i n g ) 幽1 3 基本功能块的结构 f i g 1 - 3s t r u c t u r e & b a s i cr u n i o nb l o c k 功能块的实现采用软件组件( s o f t w a r ec o m p o n e n t ) 技术,i e c6 1 4 9 9 功能块是健壮 的、可重用的软件组件。组件是可重用的软件构件,它以二进制重用代替面向对象程序 设计的源码重用。基于组件技术的开发方法,具有开放性、易升级、易维护等优点。目 前主要有c o r b a 、c o m 和j a v a b e a n s 【l l 】三种组件技术规范,具体实现时可自由选择。 一个功能块提供对局部问题的解决方法,系统设计者构建分布式控制系统时,根据需要 选择功能块,将它们进行软件互连,设计灵活,且系统可伸缩、可变形。可预见将来的 工业控制器和仪表可把功能块作为设备的一部分,或从功能块库里选择下载,而系统设 计将成为功能块选择、互连的简单工作。 i e c6 1 4 9 9 标准分为体系结构、软件工具要求、应用规则和符合行规规则四部分。 标准定义了一个通用体系结构,并制定了功能块在分布式i p m c s 中的应用规则。标准内 容包括:各种参考模型,如系统模型、设备模型、功能块模型、管理模型等;i p m c s 中 功能块的声明规则、行为规则、应用规则;管理应用、资源和设备时功能块的使用规则: 设计、实现、操作和维护分布式i p m c s 的工程支持。此体系结构以参考模型、文本语法 和阻形表示为基础,利用它们可以实现以下工程任务:功能块类型的规范和标准化:系 统功能和元素的标准化;分布式i p m c s 的规范化、分析和验证:分布式i p m c s 的构造、 实现、操作和维护:实现以上功能的软件工具间信息交互。 1 4 小结 现场总线技术是工业控制技术的发展趋势。o p c 技术和i e c6 1 4 9 9 标准属于现场 总线控制系统中的用户层协议,都基于组件技术,是当前自动化领域的先进技术。o p c 技术使异种系统之间的通讯通过标准接口进行,避免驱动程序的重复开发。依据i e c 6 1 4 9 9 功能块标准可实现分布式、开放控制系统。 4 现场总线用户层协议的研究与实现 2 组件对象模型和o p c 技术基础 2 1 软件复用与面向对象程序设计 软件开发模式的一个重要目的是软件复用。利用基于过程( p r o c e d u r e b a s e d ) 的编程 语言( c ,p a s c a l 等) 必须从最底层开始编制程序,重用代码困难,软件的复用性很低【1 2 1 。 面向对象程序设计( o b j e c t - o r i e n t e dp r o g r a m m i n g ,o o p ) 技术则可很容易的将大量问题 归纳成为一个简单的解,o o p 的核心特征包括封装性、继承性和多态性【1 3 1 。在面向对象 的语言中,程序是由可复用软件构件一一对象构造起来的,对象是程序的基本元素。对 象封装数据和数据操作方法,是良好的可复用构件。由继承关系组织起来的类层次关系, 使派生类可以方便地复用基类信息。因此,面向对象模式是一种基于复用软件的开发模 式,o o p 的使用提高了软件生产率。 2 2 组件技术与c o m o o p 的第一任务是解决软件重用性,但重用其他开发人员的代码,必须理解其他人 员的设计和编程风格以及封装在库内部的底层技术。以c + + 为例,类库开发者一般假定 库用户把库的源码当作最根本的参考材料,这种“白盒子形式( w h i t e b o xs t y l e ) ”的重 用导致客户应用和类库之间的紧密耦合关系,它降低了类库的模块化特征,使客户很难 适应库的底层变化。 另一方面,开发者编写一个容易被重用的c + + 类非常困难。除了设计时和开发时重 用的许多障碍,c + + 本身编译和链接模型也使c + + 对象模型不能成为“构建可重用软件 组件”的理想底层基础。解决办法是使用“二进制重用”代替“源码重用”。这是“组件” 概念的由来。 在组件技术概念模型下,软件系统可以被视为相互协同工作的对象集合,其中每个 对象都会提供特定的服务,发出特定的消息,并以标准形式公布,以便其他对象了解和 使用。组件间的接口通过一种与平台无关的语言i d l ( i n t e r f a c ed e f i n i t i o nl a n g u a g e ) 定 义,而且是二进制兼容的,使用者可以直接调用执行模块来获得对象提供的服务i l 。早 期类库提供的源代码级的重用,在这里用二进制重用代替,从而封装的更彻底,完全的 “黑盒孑”形式更易于模块化使用。由于组件技术的出现,将具有特定功能的组件像搭 积木一样组合起来,就可以构建目的应用。 将一个普通c + 十类做成叫。重用的二进制组件,第一步是以动态链接库形式发布这个 类。然后使用接口和实现的概念,把数据类型的实现细节封装到二进制防火墙后面,使 得对象的布局接口能随时间进化,但无需要求客户重新编译。接口是组件的和组件使用 者之间的契约:接口的确定使得组件的开发者和使用者得以分开【l ”。接下来,可用a p i 函数在运行时动态选择同一接口的不同实现( 呈现运行时的多态性) 。最后,在运行时动 现场总线用户层协议的研究与实现 态的询问对象,以确定对象是否实现了指定的接口。简而言之,以上就是组件对象模型 ( c o m ,c o m p o n e n to b j e c tm o d e l ) 16 1 。从某种意义上说,c o m 是一个更好的c + + 。 2 3 c 洲简介 2 3 1 概述 c o m d c o m 是m i c r o s o f t 公司制定的组件规范,它提供客户和组件为保证互操作性 而必须遵循的标准。遵循c o m 规范编写的组件能满足对组件架构的所有要求。微软目 前推出的c o m + 进一步发展了c o m 技术。 2 3 2 接口和组件 接口是c o m 最核心的概念。接口提供了两个不同对象之间的一种连接契约,对象 之间的信息交互通过这种契约一一接口进行。对于客户来说,一个组件就是个接口集, 客户只能通过接口才能同c o m 组件打交道。 一般用c + + 语言实现c o m 组件,此时接口用一个c + + 纯抽象基类代表。 c l a s si x p u b l i c : v i r t u a lv o i d f x l ( v o i d ) = 0 : v i r t u a lv o i d f x 2 ( v o i d ) = o ; ) ; c l a s si y p u b l i c : v i r t u a lv o i df y l ( v o i d ) = o ; v i r t u a lv o i df y 2 ( v o i d ) = o ; ; 接口是某种功能的体现,类继承此接口并实现接口中定义的虚函数,那么此类就具 有了此接口表征的功能,这就是所谓的“接口继承”。这个类此时称为“组件”。 c l a s s c a :p u b l i c i x , p u b l i c i y p u b l i c : v i r t u a lv o i d f x l ( v o i d ) ; v i r t u a lv o i d f x 2 ( v o i d ) ; v i r t u a lv o i d f y l ( v o i d ) ; 现场总线用户层协议的研究与实现 v i r t u a lv o i d f y 2 ( v o i d ) ; 图2 一l 具有多接口的组件 f i g 2 1ac o m p o n e n tw i t hm u l t i p l ei n t e r f a c e s 从数据结构角度来说,一个接口是一张c + + 虚函数表v t b l ,它包含各虚函数的函数 指针,v t b l 的指针是v p 仃。使用组件和接口实质上是通过v t b l 和v p t r 进行。 接口具有不变性和多态性。首先,接口定义一旦公布,不会再改变。当对组件升级 时,一般不修改已有的接口,而是加入一些新的接口。这样组件除了可以支持原有接口 之外,还可以支持新的接口。其次,多接口的支持能力为多态性实现提供了更多机会。 若两个组件支持同一接口,那么客户将可以使用相同方式来处理其中任何一个组件。 2 3 3c o m 接口 所有的c o m 接口必须从一个称为i u n k n o w n 的接口继承而来。i u n k n o w n 接口具有 查询组件其他接口并管理组件生命期的功能。 i n t e r f a c ei u n k n o w n v i r t u a lh r e s u l ts t d c a l lq u e r y i n t e r f a c e ( c o n s tl i d & i i d ,v o i d 4 + p p v ) 。0 ; v i r t u a lu l o n g s t d c a l la d d r e f 0 2 0 ; v i r t u a lu l o n g s t d c a l lr e l e a s e ( ) 20 ; ) ; 当和i y 都继承自i u n k n o w n 时,组件c a 的虚函数表如图2 2 所示。 图2 - 2 c a 的虚函数表 f i g 2 - 2v t b lo fc a 现场总线用户层协泌的砂究与实现 i u n k n o w n 接口中实现查询功能的是q u e r y i n t e r f a c e 0 函数,客户调用此函数查询组件 是否支持某接口。a d d r e f ( ) 弄1 r e l e a s e ( ) 函数的功能是控制组件的生命期。在组件内部维 护有一个称为“引用计数”的值,a d d r e f 增大这个值,而r e l e a s e 减小这个值,并在这 个值为0 时释放组件。 客户使用组件的过程如下:客户在创建组件时即获得组件的i u n k n o w n 接口指针, 且组件本身调用a d d r e f 增大引用计数。然后客户调用i u n k n o w n :q u e r y i n t e r f a c e 函数查 询客户需要调用的组件接口,如果组件支持所需接口,它返回接口指针给客户,客户可 立即使用此接口;如果组件不支持所需接口,返回失败代码,客户可以选择查询其他接 口或者调用r e l e a s e 以释放组件。客户组件之间的交互行为是一种c s 机制。 2 3 4 h r e s u l t 、g u i d 、注册和c o m 库函数 ( 1 ) h r e s u l t 值 c o m 组件利用h r e s u l t 值向客户提供函数运行的情况,h r e s u l t 是一个分成三 个域的3 2 位值。 ( 2 ) g u i d 、u u d 和c l s i d c o m 利用i i d 类型变量唯一地确定一个接口。l i d 是一个1 2 8 比特( 1 6 字节) 的 g u i d 结构,可保证g u i d 在空间上和时间上的唯一性。g u i d 用来标识组件时称为 c l s i d 。 ( 3 ) 组件注册 组件用c l s i d 作为索引在w i n d o w s 注册表中发布其宿主文件名,c o c r e a t e l n s t a n c e 用组件的c l s i d 作为关键字在注册表里查找此文件名,然后创建组件实例。 ( 4 ) c o m 库函数 c o m 库函数提供一些专用的c o ma p i 函数,以进行底层的c o m 操作。以下是一 些主要库函数,如c o l n i f i a l i z e ( c o m 库初始化) 、c o c r e a t e i n s t a n c e ( 创建c o m 组件) 。 2 3 5 类厂和组件的注册 类厂( c l a s sf a c t o r y ,又称类对象,c l a s so b j e c t ) 是特殊的c o m 组件,它们专门用 于创建c o m 组件,特定的类厂将创建只同特定的c l s i d 对应的组件。创建组件的标准 接口是i c l a s s f a c t o r y ,用c o c r e a t e l n s t a n c e 创建组件实际上是通过i c l a s s f a c t o r y 接口创建 的。i c l a s s f a c t o r y 的定义如下: i m e r f a c ei c l a s s f a c t o r y :i u n k n o w n ( h r e s u l t s t d c a l lc r e a t e l n s t a n c e ( i u n k n o w n + p u n k n o w n o u t e r , e o n s ti i d & i i d , v o i d + + p p v ) ; 一 h r e s u l t s t d c a l ll o c k s e r v e r ( b o o lb l o c k ) ; : 现场总线用户层协议的研究与实现 i c l a s s f a c t o r y :c r e a t e l n s t a n c e ( ) 是:g i 建相应的c o m 组件的实际执行体。 类厂的使用体现创建c o m 组件的隔离机制。类厂组件的实现代码与其对应的c o m 组件实现代码在一个宿主文件( d l l 或e x e 文件) 里,利用类厂的中转,可以将创建 c o m 组件这一过程封装起来,使客户与底层实现隔离。另一方面,如果需要创建多个 同类c o m 组件时,利用类厂可以获得更高效率,这时不需要为每个c o m 组件分, n g , l 建并释放相应类厂。 2 3 6 组件重用一一包窖和聚合 c + + 中利用包容和继承实现类代码重用,而c o m 中利用包容和聚合实现对组件的 重用。包容和聚合是一个组件使用另外一个组件的技术,这两个组件分别称为外部组件 和内部组件 c o m 包容与c + + 包容很相似。但在c o m 中,包容是在接口级完成的。外部组件包 含指向内部组件接口的指针。此时外部组件仅仅是内部组件的一个客户,它将使用内部 鲴件的接i z l 实现它自己的接口( 图2 - 3 ) 。 图2 - 3 组件的包容 图2 _ 4 组件的聚合 f i g2 3 c o m p o n e n tc o n t a i n m e n t f i g2 - 4c o m p o n e n ti n t e g r a t i o n 聚合是包容的一种变化形式。当外部组件聚合了内部组件的一个接口时,外部组件 直接把内部组件的接口指针返回给客户,外部组件不用重新实现并转发接口中的所有函 数( 图2 - 4 ) 。当外部组件将内部组件的接口指针返回给客户之后,客户就可以直接同内 部组件打交道。 2 3 7e x e 服务器 9 黝赚帆燃拳懈 耥觚嬲鬻懒舻猢龊朋:蓥醋黼瑚梨一一一 一一一 洲酮雠粕黼 现场总线用户层协泌的研究与实现 ( 2 ) 列集与散列 客户进程调用组件进程中的函数,必须解决把函数参数从客户进程地址空问传到组 件进程地址空间的问题,这个过程称为列集( m a r s h a l l i n g ) ,组件进程将函数参数接收并 解析到自身地址空间的过程称为散集( u n m a r s h a t l i n g ) 。 ( 3 ) 代理存根d l l c o m 的一个目标是让客户以相同的方式与进程内、本地及远程组件通信,这项功 能由代理存根d l l 完成。客户与一个模仿组件的d l l 进行通信,这个d l l 为客户完 成参数列集及进程间调用。这个d l l 称为代理( p r o x y ) 。一个代理就是同服务方组件行 为相同的组件。同时,组件方还需要一个存根( s t u b ) d l l ,以便对客户传来的数据进 行散集。 图2 5 代理和存根的作用 f i g 2 5 f u n c t i o no f p r o x ya n ds t u b ( 4 ) i d l 和m i d l c o m 利用i d l ( 接口定义语言,i n t e r f a c e d e f i t i o n l a n g u a g e ) 语言定义c o m 接口。 在用i d l 对接口和组件进行描述之后,利用m i d l 工具编译它可生成一系列相应c + + 头 文件( 包含c o m 接口定义等) 以及代理存根d l l 。 2 3 8 自动化和分发接口 c o m 接口分为两种。普通c + + 客户使用的接口称为自定义接口( c u s t o m i n t e r f a c e ) , 这也是一般c o m 组件必须实现的接口氇l 件还可提供给v b 以及v b a 客户使用的c o m 接口,称为自动化接口( a u t o m 撕o ni n t e r f a c e ) ,它服务于所谓的自动化( a u t o m a t i o n , 以前称为o l e 自动化) 技术。自动化服务程序实际上就是实现了i d i s p a t c h 接口的c o m 组件。简单的讲,i d i s p a t c h 接收一个函数的名称并执行这个函数。接口中i n v o k e 函数是 其功能的主执行体。自动化技术中使用的数据类型是v a r i a n t 结构。 1 0 现场总线用户层协议的研究与实现 2 3 9 多线程与套间 ( 1 ) c o m 线程和套间 w i n 3 2 应用具有界面线程和辅助线程,c o m 则有套间( a p a r t m e n t ) 线程和自由线 程。套间是由一个套间线程和一个消息循环构成的概念实体。一个进程可以有多个套间 ( 图2 6 ) 。跨越进程或套间边界的函数调用需要列集,调用同步通过消息循环实现。 幽2 6 多套间迸栏 f i g 2 - 6ap r o c e s sw i t hm u l t i p l ea p a r t m e n t s ( 2 ) 套间线程 套间线程是套间中唯一的线程。套间线程拥有它所创建的组件,一个套间中的组件 只能由相应的套间线程直接调用。另外一个进程或套间调用另一个套间中某个组件时, 此调用请求放到此套间的消息队列中,消息循环将取出此调用请求并在套间线程上执行 相应的调用。 ( 3 ) 自由线程 自由线程中创建的组件可由其他线程自由访问,创建此组件的线程并不拥有此组件, 此时由组件开发者保证对组件访问的同步。自由线程不需要消息循环。 2 4o p c 技术基础 2 4 1o p c 主要规范 o p c 主要规范包括数据访问规范、报警和事件规范以及历史数据访问规范。 一 o p c 报警与事件接口规范 1 7 】提供了一种机制,通过这种机制,当i 0 设备中有指定 的事件或报警条件发生时,o p c 客户程序可以得到通知通过这个接口,o p c 客户程序 现场总线用户层协议的研究与实现 还可以知道o p c 服务器支持哪些事件和条件,并能得到其当前状态。 历史数据引擎可以向感兴趣的用户或客户程序提供关于原始数据的额外信息。目前 大部分历史数据系统采用自己专用的接口分发数据,这种方式不能提供即插即用的功能, 从而限制了其应用范围和功能。为了将历史数据和各种不同的应用系统进行集成,可以 将历史信息认为是某种类型的数据。目前的o p c 历史数据存取规范口8 j 支持简单趋势数 据服务器和复合数据压缩及分析服务器。 o p c 标准中最重要的规范是o p c 数据访问规范( o p cd a 规范) 【l ,当前制造商 和服务器开发商提供的大部分都是o p cd a 服务器,大部分开发工具针对开发o p cd a 服务器。o p c 服务器对象提供了对数据源进行访问的接口方法,数据源可能是现场的i o 设备,也可以是其他的应用程序。通过接口,一个o p c 客户程序可以同时和一个或多个 厂商提供的o p c 服务器连接。o p c 服务器内部实现与i j o 控制设备通讯及进行设备操作 的代码。 o p c 数据存取服务器中包括三类对象:服务器( s e r v e r ) 、组( g r o u p ) 和项( i t e 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 项代表了 与服务器中的数据的连接,项对象不是c o m 对象。o p c 项不能被o p c 客户作为一个对 象进行操作。所有对o p c 项的操作都是通过包容此项的o p c 组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年眼科学科眼部疾病诊断及处理模拟考试卷答案及解析
- 2025成人高考拼音真题及答案
- 2025年免疫学自身免疫性疾病免疫治疗策略评估答案及解析
- 2025年高考数学真题第一轮专项练习:三角函数与解三角形(含解析)
- 2025年简明现代医学基础知识综合测试答案及解析
- 2025年耳鼻喉科鼻窦疾病影像学诊断实操测试卷答案及解析
- 2025黑龙江双鸭山市饶河县招募就业见习单位及招聘见习人员668人模拟试卷及答案详解(名师系列)
- 2025贵州罗甸县第一医共体板庚分院招聘合同制专业技术人员考前自测高频考点模拟试题及答案详解(全优)
- 2025年肾脏疾病透析治疗护理操作规范考核答案及解析
- 2025年放射诊断放射影像学解读技巧考核答案及解析
- 工程结算协议书
- 砖砌围墙施工方案
- 2024-2030年中国痘痘贴行业营销动态及消费需求预测研究报告
- 《人工智能导论》(第2版)高职全套教学课件
- (高清版)AQ 1075-2009 煤矿低浓度瓦斯往复式内燃机驱动的交流发电机组通 用技术条件
- 中国食物成分表2018年(标准版)第6版
- 疑问句(课件)六年下册英语人教PEP版
- 视力残疾康复服务规范
- HG T 3690-2022 工业用钢骨架聚乙烯塑料复合管
- 医院医保科绩效考核标准
- 《直播营销与运营》PPT商品选择与规划
评论
0/150
提交评论