冷轧清洗线控制系统设计——用C--和OPC设计二级控制系统

上传人:无*** 文档编号:204417462 上传时间:2023-04-26 格式:DOC 页数:65 大小:554.50KB
收藏 版权申诉 举报 下载
冷轧清洗线控制系统设计——用C--和OPC设计二级控制系统_第1页
第1页 / 共65页
冷轧清洗线控制系统设计——用C--和OPC设计二级控制系统_第2页
第2页 / 共65页
冷轧清洗线控制系统设计——用C--和OPC设计二级控制系统_第3页
第3页 / 共65页
资源描述:

《冷轧清洗线控制系统设计——用C--和OPC设计二级控制系统》由会员分享,可在线阅读,更多相关《冷轧清洗线控制系统设计——用C--和OPC设计二级控制系统(65页珍藏版)》请在装配图网上搜索。

1、 鞍山科技大学本科生毕业设计(论文) 第 61 页冷轧清洗线控制系统设计 用C+和OPC设计二级控制系统摘 要传统工控系统的驱动和与其连接的应用程序之间的接口没有统一的标准,为了实现不同的硬件和软件所构成的计算机之间的数据交换和传输,必须开发各自的通讯程序。 这样一来, 导致了开发成本高、重复性劳动、驱动程序不一致和存在访问冲突等问题 , 很难适应当今工控系统的开放性要求。OPC(OLE for Process Control,用于过程控制的 OLE)技术的出现提供了解决方法。OPC使不同供应厂商的设备和应用程序之间可以相互间数据交换,把硬件供应商和软件开发商分离开来,在设备和数据库等数据源和

2、客户之间架起一座桥梁。 OPC是过程控制工业中的新兴标准,基于Microsoft的COM/DCOM技术,它包括一整套用于过程控制自动化接口和方法的标准集。本文介绍了OPC技术产生的背景,以及它的主要特点与发展状况,并剖析了其核心COM/DCOM技术。然后重点介绍了 OPC数据访问规范及访问方法,OPC服务器对象和客户端对象接口及OPC客户端与服务器的通信。最后介绍OPC技术在冷轧清洗线中的应用,OPC服务器与现场设备和客户端的连接。关键词:OPC,组件对象模型,客户端Cold Rolling Cleaning Line Control System DesignDesign Second Le

3、vel Control System with C+ and OPCAbstractThere is no universal standard between the driver of traditional industry control system and application program. In order to realize the data exchange and the transmission among the computers with different hardware and software, people must develop respect

4、ive communication program. As the matter stands, there exist many problems including the high development cost, the duplicated work, inconsistent driver program and visit conflict and so on .It is very difficult to meet the open needs of current the industry control system. OPC (OLE for Process Cont

5、rol, used in process control OLE) techniques appearance provide the solution. OPC makes the different supply merchant of equipment and the application program exchange data mutually and separate the hardware supplier from the software developer, which puts up a bridge between customers and data reso

6、urce such as equipment and database etc.OPC is an emerging standard in the process control industry, based on Microsoft COM and DCOM technology. It includes the whole standard collection with interface and method used in the process control automation. This paper introduces the background of OPC tec

7、hnology, as well as its main characteristic and the development condition, and analyzes its core COM and DCOM technology. Then it introduces the OPC data access standard and access method with emphasis, the interface and the communication between OPC server object and client object. In the end, it i

8、ntroduces the application of OPC technology in the cold rolling cleaning line,the connection in the cold rolling cleaning line between OPC server and the field device and that between OPC server and the client side.Keywords: OPC, COM, client side 目 录摘 要IAbstractII1 绪 论11.1 研究背景11.2 OPC的基础知识11.2.1 OP

9、C产生的背景11.2.2 OPC的历史31.2.3 OPC的现状和发展42 OPC技术的基础COM技术62.1 COM技术简介62.1.1 COM概念62.1.2 COM对象62.2 COM接口IUnknown 接口62.3 COM扩展分布式 COM(DCOM)73 OPC技术介绍83.1基于COM技术的OPC83.2 OPC数据访问规范93.3 OPC 数据访问服务器的对象93.4 OPC数据访问方法113.5 OPC服务器对象及其组对象接口133.5.1 OPC服务器接口133.5.2 OPC组对象接口153.6 OPC客户端及其接口183.6.1 OPC 客户端概述183.6.2 OPC

10、 客户端的数据来源183.6.3 OPC客户端接口184 OPC技术在冷轧清洗线中的应用204.1工程背景及工艺204.1.1 工程背景204.1.2 工程工艺204.2 OPC服务器与现场设备的连接214.3 OPC服务器与客户端的连接224.4 OPC服务器客户端程序的主线程26总 结28致 谢29参考文献30附 录A (OPCthe standard for real time communication)31附 录B (OPC实时通信标准)35附 录C38附 录D47附 录E55冷轧清洗线控制系统设计用C+和OPC设计二级控制系统冷轧清洗线控制系统设计 用C+和OPC设计二级控制系统1

11、 绪 论1.1 研究背景现在,工业自动化系统的应用已经非常普及,DCS(Distributed Control System,集散控制系统)得到了广泛应用,现场总线技术正在逐步完善、成熟起来。但是目前工业自动化系统绝大多数是封闭的系统,缺乏统一、标准的开放式接口。不同厂家的产品如果要集成在一起,必须为它们开发专用的接口。随着工业自动化系统功能要求越来越复杂,完全用一个厂家的产品来构成整个系统是很困难的。不同厂家的产品之间接口的复杂性限制了用户的选择,不能根据系统的要求选择最佳的系统集成方案。同时,软件在自动化领域内使用的重要性与日俱增。无论项目是否涉及到操作、可视化、数据存档或控制,向纯粹的、

12、基于 PC的软件解决方案的发展趋势是不可阻挡的。这些软件解决方案不再是开发单个的模块,而是由专用的软件组件组成。采用可重复使用的软件组件以及利用这些软件组件所具有的柔性构成整个系统,成为发展的必然趋势,因而通信接口不兼容的问题急需解决。OPC(OLE for Process Control,用于过程控制的OLE)技术的出现提供了解决方法。当现场设备、应用软件都具备标准的OPC接口时,便可集成来自不同数据源的数据,使运行在不用平台上、用不同语言编写的各种应用软件顺利集成。1.2 OPC的基础知识1.2.1 OPC产生的背景传统的SCADA(监控与数据采集系统)开发中出现的一个主要问题是软件的重复

13、开发,软件不能够重用,资源不能共享,造成大量人力与物力资源的浪费。随着计算机软件的发展,这种情况有所改观,高级语言中库函数的采用,实现了一定程度上资源的共享,尤其是面向对象的方法的应用,使得我们可以利用面向对象的继承等方法大量重用源代码。但这些重用只是对源代码级的重用而不是对可执行文件级的重用,对每一类库都要重新编译,所以并没有真正实现资源共享,并且对某个模块中某个类库的修改将“触一发而动全身”,引起所有引用该类库的模块的修改,因此非常难以实现某个模块的升级。同时,为一种语言开发的类库以及函数库都不能够为其他语言所用,也大大限制了软件的重用。一般实时监控系统为分布式的结构,实现了人机接口、通信

14、、数据处理等功能在网络上的分布,同时将一个系统划分为各个子系统,降低了系统的复杂程度,改善了系统性能,便于整个系统的开发,减少了开发周期与维护费用。但由于系统各个计算机的通信协议依赖于某个厂家,没有形成统一的标准,不同厂家之间的软件与硬件的集成难于实现。因此也没有真正实现不同厂家的软件共享。从更广泛的意义上看,新的过程控制信息体系的各层都有着各自的要求,他们都要求信息的一致性。现场控制层:智能现场设备的出现,可以提供过去不能提供的大量丰富的有关此现场设备的信息。所有这些信息必须以一致的方式提供给客户应用程序。过程管理层:DCS(集散控制系统)和SCADA必须以统一的方式为操作员和工程师等决策者

15、提供数据。经营决策层:对生产过程信息的综合,有助于企业最优生产,节省财政开支。而向客户应用程序以统一的方式提供信息,可最小化企业在信息综合上的精力。为了有效地完成信息集成,关键是制订一种集中于数据访问而不是数据类型的开放的、有效的通信标准。定义OPC的目的就是为应用程序访问工厂前台提供共同的方法,允许兼容的应用程序无缝的访问生产环境中的数据。在传统的控制系统中,智能设备之间及智能设备与控制系统软件之间的信息共享是通过驱动程序来实现的。任何一种HMI(Human Machine Interface,人机接口)等上位监控软件或其它应用软件(如趋势图软件、数据报表与分析等)在使用某种硬件设备时都需要

16、开发专用的驱动程序,如图1.1所示1。图1.1 传统控制系统结构为了解决上述问题,硬件制造商们一直试图开发出一种可以被任何客户使用的超级“I/O驱动”程序。但是由于客户协议的不一致,这项工作至今没有取得成功,OPC和现场总线标准的制定正好为上述问题的解决开辟了新的道路。采用OPC标准后,针对硬件的驱动程序不再由软件开发商开发,而是由硬件开发商根据硬件的特征提供统一的OPC接口程序。由于硬件开发商对自己的硬件特征了如指掌,从而能够最大限度地挖掘硬件的潜力,提高驱动程序的性能。基于OPC标准的数据访问方式如图1.2所示。采用OPC标准后,由硬件开发商提供统一的OPC接口程序,从而避免了开发重复性,

17、使开发费用大大降低。OPC 规范采用客户/服务器模型,其实质是在硬件供应商和软件供应商之间建立一套“游戏规则”,只要遵循这套规则,数据交互对两者来说都是透明的。硬件供应商无需考虑应用程序的多种需求和传输协议,软件开发商也无需了解硬件的实质和操作过程。这样可以灵活而有效地在应用和过程控制设备之间读写数据。 图1.2 采用OPC后控制系统结构1.2.2 OPC的历史OPC (OLE for Process Control用于过程控制的 OLE)是一个工业标准,它是许多世界领先的自动化和软、硬件公司与微软公司合作的结晶。这个标准定义了应用Microsoft操作系统在基于 PC 的客户机之间交换自动化

18、实时数据的方法。管理该标准的组织是OPC基金会。该基金会的会员单位在世界范围内超过220个,包括了世界上几乎全部的控制系统、仪器仪表和过程控制系统的主要供应商。OPC基金会的先驱(由 Fisher-Rosemount、Rockwell 软件公司、Opto 22、Intellution和IntuitiveTechnology公司组成的“特别工作组”)在经过一年工作后,开发出一个基本的、可运行的OPC规范。随着1997年2月Microsoft公司推出Windows95支持的DCOM技术,1997年9月新成立的OPC Foundation对OPC规范进行修改,增加了数据访问等一些标准,OPC 规范得

19、到了进一步的完善。OPC是基于Microsoft公司的DistributedinterNetApplication(DNA)构架和 Component Object Model(COM)技术的,根据易于扩展性而设计的。OPC规范定义了一个工业标准接口,这个标准使得COM技术适用于过程控制和制造自动化等应用领域。OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从底层的开发中脱离出来2。OPC技术

20、是OPC基金会组织制定的工业控制软件互操作性规范,也是微软为了把WINDOWS应用于控制系统和控制界共同推出的一项技术。它以微软的COM/DCOM(组件对象模型和分布式组件对象模型)技术为基础,为工业控制软件定义了一套标准的对象、接口和属性,通过这些对象接口,应用软件之间能够无缝地集成在一起,实现了应用程序之间数据交换方式的标准化,极大的提高了自动化系统,现场设备系统,商业办公系统之间的互操作性。OPC接口既可以用于应用程序的最低级,即通过该接口将现场实时数据采集到DCS或SCADA中来,又可用于应用程序的中级环节,即通过该接口将数据从DCS或SCADA系统采集到上位机应用程序中来,还可将OP

21、C应用于网络计算机来采集数据,设计一个OPC服务器,允许客户应用程序从该服务器或网上运行OPC服务器的其它节点计算机上采集数据。总之,OPC应用不应该局限于应用程序与现场设备的接口,应该认为它是一种Windows应用程序相互交换数据的通用规范。1.2.3 OPC的现状和发展OPC技术的发展,源于OPC基金会及其300多家公司成员的共同努力。世界领先的工业自动化软硬件厂商,作为OPC基金会的成员,为OPC技术的发展做出着重要的贡献。目前现存的和正在开发的OPC标准如表1.1所示。表1.1 OPC标准标准最新版本内容OPC Data AccessOPC Alarms & Events3.001.1

22、0数据访问标准报警和事件标准OPC Batch2.00批处理标准OPC Data Exchange1.00服务器间数据交换标准OPC Historical Data Access1.20历史数据访问标准OPC SecurityOPC XML-DA1.001.01安全性标准XML数据访问标准OPC Commands1.00命令标准OPC Complex Data1.00复杂数据访问标准 2 OPC技术的基础COM技术2.1 COM技术简介2.1.1 COM概念COM(Component Object Model,组件对象模型)是由Microsoft提出的组件标准,是OLE、ActiveX、DCO

23、M技术的基础,它不仅定义了组件程序之间进行交互的标准,并且也提供了组件程序运行所需的环境。该模型的定义是为了实现语言无关、厂商无关、位置透明以及减少版本问题,从而使得来自不同厂商的、不同语言编写和运行在不同平台上的COM对象能够彼此协调地运行,共同实现某一任务3。2.1.2 COM对象COM提供的是面向对象的组件模型,COM组件提供给客户的是以对象形式封装起来的实体。客户程序与COM组件程序进行交互的实体是COM对象,它并不关心组件模块的名称和位置(位置透明性),但必须知道自己在与哪个COM对象交互。类似于C+语言中类(Class)的概念,COM对象也包含属性(也称状态)和方法(也称操作),对

24、象的状态反映了对象的存在,也是区别于其它对象的要素;而对象所提供的方法就是对象提供给外界的接口,客户必须通过接口才能获得对象的服务。对于COM对象来说,接口是它与外界进行交互的唯一途径,因此,封装特性是COM对象的基本特征。COM对象不同于像C+等面向对象语言中对象的概念,COM对象是建立在二进制可执行代码级的基础上,而C+等语言中的对象是建立在源代码级基础上的,因此COM对象是语言无关的,这一特性使用不同编程语言开发组件对象进行成为可能。COM对象也具有可重用性,它表现在COM对象的包容和聚合,一个对象可以完全使用另一个对象的所有功能。并且COM对象的重用是动态的,即被包容或被聚合对象的版本

25、更新或功能增强后,包容或聚合对象根本不需要重新编译或者重新设置。2.2 COM接口IUnknown 接口COM定义的每一个接口都必须从IUnknown继承过来,其原因在于IUnknown接口提供了两个非常重要的特性:生存期控制和接口查询。客户程序只能通过接口与COM 对象进行通信,虽然客户程序可以不管对象内部的实现细节,但它要控制对象的存在与否。如果客户还要继续对对象进行操作,则它必须保证对象能一直存在于内存中;如果客户对对象的操作已经完成,以后也不再需要该对象了则它必须及时地把对象释放掉,以提高资源的利用率。IUnknown 引入了“引用计数”方法,可以有效地控制对象的生存周期。IUnkno

26、wn包含了三个成员函数:QueryInterface、AddRef、Release。函数 QueryInterface用于供客户端查询对象是否支持某个特定的接口,函数AddRef 和 Release用于完成对象的生存期控制。2.3 COM扩展分布式COM(DCOM)DCOM是COM的扩展,它可以支持不同计算机上组件对象与客户程序之间或者组件对象之间的相互通信,这些计算机可以在局域网内也可以在广域网上,甚至通过Internet进行连接。对于客户程序而言,组件程序所处的位置是透明的,我们不必编写任何处理远程调用的代码,因此,DCOM 也是 COM 的无缝扩展。由于COM是一项应用广泛、成熟的组件技

27、术,所以我们可以充分利用基于COM的应用、组件、开发工具以及知识,并把它们转移到分布式计算的应用领域中来。因为DCOM已经为我们处理了底层网络协议的所有细节,所以我们可把重点放在应用的业务逻辑上,而不必再为底层处理费时费力。典型的分布式应用系统是,在各个服务器上运行一些DCOM组件对象,客户程序调用这些组件对象,由它们完成实际的功能操作,比如访问数据库或进行一些复杂的数据处理,客户程序只负责接受用户的输入并把服务器的响应结果反馈给用户。3 OPC技术介绍3.1基于COM技术的OPCOPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用

28、性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来4。微软公司为了提供商业应用程序和特定用途的软件包间的相互连接性,开发了所谓的组件对象模型(Component Object Model, COM)技术。COM是一种软件组件间相互数据交换的有效方法。COM技术具有以下特长5:1、所谓COM并不是一种计算机语言,而是于运行的机器(只要互相连接),机器的操作系统(只要支持COM),以及软件开发的语言无关,任意的两个软件组件之间都可以相互通信的二进制和网络的标准。2、COM客户程序和COM服

29、务器可以用完全不同的语言开发。这样使利用C+,Visual Basic,以及Excel中作为宏使用的应用程序的Visual Basic等不同语言所开发的程序可以相互连接。3、作为COM技术扩展的分布式COM(Distributed Component Object Model, 分布式COM)技术,更可以使COM组件分布在不同的计算机上,并通过网络互相连接并互相交换数据。所以对于COM客户程序来说,同样像连接本地计算机上的COM服务器一样,去连接远程计算机上的COM服务器,当然通信的速度不太一样,但是重要的是不必对服务器程序进行修正就可以在网络上自由构成(图3.1)。COM技术的出现使简单地实

30、现控制设备和控制管理系统之间的数据交换提供了技术基础。但是如果不提供一个工业标准化的COM接口,各个控制设备厂家开发的COM组件之间的相互连接仍然是不可能的。这样的工业标准的提供,乃是OPC的目的所在。总而言之,OPC是作为工业标准定义的特殊的COM接口。OPC是以提供移植容易并具有可以满足大多数设备厂家要求的灵活性和高水平的机能性为目标而开发的,对于制造厂商和用户来说,分别可以从OPC得到以下的实惠:1、设备开发者:可以使设备驱动器开发的单一化成为可能。2、应用程序软件开发者:可以使用通用的开发工具。不必开发特别的接口,使得 图3.1 利用COM和分布式COM达成的组件间的互相连接设备接口的

31、开发更为简单易行。3、用户:可以选用各种各样的商业软件包,使得系统构成的成本大为降低。同时可以更加容易地实现由不同供应厂商提供的设备所混合构成的工业控制系统。随着基于OPC标准的控制组件的推广和普及,不仅使控制系统的增设和组件的置换更加简单,而且使过程数据的访问也变得容易。3.2 OPC数据访问规范OPC规范定义了两套接口标准,包括自动化标准(Automation Interface Standard)和自定义接口标准(Custom Interface Standard)。自动化接口是为了向VB之类的脚本语言编写的客户程序提供服务,而自定义接口适用于C和C+应用程序,它比自动化接口更高效,功能

32、更强大(图3.2)6。OPC数据访问规范描述了由OPC服务器实现的OPC /COM 对象及相应接口。规范指出一个OPC客户程序可以连接到一个或多个由不同厂家提供的OPC服务器程序,而多个OPC客户程序也可以连接到一个OPC服务器程序上,服务器所要访问的设备、数据源、数据名及服务器程序如何进行数据的访问由厂商提供的代码决定。其OPC客户与OPC服务器的关系见图3.3,这是COM中典型的客户/服务器模型。3.3 OPC数据访问服务器的对象OPC数据访问服务器在COM基础上建立了符合OPC规范的COM接口和对象7。图3.2 OPC服务器与不同类型的OPC客户连接图3.3 OPC客户与OPC服务器的关

33、系OPC逻辑对象模型包括三类对象:OPC服务器对象、OPC组对象、OPC项对象,每类对象都包括一系列接口。OPC 组对象包含在OPC服务器对象中,并由客户端定义和维护,每个服务器可以包含多个组对象。OPC组对象可以增加或删除OPC项对象,OPC项对象包含在OPC组对象中,一个组对象可以包含多个项对象,同样由客户端定义和维护。OPC客户端与OPC服务器连接并通过接口与OPC服务器通信,OPC服务器对象向OPC客户端提供创建和操作 OPC 组对象的功能。这些组允许OPC客户对它们要访问的数据进行组织。一组可以作为一个单元被激活或失活。一组也可以提供一种方法允许客户“订阅(Subscription)

34、”项目列表,以便在数据项变化时它能得到通知。每个数据项对象包含一个ID标识(即用字符串表示的数据位号)、一个数值、一个质量值(表示数据的可信度)、一个时间标签(表示最新数据变动时间)。对数据项可进行读写操作并可根据需要使其激活或失活。数据项不能被OPC客户作为对象进行操作,所有对OPC数据项的操作都是通过组对象来进行的。OPC 数据访问服务器所定义的三个对象中只有两个标准的COM 对象,即 OPC Server和OPC Group对象。OPC Server对象是客户端与服务器交互的首要对象。客户端访问OPC Server 对象的接口函数组织管理OPC Group对象。OPC Group对象用于

35、组织管理服务器内部的实时数据信息。在OPC规范中,使用项对象描述实时数据。项对象是非COM对象,也是客户端不可见的对象。OPC Server对象功能主要表现为:创建和管理OPC Group对象;管理服务器内部的状态信息;浏览服务器内部地址空间的数据组织结构。从OPC Server对象的功能可以看出,OPC Server对象面向OPC服务器的技术细节,基本独立于实时数据源,可以统一实现。其中,数据的组织结构和数据源属性与具体数据源有关,需要从用户处获取信息。OPC Group对象的主要功能表现为:管理OPC Group对象的内部状态信息;创建和管理项对象;OPC服务器内部的实时数据存取服务(同步

36、与异步方式)。从OPC Group对象的功能可以看出,该对象面向OPC服务器中的数据存取信息,对实时数据源依赖性很强,需要从用户数据源处获取信息。OPC规范只规定了COM接口的名称和接口向 OPC 客户程序提供的行为,但没有规定如何去实现它。OPC体系结构是客户/服务器模式,OPC服务器组件提供OPC对象接口并管理这些接口。3. 4 OPC数据访问方法OPC数据传输机制主要有同步访问,异步访问和数据订阅三种方式。对于如图3.4所示的同步访问,OPC服务器把按照OPC应用程序的要求得到的数据访问结果作为方法的参数返回给OPC应用程序,OPC应用程序在结果被返回之前必须处于等待状态。 图3.4 同

37、步数据访问处理与此相对,如图3.5所示的异步访问,OPC服务器接到OPC应用程序的要求后,几乎立即将方法返回。OPC应用程序随后可以进行其他处理。当OPC服务器完成数据访问时,触发OPC应用程序的异步访问完成事件,将数据访问结果传送给OPC应用程序。OPC应用程序在VB的事件处理程序中接受从OPC服务器传送来的数据。 图3.5 异步数据访问处理除了上述的同步和异步数据访问以外,还有如图3.6所示的并不需要OPC应用程序向OPC服务器要求,就可以自动接到从OPC服务器送来的变化通知的订阅方式数据采集(Subscription)。服务器按一定的更新周期(Update Rate)更新OPC服务器的数

38、据缓冲器的数值时,如果发现数值有变化时,就会以数据变化事件(Data Change)通知OPC 图3.6 订阅方式数据采集应用程序。如果OPC服务器支持不敏感带(Dead Band),而OPC标签的数据类型是模拟量的情况,只有当前值与前次值的差的绝对值超过一定限度时,才更新缓冲器数据并通知OPC应用程序。由此可以无视模拟值的微小变化,从而减轻OPC服务器和OPC应用程序的负荷。3.5 OPC服务器对象及其组对象接口3.5.1 OPC服务器接口图3.7 标准 OPC 服务器对象OPC服务器对象接口的行为8(图3.7):1、IUnknown所有COM对象必须实现的最基本接口,包括AddRef,Re

39、lease 和QueryInterface,所有COM对象都必须实现这个接口。2、IOPCCommon此接口被应用于各种类型的服务器,它们共享这个接口设计。它提供设置和查询LocaleID(本地语言标识)的功能,对特定的客户/服务器交互有效,也就是说,一个客户的行为不会影响其它客户。3、IOPCServer这是OPC服务器对象的主接口,它可完成组对象的动态创建以及对其进行管理。服务器对象必须提供此接口。AddGroup;创建一个组对象,并返回客户请求的接口指针,其参数反映了组对象创建时的状态。这是组对象暴露给客户程序的唯一途径。GetGroupByName;通过组名获得一个已有私有组对象的接口

40、指针,从而与之建立连接。它主要用于当相应组对象的接口指针都被释放后重新与之建立连接(当然如果此组对象已从内存中删除除外)。GetStatus;返回服务器对象当前状态信息,如服务器运行状态,组对象的数目,版本号,厂商信息,以及当前时间和前次数据刷新时间等等。客户可对 GetStatus方法进行周期性调用来确定服务器是否连接和可用。RemoveGroup;删除不再使用的组对象。当所有的组对象接口都释放后客户再调用此函数,使相应组对象在内存中彻底删除。但它不能用于公共组对象。CreateGroupEnumerator;创建一个可列举当前服务器对象内的组对象的枚举器。可以列举组对象的名称,也可以列举指

41、向组对象的IUnknown 接口的指针。枚举器也是一个COM对象,它实现了相应类型枚举接口,如IEnumString和 IEnumUnknown接口,OPC服务器对它的实现进行了简化,由相应接口函数来创建它的对象,由客户程序来释放它。4、IConnectionPointContainer服务器对象上的此接口主要提供了相对于IOPCShutdown出接口连接点的访问支持。IOPCShutdown出接口用于当服务器主动与客户程序断开连接时对客户程序进行通知。OPC2.0服务器必须支持此接口。它的实现与一般连接点对象的实现相同。5、IOPCItemProperties此接口用于浏览与ITEMID(用

42、于标识一个特定的项)相关的属性,也可读取这些属性当前的值。之所以设计本接口是因为许多ITEMID与其它像代表工程单位范围或对象描述或报警状态的ITEMID相关联。使用此接口可以方便的浏览、定位和读取与特定ITEMID相关的信息,可以在不创建OPC组对象的情况下读取。6、IOPCServerPublicGroups(可选)公共组对象为客户和服务器提供了共享数据的一种机制,可被多个客户程序访问,它可由服务器或客户程序创建。当由客户程序创建时,首先创建私有组对象,然后通过MoveToPublic转换成公共组对象。一个客户程序可通过CreateGroupEnumerator 枚举可用的公共组对象,然后

43、用GetPublicGroupByName连接到公共组对象,再通过IEnumOPCItemAttributes 检查组对象的内容,最后通过使用各种IOPCItemMgt函数分配客户句柄和数据类型。GetPublicGroupByName;通过公共组对象的名字获取指向组对象的指针,从而连接到公共组对象。RemovePublicGroup;删除一个公共组对象。7、IOPCBrowseServerAddressSpace(可选)此接口为OPC客户提供了一个有效访问OPC服务器数据的方式,能够为用户提供相应的ITEMID列表。服务器数据的地址空间可以以平面(flat)结构或分层(hierarchica

44、l)结构来实现,此接口使客户从厂商定义的ITEMID的语法中分离出来。8、IPersistFile (可选)这是一个标准IPersistFile接口的实现。此可选接口允许客户装载和存储OPC服务器的配置,但不能存储任何客户定义的信息像组对象和项对象的定义。3.5.2 OPC组对象接口OPC组对象接口的行为如下8(图3.8):1、IOPCItemMgt此接口的功能是允许客户添加和删除项对象并可控制项对象的行为。AddItems;向组对象中添加一个或多个项对象。可添加相同的数据项两次,但每一个项对象的ServerHandle(项服务器句柄)唯一。ValidateItems;判断数据项能否被合法的添

45、加,不会对组对象造成任何影响。图3.8 标准 OPC组对象RemoveItems;从组对象中删除项对象。从组对象中添加和删除项对象并不影响服务器和物理设备地址空间的数据项,它仅说明了客户是否关心那些数据项。SetActiveState;设置项对象的激活标志。SetClientHandles;改变项对象的客户句柄。一般来讲,客户程序在添加项对象时就设置了客户句柄,在以后不会改变它。SetDatatypes;改变项对象要求的数据类型。CreateEnumerator;在组对象内创建一个可以列举项对象的枚举器。2、IOPCGroupStateMgt此接口允许客户程序管理组对象的所有状态。最基本的是改

46、变组对象的更新率和活动状态。GetState;获得组对象的当前属性状态,如更新率,激活状态,组名,时区,死区,语言标识,客户句柄和服务器句柄等。SetState;客户可设置组对象不同属性的状态,可改变的属性可从其参数知道。SetName;设置私有组对象的名称,名字必须唯一。CloneGroup;使用唯一组名建立某一组对象的另一个副本。新的组对象为私有的。组对象和项对象的几乎所有属性被复制,但新组完全独立于旧的组对象。3、IOPCPublicGroupStateMgt(可选)此接口用于将私有组对象转换成公共组对象,因为当客户创建一个组对象时,被初始化为私有组对象。4、IOPCSyncIO此接口允

47、许客户对服务器执行同步读写操作。操作将一直运行到完成才返回。Read;同步读取组对象内的项的值、品质和时间邮戳等信息。可以从内存(CHCHE)中读取,也可以从设备内直接读取。只有组对象和项对象都处于激活状态时,才可从内存内读取数据。5、IOPCAsyncIO2此接口允许客户对服务器执行异步读写操作,操作被排队等候,函数立即返回。每项操作被看作一个事务,并被分配一个事务 ID,当操作完成时,客户IOPCDataCallback接口的回调将执行。回调中的信息指出了事务 ID 和操作结果。6、IConnectionPointContainer数据访问规范 2.0 组对象必须实现此接口,与服务器对象的

48、此接口的唯一区别是管理得出接口不一样,组对象管理的出接口是IOPCDataCallback 接口,可使客户与服务器连接并进行最有效的数据传送。其接口方法的行为只是将服务器对象的IOPCShutdown接口换成IOPCDataCallback接口即可,可参考服务器对象的实现。7、IEnumOPCItemAttributesIEnumOPCItemAttributes 接口允许客户找出组对象内的项以及项的相关属性(以项属性结构作为枚举对象),它不是组对象实现的一个接口,只能通过IOPCItemMgt:CreateEnumerator 方法创建相应枚举器的实例,不可通过接口查询获得。其接口方法与普通

49、枚举接口方法功能相同。8、IOPCAsyncIO (old)它是数据访问规范 1.0 必须实现的接口之一,按照程序兼容规则,符合规范 2.0的服务器也应该实现规范 1.0 的必选接口。IOPCAsyncIO接口允许客户对服务器执行异步读写操作,其行为与IOPCAsyncIO2 类似,可参考 IOPCAsyncIO2,只是操作完成后结果是由IAdviseSink的回调返回给客户。9、IDataObject (old)OPC规范1.0需要服务器实现的接口,这允许使用OPC数据流格式创建客户与组对象之间的Advise连接,用于进行高效的数据交换。此接口处理的是流而不是单个的项,所以如下方法可只返回

50、E_NOTIMPL。3.6 OPC客户端及其接口3.6.1 OPC客户端概述OPC标准包括服务器和客户端两部分9。OPC服务端的作用是使不同的设备都能够提供标准的符合OPC规范的接口,它一般都是由控制设备的生产厂商提供的。OPC客户端一般由应用软件的开发者自己开发,完成与OPC服务器数据交互等工作。由于OPC服务端和客户端之间的接口是标准的,所以就可以开发出通用的OPC客户端,使不同的应用程序访问同一台设备或者使同一个应用程序访问不同的设备。OPC规范的制定使不同设备之间的交互遵循同样一个标准,因而可以极大地缩短工期和节约资金。3.6.2 OPC客户端的数据来源OPC客户端的数据来源可以分为服

51、务器缓冲区数据(OPCCache)和设备数据(Device)。OPC服务器本身就是一个可执行程序,该程序以设定的速率不断地同物理设备进行数据交互10。服务器内有一个数据缓冲区,其中存有最新的数据值、数据质量戳和时间戳。时间戳表明服务器最近一次从设备读取数据的时间。服务器对设备寄存器的读取是不断进行的,时间戳也在不断更新。客户端既可以从服务器缓冲区读取数据,也可以直接从设备读取数据,但是从设备直接读取数据速度会慢一些,一般只用在故障诊断等特殊情况下。3.6.3 OPC客户端接口1、IOPCDataCallback为支持此连接点,客户必须创建一个既支持 IUnknown 又支持 IOPCDataC

52、all-back的接受器对象。客户向服务器IConnectionPoint的Advise方法传递IUnknown接口建立连接,然后服务器调用其QueryInterface 方法获得IOPCDataCallback接口指针。接口指针可在组对象的数据变化时或 IOPCAsyncIO2接口被调用时用到。OnDataChange;当组对象的数据改变时和Refresh方法调用时服务器调用此方法通知客户进行数据处理。OnReadComplete;当IOPCAsyncIO2接口异步读完成时服务器调用此方法通知客户进行数据处理。OnWriteComplete;当IOPCAsyncIO2接口异步写完成时服务器调

53、用此方法通知客户进行数据处理。OnCancelComplete;当IOPCAsyncIO2接口异步取消操作完成时服务器调用此方法通知客户进行相关处理。2、IOPCShutdown为支持此连接点,客户必须创建一个既支持IUnknown又支持IOPCShutdown的接受器对象。服务器获得IOPCShutdown 接口指针的方法 IOPCDataCallback出接口相同。接口的ShutdownRequest方法在服务器需要切断连接时调用,客户应该用UnAdvise取消所有连接,移除所有组,并释放所有接口。当一个客户程序与多个OPC服务器相连时应该保存相对于每个对象的独立的ShutdownRequ

54、est回调,这样每个服务器可以独立的切断服务11。4 OPC技术在冷轧清洗线中的应用4.1工程背景及工艺4.1.1 工程背景在冷轧带钢的表面上附着许多轧制油,机油铁末和灰尘等异物,清除附着在带钢表面这些污物是清洗线作业的目的,当清洗不净时,退火后这些污垢成为碳化物残留着,既有损外观,也是后步工序产生事故的原因,特别是进行表面涂、镀层等处理的钢板,产生表面层不均,往往使耐蚀性变坏。近来清洗作业为提高生产能力,有高速化,大型化,和自动化的倾向。在高速下要达到清洗得干净,这就成为极大的问题,既要有好的清洗方法,又要对带钢进行有效的跟踪。跟踪是清洗过程计算机控制的基本功能,只有正确的跟踪才能做到各功能

55、程序的正确启动。随着计算机在带钢连续生产线应用的发展,带钢生产线的自动化程度也就越来越高。同时,也要求对带钢的带钢跟踪更为精确,要在生产线的全程对带钢进行有效地跟踪。为设定计算提供正确的带钢数据以及为人机界面提供数据及画面显示提供操作人员及维护人员正确掌握生产状态。这样就需要有在线即时的数据存储器,OPC服务器就包括这种功能,它能全天侯的对现场设备进行即时跟踪,将现场设备的即时数据反映在管理主机上,使工艺调整做出最快、最准确的修正,实现了动态管理。4.1.2 工程工艺冷轧清洗线是冷轧后的工艺流程,它的目的是洗去带钢表面的油污及乳化液。冷轧清洗线工艺分为五部分:上料段、入口段、工艺段、出口段、卸

56、料段。冷轧清洗线工艺流程如图4.1。上料段:入口小车将钢卷从1#或2#鞍座位送到开卷机上的过程,在此过程中开卷机上的一些辅助设备配合进行相应的动作;然后开卷机与磁力皮带反转90度,将带头甩至钢卷上方以便穿带。入口段:从开卷到挖边以及到1#导向夹送辊的过程。首先穿带;接着入口剪切头;然后焊接;最后挖边,通过挖边机挖一个圆角,以利于带钢顺利通过。 图4.1 冷轧清洗线工艺流程图工艺段:从碱洗槽入口压辊到2#导向夹送辊整个清洗的过程。首先经过碱洗槽;接着经过电解槽,然后经过热水刷洗;最后进入漂洗槽漂洗、挤干机挤干、再由烘干机烘干。出口段:从3#导向夹送辊到卷曲的过程。卸料段:出口小车将钢卷从卷取机运

57、到1#或2#鞍座位的过程。卸卷小车把卷取机上的卷先运至打捆位,由门型吊车把卷运走入库。而此时,卷取机进行下一卷的卷曲准备,出口的辅助设备进行相应的动作准备。4.2 OPC服务器与现场设备的连接OPC服务器与现场设备的连接就是OPC服务器与PLC的连接,在软件S7- 400中建立2级组态软件LEVEL2,在LEVEL2下建立OPC Server,这样PLC就与OPC服务器建立了连接(图4.2)。 图4.2 S7- 400中LEVEL2下的OPC Server4.3 OPC服务器与客户端的连接 图4.3 OPC服务器与现场设备和客户端的连接OPC服务器客户端程序的设计思路是先实现服务器对象类,组对

58、象类,项对象类。服务器对象中可添加组对象,组对象中可添加项对象。项对象中添加所要设定和测量的值,将所添加的参数封装在项对象类中。只有从项对象中才能获得参数的值,客户先访问在OPC服务器对象中建立的组对象的IUnknown接口;再通过IUnknown接口连接组对象;最后通过组对象来连接项对象,每个项对象都有一个句柄即项对象的标识,查找项对象的句柄,连接句柄,与项对象建立连接。通过这种方法客户从OPC服务器中获得数据。接着实现Level1类,Level1类即是二级控制系统,客户端的所有操作都通过调用Level1类中的成员函数来实现。然后实现现场设备类Machine类,它是以Level1类的指针lv

59、1为指针建立的类,成员函数update的功能是刷新项对象中的参数值,每隔一段时间访问现场设备,将测量值刷新,返回给Level1。这样实现了OPC服务器与客户端的连接。OPC服务器客户端程序中重要的类有:class COPCServer,class COPCGroup,class OPCItem,class Level1。下面介绍这个4个重要类,具体实现看附录C,D。class COPCServerIOPCServer * opc; /封装指向IOPCServer的指针public:static void Initialize();/初始化COM库 static COPCServer Creat

60、eOPCServer(_bstr_t const & serverName, CLSID const & clsid);/以服务器的名字创建Server对象 COPCGroup AddGroup(DWORD dwUpdateRate);/添加组对象 OPCServerStatus GetStatus();/得到Server的信息,如:启动时间,上一次更新时间,组个数;class COPCGroupOPCHANDLE hServer; /OPC句柄hServerIUnknown * pSink; /指向IUnknown接口的指针IConnectionPointContainer *pCPC; /

61、封装指向IConnectionPointContainer的指针IConnectionPoint *pCP; / 封装指向IConnectionPoint的指针public:void Connect(IUnknown * pSink);/与IUnknown接口连接,即将组对象与OPC服务器相连接this-pSink = pSink;HRESULT hr = S_OK;hr = group-QueryInterface(IID_IConnectionPointContainer, (void*)&pCPC);/查询指向IConnectionPointContainer的指针pCPChr = pC

62、PC-FindConnectionPoint(IID_IOPCDataCallback, &pCP);/寻找连接点,返回指向IOPCDataCallback的指针pCPhr = pCP-Advise(pSink);/建立连接,返回给IUnknown接口指针pSink;class OPCItemstruct _Data /定义一个结构体_Data,其中包含Item名,客户名,服务器名,变量WCHAR wszName50;VARTYPE vt;DWORD hClient;DWORD hServer;VARIANT var;unsigned long refCount;public:getName() const return d_item-wszName; /获得Item名,返回指向wszName的指针void setValue(const VARIANT & var) /将设定值var给itemvoid getValue(VARIANT & val) /从item中得到测量值val;Class Level1是客户端程序中最重要的类,是整个OPC服务器客户端程序运行中的主要部分。 class Level1 COPCServer opc;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!