已阅读5页,还剩53页未读, 继续免费阅读
(模式识别与智能系统专业论文)opc事件与报警服务器的开发和研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北电力大学硕士学位论文 摘要 现在随着工业过程控制越来越快地发展,报警与事件信息被越来越广泛的用在 设备的安全限制,事件检测等领域。客户要求可以连接和记录报警和事件信息,以 便以后审计和与其他历史数据比较。o p c 事件与报警服务器提供了一种标准化的事 件报警机制。本论文深入分析了o p c 事件与报警规范,o p t 事件与报警服务器的理论 基础和设计方法,给出了一个具体实现的例子来详细介绍o p c 事件与报警服务器的 实现,并对开发出的事件与报警服务器进行了测试,服务器达到了最初设计时的要 求。 关键词:o p c 技术,事件与报警,接口,c o m 对象 a b s t r a c t t o d a yw i t ht h el e v e l o fa u t o m a t i o nt h a ti sb e i n ga p p l i e di nm a n u f a c t u r i n g , a l a r ma n de v e n te r i g i n e sp r o d u c ea na d d e ds t r e a mo fi n f o r m a t i o na tt h ea r e a ss u c ha ss a f e t y l i m i t so fe q u i p m e n t ,e v e n td e t e c t i o n ,a b n o r m a ls i t u a t i o n s u s e r sr e q u i r et oc o l l e c ta n dr e c o r d a l a r ma n de v e n ti n f o r m a t i o nf o rl a t e ra u d i to rc o r r e l a t i o nw i t ho t h e rh i s t o r i c a ld a t a o p c a l a r ma n de v e n ts e r v e rp r o v i d e sak i n do fs t a n d a r dm e c h a n i s mt oc o m p l e t et h i s m i s s i o n 。t h ea r t i c l ea n a l y z eo p ca l a r ma n de v e n ts p e c i f i c a t i o nd e e p l y ,t h e n d i s c u s s e st h et h e o r yf o u n d a t i o na n dt h em e t h o do fd e s i g no fo p cs e r v e r ,f i n a l l yi n d e t a i li n t r o d u c e sh o wt ou s ed e s i g nt h eo p ca l a r ma n de v e n ts e r v e r ,a n dt h et e s to f o p ca es e r v e ri sa l s om a d e m aq i a n g ( p a t t e r n sr e c o g n i t i o na n di n t e l l i g e n ts y s t e m ) d i r e c t e db yp r o f l uh u i m i n g k e yw o r d s :o p ct e c h n i q u e ,a l a r ma n de v e n t ,i n t e r f a c e ,c o mo b j e c t 华北电力大学硕士学位论文 声明 本人郑重声明:此处所提交的硕士学位论文o p c 事件与报警服务器的开发与研 究,是本人在华北电力大学攻读硕士学位期间,在导师指导下进行的研究工作和取得 的研究成果。据本人所知,除了文中特别加以标注和致谢之处外,论文中不包含其他人 已经发表或撰写过的研究成果,也不包含为获得华北电力大学或其他教育机构的学位或 证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了 明确的说明并表示了谢意。 学位论文作者签名:刍叠日期: 堡z 区喀 关于学位论文使用授权的说明 本人完全了解华北电力大学有关保留、使用学位论文的规定,即:学校有权保管、 并向有关部门送交学位论文的原件与复印件;学校可以采用影印、缩印或其它复制手 段复制并保存学位论文;学校可允许学位论文被查阅或借阅:学校可以学术交流为 目的,复制赠送和交换学位论文:同意学校可以用不同方式在不同媒体上发表、传播学 位论文的全部或部分内容。 ( 涉密的学位论文在解密后遵守此规定) 作者签名: 日期: 蜀强 导师签名:盘麦垒! 垒: 日 期:趔l ,女:f 矿一 华北电力大学硕士学位论文 1 1 过程工业控制的现状 第一章绪论 随着计算机技术与控制技术的不断发展,分布式控制系统( d c s ) 以其集中管理、 分散控制的优点越来越多地被应用于过程控制工业领域【l l o 通常,包含分布式控制 系统的过程控制系统的信息体系结构可分为三层:现场设备管理层、过程控制管理 层和商业管理层。为了实现整个过程控制系统的正常运转,需要解决许多问题,其 中最重要的是通信兼容问题。因为现场管理层中大量的现场数据信息必须以一致的 形式提供给用户或应用程序:过程控制管理层必须将现场管理层送来的信息及时加 以处理并递交给商业管理层:在商业管理层中这些信息又以一致的形式送给客户应 用程序以简化信息的综合过程,所以解决这些问题的关键在于过程控制系统中对数 据的访问是否有一个开放的有效的通信结构,而不仅仅是数据类型的一致。 在过去的工业控制中,各种仪器、仪表、p l c 和单片机系统等都提供了与计算 机通讯的通讯协议,从而为计算机控制系统的设计提供了极大的方便。但是,在计 算机控制系统的发展过程中,由于缺乏统一的工业控制标准,不同厂商提供的协议 不同,甚至同一厂商的不同设备类型和计算机通信的协议也不相同,因此,应用程 序开发商需要不断的为设备开发驱动程序,这带来了大量重复性的开发工作,也带 来了很多问题。硬件供应商在硬件上做了一些小小改动,应用程序就可能需要重写: 同时,由于不同设备甚至同一设备的不同单元驱动程序可能不同,我们很难期望同 时对这些设备进行访问以优化操作。硬件供应商也在尝试解决这个问题,然而由于 不同客户有着不同的需要同时有着不同的数据传输协议,硬件供应商对此也束手 无策。 在计算机系统中,不同的编程语言对驱动程序的接口有不同的要求,所以每一 个客户的应用程序在从数据源( 数据库或现场设备) 读取数据的时候,由于软件和硬 件的不一致性,对不同的硬件设备都有不同的驱动程序。这样就存在许多问题:不 同硬件设备有不同的驱动程序:有多少硬件设备就需要多少驱动程序,从而使系统 中不得不包含越来越多的通信模块:硬件的升级也需要更换已有的驱动程序:由于 不同的应用程序一般有独立的驱动程序,因此,不同应用程序不能同时访问同一硬 件设备:同时,用户对硬件设备的选择也受到了极大的限制;这样就给现场管理层的 实现带来了许多困难。 1 2o p o 技术现状 o p c 标准的制定虽然主要由少数几家公司所推动,但是已制定的o p c 标准由来 1 华北电力大学硕士学位论文 自9 0 多家公司的专家参与,并参考了来自2 0 0 多个合作伙伴的评论意见,所以具 有广泛的代表性。一批国际知名的控制类公司如:a b b 、a s p e n t e c h 、e u r o t h e r m 、 f o x b o r o ,h o n e y w e l l , n a t i o n a li n s t r u m e n t s ,s i e m e n s ,t o s h i b a , j o h n s o n y o k o g a w a 、g ef a n u c 等相继宣布支持o p c 标准。在这种情况下,毫无疑 问o p c 将会在控制领域发挥重大的作用。o p c 将会成为大势所趋。目前,o p c 基金 会的全球成员大约有3 8 5 家,登记在册的已有8 0 0 多种o p c 产品。 现在许多公司正在致力于利用o p c 标准开发产品。w o n d e r w a r e 公司原来一直采 用n e t d d e 开发其软件产品,并且做得相当成功,但鉴于o p c 正在成为业界标准的 形式,现在正逐步转向采用o p c 标准开发其软件产品。u sd a t a 公司开发了一种产 品,该产品允许任何符合o p c 标准的对象加入到该公司的软件中。在已开发成功的 f i s h e r r o s e m o u n t 的d e l t av 系统中采用了o p c 技术。i n t e l l u t i o n 作为o p c 董事 会成员,在推行o p c 标准方面始终是不遗余力,现已利用o p c 技术开发出了 v i s u a l b a t c h 、f l x d y n a m a i c s 等组件产品。 o p c 技术作为一项工业标准在国内也得到了逐步推广和应用,特别是近年来引 起了广泛的关注【2 h t l 。不少高等院校、研究机构和制造厂商都开展了对o p c 技术的 研究和应用。2 0 0 0 年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 技术增强和扩展其软件功能,例如北京亚控公司的组态王,三维力控等等。 虽然在我国有越来越多的厂商推出了采用o p c 技术的产品,但其兼容性、操作 性还有待提高。因此,国内工业自动化领域的科研机构和制造厂商应加强合作,紧 紧把握住最新技术,推动我国自动控制系统及仪器仪表水平的发展。 1 3 课题提出的意义 o p c 提供了对不同厂商的设备和软件包进行内部连接的能力,在o p c 诞生前, 不同的应用程序和不同的厂商的硬件的驱动程序之间存在大量的连接问题,需要开 发各种不同的通信程序。由于o p c 标准的制定,使得所有的通信连接问题变得简单, 它提供了一种软件的总线形式,使得应用变得简单、轻巧、易于使用。应用程序只 需知道如何从o p c 数据源获取数据( o p c c i l e n t ) ,设备驱动程序只需知道如何以简 单的格式提供数据( o p cs e r v e r ) 即可进行通信。 o p c 定义了一个开放的接口,在这个接口上,基于p c 的软件组件能交换数据。 2 华北电力大学硕士学位论文 因而,o p c 为自动化层的典型现场设备连接工业应用程序和办公室程序提供了一个 理想的方法。w i n d o w s 程序的标准接口的引入,使得硬件制造商为其部件所开发的 接口程序的数量减少到一个,只需要开发一个针对o p c 服务器的接口程序:同样, 软件制造商也只需要开发唯一的通讯接口程序一o p c 客户机接口。这不但对制造商 有利,而且对最终客户也有利。 1 4 主要工作 本文在深入研究o p ch e 规范和c o m 技术的基础上进行了o p ch e 服务器的设计 和开发,给出了主要的实现方法和步骤,采用v i s u a l c + + 开发工具,完成了进程外 服务器的开发,并通过采用s o f t i n g 公司开发的客户端对该o p c 事件与报警服务器 测试,能实现规范中定义的大部分功能,验证了o p c 服务器工作的正确性,达到了 预期的效果。 鉴于目前国内在这方面的研究实践非常有限,而有价值的文字资料更是匾乏, 希望作者的尝试可以为用户更好地利用o p c 技术起到一定的借鉴作用。 3 华北电力大学硕士学位论文 第二章事件与报警规范介绍 事件与报警服务器中要用到一些o p cd a 和o p cc o m m o n 等相关技术规范的内 容【8 h 1 0 l ,不多但是必要,由于目前在工业控制领域中应用最广泛的是o p cd a 服务 器,介绍d a 的资料和文献也比较多,因此,本文不再赘述,在用到的地方说明。 2 1 o p t 事件与报警规范介绍 2 ,1 1 综述 现在随着工业过程控制越来越快地发展,应用在实践中的自动化水平正处理着 越来越多的信息【1 1 1 。报警与事件子系统被用来显示需要立即采取措施的过程域。受 关注的域包括( 但不限于) :设备的安全限制,事件检测,非正常情况等等。除执 行器以外,其他客户端软件可以连接和记录报警和事件信息,以便以后审计和与其 他历史数据比较。 报警和事件促使产生了一些额外的信息,它们必须分布到用户和对这些信息感 兴趣的软件客户。目前大多数报警事件系统用他们自己所有的接口来分发和收集 数据。一个即插即用的环境中没有能力在已存在的报警解决功能和其他功能上再增 加功能。这就需要开发者来为他们的产品重建一样的底层结构而所有其他的厂商不 得不开发和其他系统不兼容的独立的产品。 制造商和消费者想用现成的,来自厂商提供的解决方案,它们是开放的,并且 对解决规定的需要或是问题具有较高的价值。 事件与报警规范补充了但是独立于o p cd a 和o p ch d a 规范。它参考了o p c c o m m o n 规范,o p ce v e n t 服务器支持那里所规定的接口。 事件与报警服务器的类型 o p c 事件与报警服务器有几种类型,规范支持的一些关键类型是: 组件能够监测报警和或事件并能报告他们到一个或多个客户端。 组件能从多源( 是否通过订阅到其他o p c 报警和事件服务器或是通过他们自 己检测事件与报警) 收集报警和事件信息和报告这些信息到一个或多个客户。 在两者之间存在区别是因为规范不仅覆盖简单的事件与报警服务器,而且简化 更多复杂的服务器。更简单的软件组件或设备,它们能检测和报告报警和事件,不 必也实现高级的分类和过滤操作。换句话说,必选服务器接口是简单的,他支持报 告信息而不是更多。 因此,简单事件服务器可以选择限制他们提供的事件过滤功能。同时,它们也 可以选择不实现这些功能例如域浏览,激活禁止条件,和转化到项i d 。 4 华北电力大学硕士学位论文 可选对象和接口在规范附录部分被注释了,同样的,可能返回e _ n o t i m p l 的方 法也被注释了。 2 1 2 基本概念 在o p c 事件与报警服务器中定义了许多事件与报警专用的概念,要想对事件报 警服务器有比较深入的研究,这些概念的理解是最基础的,也是最重要的。对基本 概念的理解也是随着服务器的开发过程逐步加深的,本节就重点介绍这些基本概 念。 2 1 2 1 条件 一个“条件”是o p c 事件服务器的一个命名的状态,或它包含的o p c 项( 如果 也是一个o p cd a 服务器的话) 中的一个,它是o p c 客户感兴趣的。一个“报警” 只是一个条件的特例,一个被认为是不正常的和需要特别关注的。规范涉及的条件 是大体上的,不是所有特别的方法都认为的报警。 在o p c 事件服务器中,条件被o p c c o n d i t i o n 类型的对象重现,每个 o p c c o n d i t i o n 和一个o p c s o u r c e 关联,如图2 i 中所示。一个o p c s o u r c e 可以是 一个过程标签( 例如f i c l 0 1 ) 或可能是一个装置或系统。如果o p c 事件服务器也是 一个o p cd a 服务器的话,一个o p c s o u r c e 也可以是一个o p c 项。 h a sh a s o p c s o u r c e o p c c o n d b i o no p c s u b c o n d i d o n ! 箜盥型熊量ia t t n b u t e 量=墼| 丝坚! 璺 n a m en a m en a m e a c t i v ed e f i n i t i o n a c t i v e s u b c o n d i t j o n s e v e n t y 0 u a l i t y d e s c n p u o n e n a b l e d a c k e d l a s t a c k t i m e s u b c o n d l a s t a c t i v e c o n d l a s t a c t i v e l a s t i n a c b v e a c k n o w l e d g e r l d c o m m e n t 图2 - 1s e r v e ro b j e c t s 、o p c c o n d i t i o n s 和o p c s u b c o n d i t i o n s 的关系 条件可以是单状态,或多状态,一个多状态条件是一个包含多“范围”或感兴 趣的子状态的状态。例如,一个“l e v e l h l a r m ”条件可以有多个子状态包括 5 华北电力大学硕士学位论文 “h i g h a l a r m ”和“h i g h h i g h a l a r m ”,每个子状态被一个o p c s u b c o n d i t i o n ( 相 反的它不是c o m 对象) 型的对象所描述,每个o p c s u b c o n d i t i o n 和一个o p c c o n d i t i o n 关联,如图2 1 中所示。一个多状态条件的子状态必须是互斥的,如一个标签不 能同时既是h i g h a l a r m 又是h i g h h i g h a l a r m 。 子条件的基本原理是允许客户更容易的处理紧密联系的事件通知。例如,如果 状态被建模到同一个条件( “l e v e l a l a r m ”) 的子条件,一个报警显示客户检测和 正确显示f i c l 0 1 从“h i g h a l a r m ”到“h i g h h i g h a l a r m ”就比状态被建模到独立的 条件要容易的多。独立条件建模使客户在条件互斥的时候更难决定。 单状态条件只有一个感兴趣的子状态,因此只有一个子条件和它关联。一个单 状态条件的例子是一个“硬件故障”条件,在那里,一个硬件设备要么是故障状态 要么不是。 在o p c c o n d i t i o n o p c s u b c o n d i t i o n 类和实例之间维持一个清晰的不同是重要 的。当孤立的讨论一个条件或子条件时,我们很可能涉及一类条件或子条件。然而, 当和一个o p c 源联系讨论一个条件或予条件的时候,我们涉及一个特例。例如,一 个“l e v e l a l a r m ”是一类o p c c o n d i t i o n s ,而可能在过程控制系统中被许多类似的 标签定义,然而,如果我们说f i c l 0 1 是在“l e v e l a l a r m ”,我们在处理和f i c l 0 1 关联的“l e v e l a l a r m ”的特例。 2 1 2 2 条件品质 既然一个条件常常基于有品质属性的一个或多个o p c 项,条件也可以有一个关 联品质,如果过程值是“u n c e r t a i n ”,“l e v e l a l a r m ”条件也是有问题的,和o p c 项一样,条件要有一个代理品质属性,当品质改变的时候,它产生一个事件通知。 品质不像其他参数一样被处理因为它和条件有紧密联系。 只有服务器能胜任决定怎样驱动质量值,服务器也想定义一个指定的 e v e n t c a t e g o r y 来报告值的坏品质属性。 品质特性值和在o p cd a 服务器规范中定义的o p c 品质标志一致。 品质标志的低8 位目前定义了三个位域:品质,分状态( s u b s t a t u s ) 和限定 状态( l i m i ts t a t u s ) ,这8 个品质位安排如下所示: o q s s s s l l 品质字的高8 位留给厂商使用。如果这些位被用了,则标准的o p c 品质位仍必 须被尽可能精确的设置以表明客户能够对返回的数据作出什么假设。另外,任何客 户有责任解释厂商定义的品质信息以保证服务器与客户一样使用相同的“规则”。 这个商议的细节没有以这个标准定义,虽然对于一个厂商定义的接口如 i m y q u a l i t y d e f i n i t i o n s 调用服务器的q u e r y i n t e r f a c e 是一个可能的方法。 6 华北电力大学硕士学位论文 o p c 标准品质位的详细说明如下: q q 位值定义 描述 0o o s s s s l lb a d 值不可用,至于原因由s u b s t a t u s 指示。 l o i s s s s l l u n c e r t a i 值的品质是不确定的,至于原因由s u b s t a t u s n 指示。 21 0 s s s s l l n a没有被o p c 使用。 31i s s s s l lg o o d 值的品质为g o o d 。 不支持品质信息的服务器必须返回3 ( g o o d ) 。一个服务器简单的返回b a d 或g o o d ( o x 0 0 或o x c o ) ,同时对于s u b s t a t u s 和l i m i ts t a t u s 总是返回0 ,这也是可以接 受的。 推荐的做法是,客户程序最低程度地要检查所有结果的品质位域( 甚至可以不 检查s u b s t a t u s 和l i m i ts t a t u s 域) : 即使当显示一个“b a d ”值时,值域的内容仍必须是一个良好定义的v a r i a n t , 虽然它不包含一个精确的值。这是为了简化客户应用程序的错误处理。例如:客户 在同步读的结果上总是期望调用v a r i a n t c l e a r ( ) 。, 如果服务器没有已知的返回值,则可返回一些合理的默认值,如一个空字符串 或一个0 数字值。 分状态位域 该域的安排依据品质域的值而定。 对应于b a d 品质的分状态: s s s s 位值定义描述 o0 0 0 0 0 0 l l n o n s p e c i f i c该值为b a d ,但不知道明确的原因。 l0 0 0 0 0 1 l l c o n f i g u r a t i o n服务器存在一些与配置有关的特定问题。 e r r o r 例如在考虑中的项对象已经从配置中删 除。 20 0 0 0 1 0 l ln o tc o n n e c t e d输入需要被逻辑连接到某些东西上但没有 连接。该品质可能反映此时没有有用的值, 原因是因为数据源还没有提供值。 30 0 0 0 11 l ld e v i c e 侦查到一个设备故障。 f a i l u r e 40 0 0 1 0 0 l ls e n s o r 侦查到一个传感器故障( 在某些情形中“限 f a i l u r e 定”域可以提供附加的诊断信息) : 50 0 0 1 0 i l ll a s tk n o w n通信失败。然而,最后一个已知值是可利 v a l u e用的。注意,该值的“年龄”可由 o p c i t e m s t a t e 中的t i m e s t a m p 来确定。 60 0 0 1i o l lc o m mf a il u r e 通信失败。没有最后一个可利用的已知值。 7 华北电力大学硕士学位论文 70 0 0 l l i l lo u to fs e r v i c e块已经中断扫描,或者在其它方面被锁定。 如果项对象或包含项对象的组对象的激活 状态是非激活时,该品质也可以使用。 80 0 1 0 0 0 l l w a i t i n g f o r项对象被添加到一个组对象后,对于服务 i n i t i a ld a t a 器来说,实际上从这些项对象获得数据可 能要花费一些时间。这种情况下,在值可 得到之前,客户程序可能执行一个读操作 ( 从缓存) ,或者建立一个基于订阅的连接 点,同时或者执行关于这样一个订阅的刷 新。该分状态仅在o p cd a3 0 或更新的服 务器中可用。 9 1 5n a 保留待将来的o p c 使用。 不支持分状态的服务器应该返回0 。注意,品质设置为b a d ( 0 ) ,且分状态设置 为5 时,可能会返回一个“旧”值。这是为了与f i e l d b u s 规范保持一致性。这是客 户程序可以假定一个“b a d ”值仍然可用于应用程序的唯一的情形。 对应于u n c e r t a i n 品质的分状态: s s s s 位值定义 描述 00 1 0 0 0 0 l l n o n s p e c i f i c没有该值为什么为u n c e r t a i n 的明确的原 因。 l0 1 0 0 0 1 l ll a s tu s a b l e无论写该值的哪一种操作都已经停止。返 v a l u e 回值应该被认为是“腐化”的。注意,这 个与b a d 值的分状态5 ( l a s tk n o w nv a l u e ) 不同。该状态特定与关于“取”值的一个 可察觉通信错误相关联。这个错误与在一 个可接受的时间周期内对某些东西进行赋 值的某些外部源的故障关联。注意,该值 的“年龄”可由0 p c i t e m s t a t e 中的 t i m e s t a m p 来确定。 2 - 3 n a 没被o p c 使用。 40 1 0 1 0 0 l ls e n s o rn o t值被限制在传感器的一个范围之内( 在这 a c c u r a t e 种情况下“限定”域应该设置为i 或2 ) , 或者通过某种形式的内部诊断,传感器在 其它方面超出了标度( 在这种情况下“限 定”域应该为0 ) 。 5 0 1 0 i o i l l e n g i n e e r i n g返回值超出该参数所定义的范围。注意, u n i t s 在这种情况下,( 由f i e l d b u s 规范) “限定” e x c e e d e d 域表明超出了哪一个范围,但没有必要暗 示该值不能移出范围之外更远的区域。 60 1 0 11 0 l ls u b n o r m a l 值来自多个数据源,且小于所需的g o o d 数 据源的数量。 7 1 5 n a保留待将来的o p c 使用。 8 华北电力大学硕士学位论文 不支持分状态的服务器应该返回0 。 对应于g o o d 品质的分状态: s s s s 位值 定义 描述 o11 0 0 0 0 l l n o n s p e c i f i c该值为g o o d 。没有明确的条件。 1 5 n a没被o p c 使用。 6 1 l o l l o l ll o c a l 值已经被超驰。典型地这意味着输入已经 o v e r r i d e 断开,“强迫”加进了一个手动输入值。 7 1 5n a 保留待将来的o p c 使用。 不支持分状态的服务器应该返回0 。 限定位域 不管品质和分状态如何,限定位域都是有效的。在诸如传感器故障的某些情形 下可以提供有用的诊断信息。 l l 位值定义描述 0q q s s s s 0 0n o tl i m i t e d 值可以不受限制的上升或下降。 1 q q s s s s 0 1 l o wl i m i t e d 值已经被限制在某些低限下。 2 q q s s s s i o h i g hl i m i t e d值已经被限制在某些高限下。 3q q s s s s l1c o n s t a n t 值是一个常量,不能变化。 不支持分状态的服务器应该返回0 。 这些位域的值和掩码的等价符号在o p c 头文件的“q u a l i t y ”部分被定义。 2 1 2 3 条件定义 条件定义是服务器级别的。一些例子: 1 一个布尔表达式在一个或多个o p c 项上,如f i c i o i p v 1 0 0 f i c i o i p v r e g i s t e r c l a s s i m p l c a t e g o r i e s ( c l s i d ,1 ,r g c a t i d ) : i f ( p c r ! = n u l l ) p c r 一 r e l e a s e ( ) : r e t u r nh r : 本服务器使用在c a t h e l p c p p 中定义的帮助函数来做对i c a t r e g i s t e r 实际的 1 7 华北电力大学硕士学位论文 调用,服务器注册和反注册组件类别的函数如下: 注册服务器 v o i dr e g i s t e r s e r v e r ( ) 注册组件类别 h r e s u l th r : h r = c r e a t e c o m p o n e n t c a t e g o r y ( i i d _ o p c e v e n t s e r v e r c a t i d , o p c e v e n t s e r v e r c a t d ) e s c ) : h r = r e g i s t e r c l s i d i n c a t e g o r y ( c l s i d _ o p c e v e n t s e r v e r , ii d _ o p c e v e n t s e r v e r c a t i d ) : 注销服务器 v o i du n r e g i s t e r s e r v e r ( ) u n r e g i s t e r c l s i d i n c a t e g o r y ( c l s i d o p c e v e n t s e r v e r , ii d o p c e v e n t s e r v e r c a t i d ) : 3 2 3c o m 线程 c o m 中有两种线程类型:套间线程和自由线程。这两种线程都各有一个主函 数。套间线程的主函数中调用c o i n i t i a l i z e 函数,有消息循环;自由线程主函数调 用c o l n i t i a l i z e e x 函数,而且其d w c o l n i t 参数必须指定为c o i n i t _ _ h 1 i u l t i t h r e a d e d , 没有消息循环。 c o m 对象运行在套间线程中时,它属于创建此对象的套间线程所有,并永远 运行在此线程中。套间线程通过消息循环调用有关的消息控制函数,不需要附加同 步处理。如果其他线程( 即客户线程) 要调用该c o m 对象的成员函数,必须通过消 息循环由消息分发机制来进行。由于两个线程使用不同的堆栈,使得跨线程调用如 同跨进程调用一样,需要通过代理存根模块进行,效率因此有所降低。 c o m 对象运行在自由线程中时,同进程中的其他线程( 即客户线程) 调用 此对象的成员函数可以直接进行。但是,由于同一个c o m 对象可能会同时被多 个客户线程调用,因此,运行在自由线程中的c o m 对象必须进行同步处理,以 保证其线程的安全特性。 c o m 线程特性是针对特定的c o m 对象,而不是针对c o m 组件程序,所以, 即使是同一个o p c 服务器中的两个对象,也可以一个运行在套间线程,而一个 华北电力大学硕士学位论文 运行在自由线程。 该o p c 事件与报警服务器中使用的是自由线程,因此需要进行同步控制。以服 务器对象为例,在服务器对象的实现中创建了两个线程,一个线程用于检测事件 是否被发送,当该事件发生或者超时的情况下,该线程即可继续进行;另一个线 程用于从模拟的事件源读取事件和报警信息。 3 2 4o p c 事件与报警服务器中的数据访问方式 o p c 客户对o p c 服务器进行数据访问包括数据的读取和写入,主要有2 种实 现方式:同步方式和异步方式。在同步方式中,服务器按照客户的要求把访问结果 返回给客户,之前客户一直等待,不能执行其它任何操作【1 7 l d 埘。同步方式实现简单, 但效率不高,只适用于客户数目较少而且访问的数据量也较少的情况。在异步方式 中,客户向服务器提出访问要求后就立即返回,继续处理其他事务。当服务器完成 访问后,触发异步访问完成事件,将访问结果传送给客户。相比较而言,异步方式 中对客户的要求和访问完成事件的处理是分别进行的,必须有事务识别功能,开 发难度较大。但是由于可以并行处理,对访问性能影响不大,特别是在客户较多和 数据交互量较大的时候,异步方式的效率更高。 实现异步访问方式的机制有两种:通报连接机制和可连接对象机制,在进行服 务器的开发工作时,为了兼容不同版本的o p c 规范,这两种异步访问机制需要分 别实现。由于通报连接机制中,数据对象直接管理与客户方接收器对象的连接。这 种机制实现比较简单。下面主要介绍可连接对象机制。 在这种通信机制中,涉及到三种既独立又相关的部分:接收器,可连接对象 和连接点对象。接收器是一个c o m 对象,位于客户程序内部,不需要通过c o m 库来 创建。可连接对象支持一个或多个出接口,它通过i c o n n e c t i o n p o i n t c o n t a i n e r 管 理所有的出接口。对应于每一个出接口,可连接对象又管理了一个连接点对象,每 个连接点对象实现了i c o n n e c t i o n p o i n t 接口,客户通过连接点对象建立接收器与 可连接对象之间的连接。由于连接点对象位于可连接对象的内部,所以连接点对象 既可以访问可连接对象的内部信息,也可以访问客户方的接收器。它们之间的对应 关系如图所示。 一个接收器可以被多个可连接对象使用,可以通过引用计数来控制接收器的 生存状态。反过来,每个可连接对象也可以连接多个接收器。它们之间可以形成一 对多,多对一的关系。 1 9 华北电力大学硕士学位论文 图3 - 5 可连接对象、连接点对象和接收器之间的结构关系 在o p cr e 服务器中,服务器对象和事件订阅对象分别都实现了 i c o n n e c t i o n p o i n t c o n t a i n e r 接口。下面以服务器对象的i c o n n e c t i o n p o i n t c o n t a i n e r 接口来说明如何与客户建立和断开连接。为实现与服务器对象的交互,接收器对象要实 现i o p c s h u t d o w n 接口。 建立连接时,客户首先需要得到该服务器对象的i c o n n e c t i o n p o i n t c o n t a i n e r 接 口的指针,然后客户调用f i n d c o n n e c t i o n p o i n t ,调用成功则表明服务器对象支持该 出接口i o p c s h u t d o w n 。之后,客户需要实例化一个实现了i o p c s h u t d o w n 接口的接收器 对象,得到其接口指针。客户调用a d v i s e 函数建立与该连接点对象的连接。服务器对 象保存该接收器对象的接口指针。断开连接时,客户需要调用u n a d v i s e 函数,然后再 调用r e l e a s e 函数释放该连接点对象指针。 建立与事件订阅对象的连接与断开连接过程与服务器对象类似,只需改变其中某 些参数即可。客户通过调用服务器实现的1 0 p c e v e n t s u b s c r i p t i o n m g t 接口的r e f r e s h ( ) 等方法来使用该连接。 如上所述,可以绘出o p c 服务器与客户端通讯的模型图如下: 图3 - 6o p c 服务器与客户通信模型 2 0 华北电力大学硕士学位论文 3 2 5 数据的结构与类型 3 2 5 1 数据结构 在设计事件与报警服务器的时候,其中会有许多在事件与报警服务器规范中定义的 结构体和数据结构,它们包含在i d l 文件中,编译时自动生成定义文件,需要开发者实 现,如:o n e v e n t s t r u c t ,o p c e v e n t s e r v e r s t a t u s ,o p c c o n d i t i o n s t a t e ,甚至有些需要 开发者自己定义并实现,如:i n f o e v s u b ( 事件订阅信息) 。在处理这些问题的时候就要 在遵守规范定义的前提下最大范围的提高这些数据结构的效率和质量。 下面以一个例子说明,在服务器对象中c o p c e v e n t s e r v e r :g e t s t a t u s 函数用来实 现查询服务器的各种状态信息,如:开始时间,当前时间,最后更新时间,服务器状态, 厂家信息,主要版本号等。其中要用到一个规范中定义的结构体o p c e v e n t s e r v e r s t a t u s , 其结构如下: t y p e d e fs t r u c t f i l e t i m ef t s t a r t t i m e :开始时间 f i l e t i m ef t c u r r e n t t i m e ;当前时间 f i l e t i m ef t l a s t u p d a t e t i m e :最后更新时间 0 p c e v e n t s e r v e r s t a t ed w s e r v e r s t a t e :服务器状态 w 0 r dw m a j o r v e r s i o n :主要版本 w o r dw m i n o r v e r s i o n ;次要版本 w o r dw b u i i d n u m b e r :修改次数 s t r i n g l p w s t rs z v e n d o r l n f o :厂商信息 0 p c e v e n t s e r v e r s t a t u s : 这个结构体中包含了函数中需要的各种信息,用来将这些信息提供给客户端,客户 端还可以通过周期性的访问它,来确定服务器是否在连接中是否可用。 在服务器启动时初始化各种信息,调用本函数时可以先定义一个指针,给结构体分 配一定的内存空间,将结构体内的各个属性赋值,成功后再将指针指向函数的出口指针, 最后释放内存空间。当中还包含一些错误处理。 3 2 5 2 数据类型 在服务器的实现过程中,同时也涉及一些不是很经常使用的数据类型,以 q u e r y e v e n t a t t r i b u t e s 函数为例, v i r t u a lh r e s u l ts t d m e t h o d c a l l t y p eq u e r y e v e n t a t t r i b u t e s ( 宰 i n 木d w o r dd w e v e n t c a t e g o r y , 书 o u t 术d w o r d r p c f a r * p d w c o u n t , 2 1 华北电力大学硕士学位论文 宰p p d w a t t r i d s , 丰 s i z e i s s i z e i s o u t 】木d w o r d r p cf a r 木r p cf a r 木 s i z e i s s i z e i s o u t 宰l p w s t r r p cf a r 木r p cf a r 幸p p s z a t t r d e s c s , s i z e i s s i z e i s o u t 拳v a r t y p e r p c f a r 宰r p c f a r 卑p p v t a t t r t y p e s ) : 其中参数p p v t a t t r t y p e s 的数据类型为v a r t y p e ,v a r t y p e 的成员列表及说明如 下: 成员名称说明 。 v ta r r a y指示s a f e a r r a y 指针。 瞄黼溺蓊瓣鳓瀣黼黼黼嘲一一_ 雕嘲圈曩_ 雕 v tb l o b 指示以长度为前缀的字节。 v tb l o bo b 】e c t 指示b l o b 包含对象。 v tb 0 0 l 指示一个布尔值。 v tb s t r指示b s t r 字符串。 隧鳓滚磊勰黼辅瓣黼黼目_ 自翻删嘲鞲啊麟蠛嘲霸嘲黼氍隰 v tb y r e f指示值为引用。 v tc a r r a y 指示c 样式数组。 v tc f 指示剪贴板格式。 v tc l s i d 指示类i d 。 v tc y 指示货币值。 v td a t e指示d a t e 值。 v td e c i m a l指示d e c i m a i 值。 v td i s p a t c h 指示i d i s p a t c h 指针。 v te m p t y 指示未指定值。 v te r r o r指示s c o d e 。 、,tf i l e t i m e指示f i l 盯i m e 值。 v th r e s u l _ t指示h r e s u l t 。 华北
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全叉车理论考试参考题库及答案3套全
- 2020秋九年级化学上册 第二单元 我们周围的空气 课题2 氧气说课稿 (新版)新人教版
- 摄影基础知识题库
- 2024年秋九年级化学上册 5.1 质量守恒定律说课稿 (新版)新人教版
- 《电工基础知识》考试题与答案
- 7.2 弹力 说课稿 (教学评一体化) -2025年人教版八年级下册物理
- 业务数据分析与报告生成模板
- 2025年重庆市国家保安员资格考试题库(完整)
- 教师资格证科二考试题
- 保险销售从业人员基础知识培训考试试题(附含答案)
- 物流园区及货运站场规划设计方案
- 赵匡胤:中国北宋时期的开国皇帝2
- 人为因素对飞行安全
- 消防泵房设施设备巡检表
- 污水处理设施运维服务投标方案(技术方案)
- 森林防火通道施工方案
- 模块5 捣固车保养及常见故障处理《铁路大型捣固设备与运用》教学课件
- 海龟汤题目和答案全套
- 致To温州万豪商务大酒店人力资源部
- 富贵包形成原因和治疗方法
- 《电工技术基础与技能》教学教案
评论
0/150
提交评论