




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
青岛农业大学本科生毕业论文(设计)题 目: OPC技术在工业控制系统中的应用研究 姓 名: 李伟 学 院: 机电工程学院 专 业: 电气工程及其自动化 班 级: 2003.4 学 号: 0320030369 指导教师: 鞠全武 完成时间: 2007.6.18 2007年6 月18日IIOPC技术在工业控制系统中的应用研究摘 要随着计算机技术的不断发展,应用于工业控制领域的软件与硬件设备的种类也越来越丰富,系统集成变得越来越复杂与困难。所以,无论是对于客户还是开发者而言,一套统一、通用的标准是非常必要的。OPC DA主要是提供现场层和应用软件间的纵向的数据集成和互操作。OPC客户端能通过标准接口与一个或多个不同提供商的服务器通信。OPC DX由于定义了一个通用的接口,使得不同总线协议的设备和控制器通过以太网进行直接数据交换成为可能。本文首先分析了OPC概况及优点,仔细研究了一下OPC的各种规范。在弄清OPC服务器的结构及实现步骤的基础上,进行了服务器的测试及仿真试验。包括了服务器的注册及实现程序,并进行了简单的模拟仿真,并验证了OPC技术的软件开放性。关键词: OPC;开放性及互操作性;OPC数据访问;OPC数据交换Application and Study ofOPC for Industrial Control SystemAbstractWith the development of computer technology, more and more software and hardware are used in industry control field and system integration becomes harder than before. So it is very necessary to use the same standard to communication for both user and vendor.OPC Data Access primarily provides vertical data integration and interoperability between measurement and automation systems on the manufacturing floor and client application. OPC client applications can communicate with one or more OPC servers from different suppliers. OPC Data exchange makes it possible by defining a set of interfaces that provides interoperability and allows data exchange among devices and controllers connected to Ethernet networks using different field bus protocols. This text first analyzed OPCs general situation and its advantage, and understands various OPC carefully. On the base of understanding the structure of the OPC server and the realization procedure, designed an imitate true model experiment. Included the register and realization procedure of the server, and carried on a simple imitate true experiment, and proved the OPC software techniques openness.Key words:OPC;Openness and Interoperability;OPC DA;OPC DX目 录摘 要IAbstractII第一章 绪论11.1 引言11.2 工控软件的发展11.2.1 传统的工业控制系统开发存在的问题11.2.2 采用OPC技术开发工业控制系统21.3 OPC技术的优点31. 4 国内外研究的现状41.4.1 OPC技术在国外的现状41.4.2 OPC技术在国内的研究和应用41.5 研究课题的提出5第二章OPC规范的内容62.1概述62.2 OPC数据存取(Data Access)规范72.3 OPC报警与事件(Alarm and Event)规范92.4 OPC历史数据存取(Historical Data Access)规范102.5 OPC安全规范102.6 OPC批处理规范112.7 OPC-XML规范122.8 OPC数据交换规范及适用范围12第三章OPC服务器的开发与实现133.1 OPC服务器的总体结构133.2 OPC服务器程序实现步骤143.3 OPC服务器的注册及程序的实现143.3.1 OPC服务器组件的注册143.3.2 OPC服务器程序的设计153.4 OPC DA服务器接口的实现及组对象的设计173.4.1 OPC DA服务器接口的实现173.4.2设计OPC DA组对象193.5 OPC服务器的读取过程213.5.1 同步读取213.5.2 异步读取21第四章 服务器测试及模型仿真设计234.1服务器测试234.2 OPC客户测试过程234.2.1初始化服务器组件234.2.2建立与OPC服务器的连接:234.2.3获取服务器标签列表:254.2.4添加OPC组和项264.2.5数据的刷新及断开连接274.3测试结果274.4.模拟仿真304.5监控系统结构设计304.6 OPC接口开发314.6.1 定义全局变量314.6.2 连接服务器程序324.6.3数据更新函数334.6.4 OPC数据项写数据程序33第五章 总结34参考文献35致谢36青岛农业大学机电工程学院本科毕业设计第一章 绪论1.1 引言随着计算机技术与控制技术的不断发展,分布式控制系统以其集中管理、分散控制的优点越来越多地被应用于过程控制工业领域。在过去的工业控制中,各种仪器、仪表、PLC和单片机系统等都提供了与计算机通讯的通讯协议,从而为计算机控制系统的设计提供了极大的方便。但是,在计算机控制系统的发展过程中,由于缺乏统一的工业控制标准,不同厂商提供的协议不同,甚至同一厂商的不同设备类型和计算机通信的协议也不相同,因此,应用程序开发商需要不断的为设备开发驱动程序,这带来了大量重复性的开发工作,也带来了很多问题。同时,由于不同设备甚至同一设备的不同单元驱动程序可能不同,我们很难期望同时对这些设备进行访问以优化操作。在此背景下,1995年由国际上具有代表性的几个工业制造自动化领域的公司如Intellution,Fisher-Rosemount,Intuitive Technology,Opto22, Rockwell Software及它们的技术顾问微软公司共同发起成立了OPC标准化组织OPC Task Force,协作制定了专用于工业过程自动化的接口标准OPC (OLE for Process Control)。它为从数据源提取数据并传输到应用层提供了一种标准途径,是一种开放、高效的通信机制,使得控制软件可以灵活、稳定地对硬件设备进行数据存取操作,系统应用软件之间也可以灵活地进行信息交互,极大提高了控制系统中软件互操作性和和设备的互换性。1.2 工控软件的发展1.2.1 传统的工业控制系统开发存在的问题工控系统的发展经历了从单机系统,到集中分布式系统,集散DCS系统,FCS系统的发展过程,总的发展趋势是向开放性方向发展。传统的工业控制系统由于不具备开放性,各个部分的联系过于紧密,使系统过于复杂。这样系统的更新,扩展,升级变得非常困难。对一系统的任何一部分进行修改,都有可能对其它部分造成影响,从而导致大量繁琐的软硬件修改工作。传统的工业控制系统开发中出现的一个主要问题是软件的重复开发,软件不能够重用,资源不能共享,造成大量人力与物力资源的浪费。高级语言函数库的使用,实现了一定程度上资源的共享。面向对象语言中对象方法的引入,使得我们可以利用面向对象的继承等方法大量重用源代码。但这些重用只是对源代码级的重用而不是对可执行文件级的重用。同时,不同的开发语言所编写的代码之间不通用,也大大限制了软件的重用。下图描述了传统工业控制系统的开发模型。上位机监控系统设备1设备2设备3软件模块软件模块软件模块物理接口现场控制系统图1-1传统工业控制程序的开发示意图1.2.2 采用OPC技术开发工业控制系统OPC是OIE for process control的缩写,O代表OLE(对象链接和嵌入),P(process过程),C(control控制),意思是把OLE用于工业控制领域。OPC已经成为一个工业标准,它是由一些世界上著名的自动化系统硬件、软件公司和Microsoft微软紧密合作而建立的。管理OPC标准的组织是OPC基金会。其前身由一个Fisher-Rosemount、Rockwell Software、Siemens、Opto22、Intellution和Intuitive technology等著名大公司组成专门的工作组,仅仅用了短短的一年时问便开发出一个基本的可运行的OPC技术规范。在1996年8月发布了简化的、一步到位的解决方案。OPC规范采用客户服务器模型,建立了一套在硬件供应商和软件开发商之间相互遵循的规则。只要遵循这套规则,数据交换对两者来说都是透明的,硬件供应商无需考虑应用程序的多种需求和传输协议,软件开发商也无需了解硬件的实质和操作过程。不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。下图描述了使用OPC技术后工业控制系统的开发过程。OPC客户软件模块软件模块OPC客户软件模块上位机监控系统OPC客户OPC接口OPC服务器物理接口现场控制系统物理设备3物理设备2物理设备1图l-2基于OPC客户服务器模型的工业控制系统结构图1.3 OPC技术的优点OPC标准的关键在于它提供了一种高效的通信机制,它所关心的是现场数据的存取方式而不是实际的数据类型,它给工业控制软件提供了一种一致的存取现场设备数据的方法,使得利用OPC在工业控制系统的构建中体现出巨大的优势。从图1-2的系统互联模型可知,OPC技术的引入不但使系统结构简化,而且无论供应商还是最终用户都可以从OPC技术中得到巨大的益处的。首先,OPC技术把硬件和应用软件有效地分离开,过程控制的硬件厂商只需要将硬件驱动程序封装成一套符合OPC规范的服务器。工控软件公司开发的任何带有OPC接口的应用软件就可采用统一的方式对不同硬件厂商的设备进行存取操作,无需重复开发单独的驱动程序。硬件设备厂家不必再把时间花在如何与各种不同的软件进行通讯上。一旦硬件升级,只需修改OPC服务器端I/O接口部分,无需改动客户端程序。其次,驱动程序的开发工作由熟悉该硬件性能的硬件提供商完成,从而能够最大限度地挖掘硬件的潜力,驱动程序的性能往往会更高。硬件驱动程序封装成OPC DA服务器后,相对于上层应用程序硬件的性能特征和通讯协议是不可见的,使硬件提供方的技术得到了保护。第三,对用户来说,OPC意味着开放性。由于无需担心互操作性,在选择和更换软硬件时有了更多的余地,不再局限于从单一的厂商购买专用成套系统。用户可以将重点放在以更有效、快捷的方式构造整个系统的功能及应用上,这也意味着成本的降低。1. 4 国内外研究的现状1.4.1 OPC技术在国外的现状为了推广和发展OPC技术,1995年由五家国际上具有代表性的几个工业制造自动化软件领域的控制类公司Intellution,Technology,Opto22,Software等及它们的技术顾问微软公司共同发起成立了OPC标准化组织OPC Task Force,并将其起草的有关OPC标准的几项规定发布到其Web站点上,向来自用户和制造商的260余个OPC评论单位征询意见,最后经其顾问微软公司的OLE专家进行认证,颁布了OPC1.0。1996年在芝加哥举行的ISA/96会议上成立了OPC基金会(OPC Foundation)接替OPC Task Force的工作,以吸收更多的会员单位参加,使其真正成为一项为各方所接受的、开放的标准。基金会的宗旨是在向会员提供范围广泛、形式多样的利益的同时,宣传和推广OPC的技术规范,使用户了解其易于实现和开放的特点,及其便于灵活、高效、方便地获取数据的功能。在OPC规范已经发展成了一个很广泛的体系。就数据访问标准来说,1997年9月11日发布1.0版OPC标准后,1998年4月10日发布了2.0版OPC标准,到现在己经发布OPC DA 3.0标准(2003年3月5日)。在国外,几乎所有的著名工业自动化软件都是基于Windows平台开发的,都采用或部分采用了OPC技术。1.4.2 OPC技术在国内的研究和应用相比之下,国内工业过程控制和仪器仪表行业在OPC标准的推广和应用方面相对落后。不过,国内已经很快认识到了OPC技术的重要性,并与OPC基金会合作成立了OPC中国基金会(2001年12月9日),参与在中国推广和宣传OPC,但是从最新的OPC基金会的名单()来看,在400多个基金会员中,中国只有少数几家高等院校、研究机构和制造厂商。国内许多公司都纷纷在自己的产品中增加OPC特性,包括为控制应用软件添加OPC客户端的功能,为现场设备提供OPC服务器等。比如,沈阳自动化研究所在开发新一代分布式控制系统时就采用了OPC技术,实现了上层应用软件通过OPC服务器访问现场设备信息的功能,同时包括它在内的一些研发机构还开发了OPC可视化开发软件包和相应控件。此外,OPC DA实现了基于XML技术的开发应用,实现远程和跨平台的数据交换,使Web Services应用于控制领域的企业中1。1.5 研究课题的提出从OPC技术的应用和开发来看,OPC DA数据访问规范是核心,在工业控制系统的实际应用也最广泛,应用软件中OPC DA几乎成了必须的接口标准。基于工业以太网的控制系统己经成为比较流行的趋势,而且OPC DA就做为一种开放的软件技术在系统的集成中获得应用。本文跟踪OPC的最新技术,提出将OPC DA和OPC DX技术与工业以太网结合的全集成控制系统,不但使得系统的在纵向和横向都能开放集成,而且,改善了采用OPC“中间件”方案中实现异种总线网段之间数据交换的实时性。总之,本论文课题将致力于OPC内部机制的研究和实现,从而为开发OPC具体应用提供良好的参考价值,促进利用OPC技术实现工业控制信息系统朝着开放的方向的发展。第二章OPC规范的内容2.1概述OPC规范涉及如下领域:(1)在线数据监测。(2)报警和事件处理。(3)历史数据访问。(4)远程数据访问。(5)安全。(6)批处理。(7)历史报警事件数据访问。OPC规范定义了两套接口标准,包括自动化接口标准(Automation lnterface Standard)和自定义接口标准(Custom lnterface Standard)。自动化接口是为了向VB之类的脚本语言编写的客户程序提供服务,而自定义接口适用于C和C+应用程序,它比自动化接口更高效,功能更强大。VB应用程序和C+应用程序与OPC服务器连接的示意图如下所示:C+应用程序VB应用程序OPC服务器(进程内,进程外,远程服务器)OPC自定义接口OPC自动化接口厂商待定处理逻辑模块图2-1 OPC接口OPC客户应用程序通过特殊的自定义(custom)接口或自动化(automatic)接口与OPC服务器进行通讯.OPC服务器必须实现自定义(custom)接口,可以选择实现自动化(automatic)接口。典型的OPC系统接口如下OPC自动化包装器设备数据物理设备服务器数据缓存本地或远程服务器C+应用程序VB应用程序 OPC自动化 接口 OPC自定义接口图2-2 典型的OPC系统结构OPC服务器应该提供有效地与物理设备通讯的方式,以优化不同的客户程序对数据的访问。对输入(读操作)来说,物理设备返回的数据被缓存,通过同步或异步的方式提供给客户:对输出(写操作)来说,OPC服务器应该代替客户向物理设备更新数据。OPC规范包括:1. OPC数据存取(Data Access)规范2. OPC报警与事件(Alarm and Event)规范3. OPC历史数据存取( Historical Data Access)规范4. OPC安全(Security)规范5. OPC批处理(Batch)规范6. OPC服务器数据交换(Data eXchange)规范7. OPC_XML规范2.2 OPC数据存取(Data Access)规范数据访问接口标准(Data Access Custom Interface Standard)实现了实时数据的同步,异步读写访问和数据自动刷新,通过COM的连接点技术实现了服务器方到客户方的通讯,即定时或当数据变化超过一定范围时向客户方发送变化的数据。数据访问接口标准定义了数据访问的由上而下的三个层次:Server层,Group层,Item层。高层对象包含若干底层对象,增加了系统的灵活性。数据访问按口标准在最高层定义了服务器对象(server object),一个服务器对象提供了对一组数据源的访问或通讯。服务器对象提供接口使客户创建组对象(group object)。标准的OPC服务器对象如下所示: IUnknown 标准OPC服务器对象IOPCCommonIOPCScrverIOPCServerPublicGroups OPCBrowseServerAddressSpaceIPersistFileIConnectionPointContainc图2-3 标准服务器对象标准OPC组对象如下图所示:IUnknown标准OPC组对象IOPCGroupStateMgtIOPCGroupStateMgtIOPCPublicGroupStateMgtIOPCSyncIOIOPCASyncIO2IConnectionPointContaincIOPCSyncIOoldIDataObjectold图2-4 标注组对数据访问接口实现的主要功能包括:a.通过IOPC Server接口添加删除组(Group),获取组(Group)的属性,状态,创建组(Group)枚举器。b.通过OPC Browse Server Address Space接口获取。PC服务器的地址空间信息。利用地址空间信息,客户程序可以构造访问数据Item的唯一标志ID。c.通过IOPC Server Public Groups接口访问公共组(Group)。d.通过IOPC Group State Mgt接口访问组(Group)的状态,并复制相关组(Group)。e.通过IOPC Item. Mgt:接口添加删除数据项(Item),改变数据项(Item)的状态,设置数据项(item)的属性,并创建数据项(Item)枚举器,用来获取当前组(Group)中己经创建的数据项(Item)的信息。f.通过IOPCSyncIO接口进行同步数据访问。同步访问包括同步读,写操作。g.通过IOPCASyncIO2接口进行异步数据访问。异步访间包括异步读,写,刷新,取消,使能操作。异步操作通过连接点IOPCData Callback出接口共同实现。h.通过IOPCItemProperties访问接口数据项(Item)的属性。需要注意的几个概念:a.Public Group:引入公共组(Public Group)的目是提供一种在多用户系统的情况下共享数据构造信息的方法,典型的应用是,在过程控制系统中,多用户应用程序使用同样的工具来监视或控制同一组控制数据,创建一个公共组,由一个用户应用程序来定义其中的数据项,而其它用户应用程序可以通过连接该公共组访问相关数据信息。公共组(Public Group)是可以被所有客户访问的组(Group,它必须在所有公共组中有一个唯一的名字,可以将一个一般的组转换为公共组,公共组的成员项(Item)不能改变。b.CACHE数据和DEVICE数据:在读取数据时,客户可以选择从CACHE读数据或从DEVICE读数据。为了提高数据读取速度,OPC服务器按照一定的刷新率把数据读进一个数据缓存区(CACHE),当客户需要数据时,可以直接从数据缓存区(即CACHE)读取数据。而直接从设备(DEVIGE)读取数据主要用在一些诊断操作或一些关键操作中。c.Active,Update Rate,Time Zone (Time Bias)和Percent Deadband属性:每个组(Group)和数据项(Item)都有一个Active。标志,当Active标志为TRUE时,OPC服务器才会将与该组或数据项相关的数据存入数据缓存区(CACHE),同时如果改变的数据满足数据刷新条件,就将数据主动发送给客户端。而Active标志为FALSE的组或数据项则无法自动得到最新的数据。d.刷新率(Update Rate)决定OPC服务器更新数据缓存区中的数据的时间间隔。服务器更新数据的速度不应该快于客户要求的刷新速度。e.Time Bias属性用来调整不同时区带来的时间差异。由于在分布式环境下,服务器和客户机器有可能不在同一个时区,因此当时间值从一方传向另一方时,需要通过Time Bias值来把该时间值调整为另一方时区下的时间值。f.Percent Deadband属性用来计算出一个临界值,当数据项(Item)的值的变化超过这个临界值时,OPC服务器应该负责把数据发送到客户端。2.3 OPC报警与事件(Alarm and Event)规范报警与事件(Alarm and Event)规范接口提供了一种机制,通过这种机制,当I/O设备中有指定的事件或报警条件产生时,OPC客户应用程序能得到通知。通过OPC报警与事件规范接口,OPC客户应用程序可以设置OPC服务器支持的事件和条件,并获得其当前状态。在OPC中,一个报警就是一个非正常状况(Exceptional Condition)。一个状况就是OPC事件服务器(Event Server)或其所包容的对象中命名了的一个状态,而这个状态对OPC客户应用程序来说是有用。例如:标签FCI01可以有以下几种相关状况:上限报警、上上限报警、正常、下限报警、下下限报警。OPC事件服务器包含如下三个对象: OPC事件服务器对象(OPC Event Server Object),OPC事件订阅对象(OPC Event Subscription Object)和OPC事件区域浏览器对象(OPC Event Area Browser Object)。它们的关系如下:OPC事件服务器对象OPC事件区域浏览器对象OPC事件订阅对象图2-5 OPC事件服务器对象的关系2.4 OPC历史数据存取(Historical Data Access)规范OPC历史数据存取服务器提供的功能包括从一个历史服务器读取历史数据,将历史数据写入一个历史服务器。历史数据的类型是服务器方独立的。所有的COM对象都可以通过接口访问,客户只能看到接口。因此OPC历史数据存取服务器包括的COM对象只是逻辑上的对象,与服务器方的具体实现方法无关。历史数据存取对象实现的主要功能包括:通过IOPCHDA_Server接口访问历史数据项的属性值,集合值和状态值,并获取IOPCHDA_Browser接口。通过IOPCHDA_Browser接口获取历史数据存取服务器所提供的历史数据的地址空间,并获取访问数据的Item ID值。通过IOPCHDA_SyncRead接口从历史数据库读取特定条件下的历史数据值,属性,以及时间标签,并计算历史数据的集合值。通过IOPCHDA_SyncUpdate接口更新历史数据。通过IOPCHDA_SyncAnnotations接口访问,修改历史数据的注释(Annotation)值。通过IOPCHDA_AsyncRead接口,IOPCHDA_AsyncUpdate接口,IOPCHDA_AsyncAnnotations接口可以进行异步方式历史数据的访问操作。通过IOPCHDA_Playback接口可以在初始获取数据后,周期的获取相关数据3。2.5 OPC安全规范OPC安全规范用来保护OPC服务器所提供的重要或敏感数据,设置不同的权限,控制OPC客户程序对OPC服务器的访问。OPC安全规范的接口可以在OPC数据访问对象,OPC报警和事件对象或OPC历史数据对象中实现,包括如下两个接口:IOPCSecurityNT接口,IOPCSecurityPrivate接口。例如在OPC数据访问对象中实现时OPC对象如下所示: IUnknown 标准OPC数据访问服务器对象IOPCCommonIOPCScrverIOPCServerPublicGroups OPCBrowseServerAddressSpaceIPersistFileIConnectionPointContaincIOPCSecurityNTIOPCSecurityPrivate图2-6 OPC数据访问对象中实现OPC安全规范接口IOPCSecurityNT接口控制使用NT资格审查的数据访问。IOPCSecurityPrivate接口控制使用私有资格审查的数据访问。2.6 OPC批处理规范OPC批处理规范主要应用于一些具有批处理要求的工业过程中的数据访问。OPC批处理服务器对象定义如下: IUnknownOPC批处理服务器对象IOPCCommon IOPCBatchServeIOPCScrver IOPCBatchServer2IOPCServerPublicGroups IEnumOPCBatchSummaryOPCBrowseServerAddressSpace IOPCEnumerationSetsIPersistFile IConnectionPointContaincIOPCItemProperties图2-7 OPC批处理服务器对象IOPCBatchServe:接口用来获取OPC批处理服务器的状态信息,并获得IEnumOPCBatchSummary枚举器接口。IOPCBatchServer2接口用来获取基于用户定义标准的批处理枚举器接口。IEnumOPCBatchSummary接口用来方便高效的获取汇总的批处理列表数据。IOPCEnumerationSets接口用来查一询标准的枚举器集合和客户自定义的枚举集字符名。2.7 OPC-XML规范OPC-XML规范使用XML技术提供了跨Intel网访问数据的功能,极大的扩展了OPC技术的应用范围。XML(the eXtensible Markup Language,可扩展标记语言),提供了另一种在应用程序之问交互结构化信息的方法。XMI_是一种跨平台的数据访问技术,而OPC-XML是OPC基金会制定的,采用了XML技术用来交互访问工厂数据的接口规范。2.8 OPC数据交换规范及适用范围OPC数据交换规范提供了一个标准,在OPC数据访问服务器之间交换数据,这个规范避免在两个OPC数据访问服务器之间加入一个私有客户,提高了数据交换的效率,可以看作OPC数据访问规范的扩展,增强了OPC数据访问服务器的功能.OPC技术本身的结构和设汁使它有可能构造一个OPC服务器,使一个客户程序从多个OPC服务器访问数据,而这多个OPC服务器可以是不同的OPC供应商所提供,运行在网络的不同节点上7。第三章OPC服务器的开发与实现3.1 OPC服务器的总体结构木文实现的OPC服务器需要完成数据采集的功能,提供符合OPC数据存取规范的定制接口(Custom Interface)。采用如图3-1所示的结构进行设计,各个部分功能相对独立又相互协作,形成一个统一的整体。OPC服务器OPC对象与接口数据存储区用户界面设备驱动现场设备图3-1 OPC DA服务器的结构服务器的各个部分功能相对独立又相互协作,形成一个统一的整体。其中OPC服务器对象部分是OPC服务器程序与客户程序进行交互的部分。OPC对象包括服务器对象(OPC Server)、组对象(OPC Group)、项对象(OPC Item)三个层次。其中前两个对象是真正的COM对象,能够将各自的接口暴露给客户程序。OPC服务器对象和组对象之间是聚合关系,即OPC服务器对象创建OPC组后,将组对象的指针传递给客户,由客户直接操纵组对象。而组对象只是简单地包容OPC项对象,客户程序通过组对象管理OPC项。Item对象为整个服务器提供数据,这些数据应该是通过I/O DLL从现场设备中读取过来的。OPC对象部分需要与数据存储区和硬件驱动程序相联系,以便获取数据区中的数据或直接访问硬件设备。数据存储区中存放着OPC服务器中定义的数据项。数据项包括值、品质、时间戳三个基本属性以及与硬件相关的属性,例如设备号、厂家信息、通道号等。数据项的基本属性与OPC规范中定义的OPC项属性一致。客户程序通过组对象添加OPC项时,将OPC项与数据项关联起来,读取数据时返回其基本属性。数据存储区是服务器的中心部分,需要动态地管理和维护数据项,并与其它部分进行数据交互。本文研究中,将图3-1所示的OPC服务器模型分成通用的OPC服务器对象和通信模块两部分。这种模块化的设计方法,通信模块部分有利于根据不同的硬件做出二次开发和根据硬件升级而修改。3.2 OPC服务器程序实现步骤下面是实现OPC数据服务器的主要步骤:(1)定义OPC数据服务器的名称(Prog ID)和类标识(CLS ID),实现COM库的初始化功能和OPC数据服务器类厂对象的接口功能。(2)OPC对象部分的设计是关键步骤。首先通过继承IUnknown类派生出BJUTSever, BJUTGroup和BJUTItem三个类,重载IUnknown类中的接口查询和引用计数函数。这三个类的实例分别对应OPC服务器对象、组对象和项对象。(3)本论文设计的OPC服务器,由连接的硬件不多,所以目前采用了单线程模型。(4)设计用户界而,用列表的形式显示数据项的详细信息。(5)用仿真数据代替实际数据源,利用定时器每隔一定时间产生一些有趣的数据,生成仿真数据服务器。目的是测试前而设计的OPC接口是否符合OPC规范。(6)针对一种PCI总线CAN通讯卡设计OPC服务器,实现从现场设备存取数据的功能。(7)对OPC服务器程序进行测试。在测试时也需要安装注册OPC基金会提供OPC标准组件,如OPCPROXY. DLL等,然后利用可靠的OPC客户程序进行测试。3.3 OPC服务器的注册及程序的实现3.3.1 OPC服务器组件的注册将COM组件注册到组件目录可以方便组件的管理和查找,服务器本身也需要在注册表中的HKEY_CLASSES_ROOT主健下添加注册表入口信息。这些信息包括COM对象的类标识、程序标识符以及服务器程序的完整路径文件名等。客户程序就是通过这些信息启动服务器程序,完成COM对象创建工作的。支持自注册的服务器程序也可以利用Windows提供的有关注册表的API函数自动完成注册表入口的创建。在OPC服务器的开发过程中,除了OPC服务器对象本身的注册,还需要安装注册OPC基金会提供的标准内自注册组件。opc_aeps.dll,opccomn_s.dll,opchda_ps. dll,opcproxy.dll等。同时,还要将服务器注册到统一的OPC组件目录管理器,这样OPC客户就可以通过组件目录管理器查询所有注册的OPC服务器。对于DLL文件形式的进程组件,Window操作系统提供了Regsvr32.exe注册工具进行组件注册或卸载。组件程序本身也必须包含DllRegisterServer和D11UnregisterServer两个注册表入口函数。当用如下命令行方式运行Regsvr32程序时:Regsvr32 C:WINNTsystem32OPCPROXY.DLLRegsvr32 C:WINNTsystem32 opccomn_s.dllRegsvr32 C:WINNTsystem32 opc_aeps.dll按照以上方法将标准组件注册后,本文将OPC服务器作为本地服务器(EXE文件形式)来开发。3.3.2 OPC服务器程序的设计在本文中,服务器的ProgID为“OPC.Fix.l”,在头文件OPCSWJ.h中定义服务器的对象标识:DEFINE_GUID(CLSID_OPCSampleServer,Ox3333333d, Ox10c, Ox300b, 0x33, Ox3a, 0x33, 0x33, 0x33, 0x33, 0x32,0x11);显然,COM组件的设计,往往是以研究客户和服务器交互的过程为出发点的。客户和服务器建立联系的实际流程是如图3-2所示。并且作出如下说明:(1)OPC服务器自启动时,首先生成一个OPC的类工厂,该工厂负责生成一个SWJServer。(2)OPC客户通过SWJServer的名字“OPC.Fix.l”找到服务器在注册表中的组件对象的CLSID,然后在内存中查询有无该OPC服务器进程存在,以判断服务器是否己经存在。若服务器己经存在则调用CoCreateInstance创建另外一个SWJSeve对象实例,而不用生成类工厂。CoCreateInstance实际上做了两工作:首先生成OPC类工厂,然后用该类工厂创建SWJSeve:实例。(3)通过上述QueryIterface接口获得返回的指针获得SWJServer服务器中的ISWJServer接口和ISWJBSAS接口,然后才进行组和项的操作。在宿主程序中WinMian函数中有以下实现函数:InitInstance():初始化系统和应用程序ExitInstance():结束应用程序,释放资源CoRegisterClassObject():登记服务器对象在InitInstance中需要完成OPC服务器组件的注册和注销,并记录服务器启动时间等工作。至此,己经完成了整个程序的主入口点,也是程序的主框架。再将该组件注册,就可以从注册表看到,并可由客户启动。但现在的服务还没有完成任何功能,需要将OPC规范中需要的接口和功能加以实现,才完成了整个设计工作。此时,我们完成了OPC服务器的主体程序框架的设计,和组件的注册,此时的OPC DA服务器还没有任何功能,只是可以通过OPC DA客户端访问并启动。生成SWJServer实例释放类工厂 调用CoInitializeICIassFactory* serverFactory创建组件的类工厂COM库在内存中查找CLSID组件CoGetClassObject获取对象类厂COM在注册表中寻找组件对象的CLSIDCLSIDFromProg (guid, &wszProgID)将 OPC.Fix.l转成CLSID客户端获得服务器Prog“OPC.Fix.l”组件EXE没有启动?另外的SWJServer实例NY调用CoRegisterClassObject注册类厂成功?NY图3-2 OPC DA服务器的生成流程3.4 OPC DA服务器接口的实现及组对象的设计上一节我们开发的服务器己经实现了要能提供本地连接的功能,使OPC DA客户已经可以连接启动到DA服务器,这是DA的其它功能实现的前提和基础。紧接着才能实现建立OPC组(Group)和OPC数据项(Item),客户端才能够调用该接口的方法来添加、删除服务器内的组对象,对组对象进行管理。 OPC接口的实现直接关系到Client和Serve:的交互,所以它是编程实现C/S通信模式的核心。论文研究涉及的服务器实现的接口我们已经在2.2中的图2-3、2-4种做过详细介绍。在实现OPC标准接口时,需要重点解决如下两个方面;其一、OPC对象类的构造,包括OPC Server, OPC Group, OPC Item对象类。其二、OPC类接口的实现,OPC服务器的这些接口功能分别在SWJServer, SWJGroup和SWJItem三个实现类中被继承而实现。包括类对象的管理,通讯接口的实现。重点是实现数据通讯功能。下面主要就其设计框架和数据通讯流程部分加以叙述。其中,IOPCBrowseServerAddressSpace是地址空间浏览接口。利用这个接口,DA客户端可以向服务器申请一个数据项清单,然后可以在这个清单中选择一个有效的OPC项名,而不用输入变量名。浏览项可以有两种方式:平面浏览和树状浏览。平面浏览意味着所有的OPC项在一个简单的列表中;树状浏览意味着OPC服务器提供的OPC项按照目录树的形式组织,浏览接口可以通过函数得到项的名字和在树中上下移动来得到指定的项名。它的核心是给出数据项标示符(Item ID)的有效定义。项目标示符是数据的唯一标示,它告诉服务器数据是什么数据,存放在何处。服务器中全体数据项标示,形成水平或分层地址空间。分层地址空间很像操作系统中的文件系统,地址空间的分支或路径代表各级目录、子目录,项目标示代表文件。这种结构极大地方便了数据的查找。3.4.1 OPC DA服务器接口的实现SWJServer类是OPC DA服务器要实现的最关键的对象类,负责DA服务器的服务器级的信息管理包括服务器的状态等信息,主要有:(1)服务器启动时间(2)服务器当前时间(3)服务器最后更新时间(4)服务器运行状态(5)Group数量下面是SWJServer类的定义部分代码:class SWJServer: public IUnknown./定义下列嵌套类为其友类 friend class ISWJServer;/继承至IOPCServerfriend class ISWJBSAS;.CRITICAL_SECTION m_Cs; /临界区ULONG m_RefCnt; /服务器引用计数FILETIME m_Time; /服务器创建时间LCID m_ServerLCID; /服务器默认的LCIDprivateISWJServer *m_pIServer; /IOPCServer接口ISWJTBSAS *m_pIBSAS;void UpdateData(DWORD tics); /刷新数据/Server管理Group对象的结构 struct int inuse; SWJGroup*pGroup; m_groupsN_GRPS; ; 可见,SWJServe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 猫咪线描课件
- 安全教育校本培训总结课件
- 工程部冲刺方案(3篇)
- 农业品牌化趋势下2025年特色农产品市场推广策略解析
- 农业企业数字化种植案例研究:农业智能化种植技术人才培养分析报告
- 系统与软件工程信息化项目造价评估
- 粮食库面试题库及答案
- 安全教育培训重点课件
- 安全教育培训运营商课件
- 安全教育培训课稿模板课件
- 2025秋季一年级上册数学教学计划进度表【第3版】
- 2024年麻精药品培训考核试题(含答案)
- 2025循环水处理试题及答案
- GB/T 40344.4-2025真空技术真空泵性能测量标准方法第4部分:涡轮分子泵
- 2025秋统编版八年级上册语文教学计划
- 飞书使用培训课件
- DB42T 900-2013 公路隧道监控量测技术规程
- 《现代供电技术》课件(共八章)
- 2025年公共设施管理行业研究报告及未来发展趋势预测
- 高一语文学法指导(绝对经典)
- 双胎妊娠护理查房
评论
0/150
提交评论