单片机毕业论文---基于PLC的水塔水位控制系统的设计.doc_第1页
单片机毕业论文---基于PLC的水塔水位控制系统的设计.doc_第2页
单片机毕业论文---基于PLC的水塔水位控制系统的设计.doc_第3页
单片机毕业论文---基于PLC的水塔水位控制系统的设计.doc_第4页
单片机毕业论文---基于PLC的水塔水位控制系统的设计.doc_第5页
免费预览已结束,剩余33页可下载查看

下载本文档

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

文档简介

毕 业 论 文题目 基于plc的水塔水位控制系统的设计 姓 名: 所在学院: 自动化工程学院 所学专业: 电气工程及其自动化 班 级 08级3班 学 号 200806709082 32毕业论文(设计)任务书论文题目基于plc的水塔水位控制系统的设计院部自动化学院专业电气工程及其自动化班级08级3班毕业论文(设计)的要求一:学生将所学的知识和技能应用于毕业设计中,对实际问题进行分析和概括.二:学生能独立检索和多渠道获取文献资料,学习、了解、提炼和掌握本课题所需材料.三:针对已掌握的知识,设计控制方案.毕业论文(设计)的内容与技术参数一:学习可编程控制器软件s7-300的使用,熟悉硬件配置及指令的运用。学习wincc6.0软件的使用。二:学习利用mpi来实现s7-300和wincc6.0的通信。三:掌握用wincc绘制组态画面的基本方法.四:熟练掌握下位机和上位机的mpi通信,并以此来完成水塔水位控制系统的设计.毕业论文(设计)工作计划2011年12月份:完成论文题目的选取2012年2月份:完成论文的总体框架2012年3月份:完成论文的细节部分2011年4月份:完成论文格式整理及准备论文答辩接受任务日期 年 月 日 要求完成日期 年 月 日学 生 (签名) 年 月 日指 导 教 师 (签名) 年 月 日院长(主任) (签名) 年 月 日摘 要随着科学技术的迅速发展,监控软件在工业生产中发挥着越来越重要的作用。同时,自动化系统对大范围信息共享的需求越来越迫切,因而对工业控制系统的开放性的要求也越来越高。传统的工业上位机监控软件开发都是基于设备的,程序的稳定性和复杂度受制于底层硬件的通讯协议。同一种设备为适应不同的应用程序可能需要有多种不同的驱动程序,不同驱动程序之间存在着不一致性,像工业界所广泛使用的dcs、fcs等系统没有统一的接口标准,难以与现场多种设备连接。因此驱动程序对硬件存在着极大的依赖性。为了满足这种需要,本文提出了一种基于opc技术的监控软件的设计方案。opc(ole for process control)是在microsoft的com/dcom技术的基础上定义的一个工业标准接口。opc技术把对象链接和嵌入技术应用于工业过程控制领域,提供了一种标准的数据访问机制。使得现场设备不管以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性。本文深入研究com技术和opc数据访问规范,并对基于opc的监控软件进行了设计和开发。对opc客户端模块进行了设计;所设计的基于opc的监控软件可以与多种opc服务器进行连接,并能对opc服务器的数据进行读写操作,从而实现了监控软件与多种现场控制设备的数据传输;论文主要介绍煤矿胶带运输机在 wincc 友好的界面下进行组态、编程和数据管理,可以形成所需的操作画面、监控画面、控制画面、报警画面、实时趋势曲线、历史趋势曲线和打印报表等。实现对plc及其他工业现场设备的数据的监控。成功地实现了以统一方式与现场多种设备进行数据访问,避免了驱动程序开发的重复性,具有广阔的应用前景。关键词:opc;com;数据访问(data acess);客户端abstractwith the rapid development of science and technology, in industrial production monitoring software is playing an increasingly important role. at the same time, automated information sharing system to the needs of a wide range of increasingly urgent, and therefore open industrial control systems requirements are increasing. traditional industrial pc control software development are based on equipment, procedures, subject to the stability and complexity of the underlying hardware, communication protocol. the same equipment for different applications may require different drivers, different drivers there are inconsistencies between, as a widely used industrial dcs, fcs and other systems there is no uniform interface standard, it is difficult and on-site a variety of devices. therefore, there is the hardware driver greatly dependent. to meet this need, this paper presents a monitoring software based on opc technology, design. opc (ole for process control) is in microsofts com / dcom technology, based on the definition of an industry standard interface. opc technology to object linking and embedding technology in the field of industrial process control, providing a standard data access mechanism. makes the field device in whatever form, customers in a uniform way to access, thus ensuring the transparency of the software to customers. this article studies the com technology and the opc data access specification, and monitoring of opc-based software design and development. opc client module of the design; the design of the opc-based monitoring software can be connected with a variety of opc servers and opc server can read and write data to achieve the monitoring software and a variety of field control devices data transmission; paper introduces coal belt conveyor friendly interface in wincc configuration, programming and data management, can form the required operation screen, monitor screen, the control screen, the alarm screen, real-time trend curve, historical trend curve and print reporting. to achieve the plc and other industrial field device monitoring data. successfully achieved in a uniform way and field a variety of devices for data access, avoiding repetitive driver development, and has broad application prospects. keywords:opc;com;data acess;clients目 录摘要abstract1、绪论12、opc技术研究32.1 opc的历史和发展现状32.1.1 opc简介32.1.2 opc访问接口32.1.3 opc技术国内外研究现状及发展趋势32.1.4 opc技术的应用32.2 com技术概述42.3 com接口42.3.1接口的定义和标识42.3.2接口描述语言idl52.3.3 com接口特性52.4 com结构62.4.1客户/服务器模型62.4.2 com库72.5 com的实现72.5.1进程内组件和进程外组件72.5.2 com对象的管理73、opc数据访问规范的研究93.1 opc规范简介93.2 opc 数据访问对象与接口93.3.1 opc 服务器对象及其接口103.3.2 opc 组对象及其接口113.3.3 opc 客户端接口133.4 opc 数据访问方式143.4.1同步访问方式143.4.2 异步访问方式143.4.3 订阅访问方式144、基于opc的监控软件的设计154.1监控软件的总体框架154.2 opc客户端模块的设计164.2.1 opc客户端实现机制164.2.2 opc客户端开发的必备条件164.2.3客户端软件总体设计思路174.2.4数据访问服务器对象设计184.2.5客户端详细设计205、监控软件的应用实例235.1 wincc 组态软件235.1.1特点245.1.2功能245.2控制系统分析235.2.1控制系统要求及实现245.2.2监控点位245.2.3皮带部分245.3 wincc与plc通讯实现235.3.1设置pg/pc245.3.2设置通道参数245.3.3系统运行测试245.4组态监控画面265.4.1创建项目245.4.2建立驱动连接245.4.3画面245.4.4变量的创建和归档29结论30致谢31参考文献32基于opc的监控软件设计1 绪论随着计算机网络的普及以及信息化、智能化的发展,自动化软件的发展趋势成为整合it与工厂自动化的关键。组态软件就是伴随着dcs的出现逐渐被广大的生产过程自动化技术人员所熟悉的,并朝着开放性,集成化,网络化,小型化,组件化,通讯接口opc化方向发展。因其有数据采集和输出、数据处理、数据显示和保存等几个典型的特点,从而在工业生产控制过程中展现出了广阔的应用前景。本论文分析工业数据采集和监控软件一般结构和开发方法,设计一套组态工具以便快速、稳定地开发出可靠的监控系统。opc的提出彻底改变了传统开发模式,上层应用软件作为opc数据客户端可以不包含任何硬件通讯接口程序,不关心底层是什么硬件。只要遵循opc数据接口协议,就能够从不同的硬件商提供的opc数据服务器中取得数据,从而实现数据的灵活配置和多种系统的真正集成。工业控制领域用到大量的现场设备,在opc出现以前,软件开发商需要开发大量的驱动程序来连接这些设备。应用程序驱动程序与设备一般是一对一的,如图1.1。因此会导致重复开发,设备不可互换, 改造升级困难,访问冲突等问题。具有软件包a的pc具有专用软件的plc具有专用软件的dcs设备a设备b设备c图1.1 传统的数据访问方式采用opc标准(主要是opc da,data access)后,驱动程序不再由软件开发商开发,而是由硬件开发商根据硬件的特征,将各个硬件设备驱动程序和通讯程序封装成可独立运行或嵌入式运行的opc数据服务器。由于这一部分工作由熟悉该硬件性能的硬件提供商完成,一方面能够最大限度地挖掘硬件的潜力,提高驱动程序的性能,从而避免了开发重复性,使开发费用大大降低;另一方面,硬件驱动程序封装成opc服务器后,相对于上层应用硬件的性能特征和通讯协议是不可见的,使硬件提供方的技术得到了保护。使用opc技术使每个opc客户可以连接到一个或多个opc服务器,形成如图1.2所示的c/s系统构架:opc客户机aopc客户机bopc客户机copc服务器aopc服务器bopc服务器c图1.2 opc da 对现场数据的垂直访问方式2 opc技术研究opc技术是基于微软的com/dcom(组件对象模型/分布式组件对象模型)技术而建立起来的一项技术,首先需要对com/dcom 技术有较深入的理解和认识,而dcom 是com 的扩展,因此只有熟练掌握了com 的基本概念和特性,才能开发出opc 客户端程序。2.1 opc的历史和发展现状2.1.1 opc简介opc 是ole for process control的缩写, 即把ole应用于工业控制领域。是opc基金会组织倡导的工业控制和生产自动化领域中的硬件和软件之间的标准接口。ole原意是对象链接和嵌入,随着ole 2的发行。其范围已远远超出了这个概念。现在的ole包容了许多新的特征,如统一数据传输、结构化存储和自动化,已经成为独立于计算机语言、操作系统甚至硬件平台的一种规范,是面向对象程序设计概念的进一步推广。opc建立于ole规范之上,它为工业控制领域提供了一种标准的数据访问机制。它实现的就是一个桥梁,把所有底层的信息收集起来,集中管理,再提供给上层的软件。统一了各厂家的数据接口。2.1.2 opc访问接口opc服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。这两种接口是:自动化接口(automation interface);自定义接口(custom interface)。自动化接口通常是为基于脚本编程语言而定义的标准接口,可以使用visualbasic、delphi、powerbuilder等编程语言开发opc服务器的客户应用。而自定义接口是专门为c+等高级编程语言而制定的标准接口。opc现已成为工业界系统互联的缺省方案,为工业监控编程带来了便利,用户不用为通讯协议的难题而苦恼。任何一家自动化软件解决方案的提供者,如果它不能全方位地支持opc,则必将被历史所淘汰。2.1.3 opc技术国内外研究现状及发展趋势opc技术作为一项己经成型的过程控制领域软硬件接口的数据通讯标准,opc受到了国内工控行业的足够重视,在控制的各个领域对opc技术的应用越来越广泛。国内许多公司都纷纷在自己的产品中增加opc特性,包括为控制应用软件添加opc客户端的功能,为现场设备提供opc服务器等。一些国内工控软件公司也充分利用opc技术增强和扩展其软件功能,例如,北京亚控公司的组态王,三维力控等。同时一些研发机构还开发了opc可视化开发软件包和相应控件。opc技术己成为许多新型控制系统数据传递的核心技术,opc的应用主要应先将opc da技术应用成熟,然后才考虑基于opc的实时数据库、复杂数据,批处理等。要形成完全自主产权的控制系统,研发控制系统配套软件,还应该紧跟技术的最新发展,使产品的在兼容性、互操作性方面有更大的提高。2.1.4 opc技术的应用由于opc技术的采用,使得可以以更简单的系统结构、更长的寿命、更低的价格解决工业控制成为可能。同时现场设备与系统的连接也更加简单、灵活、方便。因此opc技术在国内的工业控制领域得到了广泛的应用,主要应用领域如下: 1) 数据采集技术opc技术通常在数据采集软件中广泛应用。现在众多硬件厂商提供的产品均带有标准的opc接口,opc实现了应用程序和工业控制设备之间高效、灵活的数据读写,可以编制符合标准opc接口的客户端应用软件完成数据的采集任务。 2)历史数据访问opc提供了读取存储在过程数据存档文件、数据库或远程终端设备中的历史数据以及对其操作、编辑的方法。 3)报警和事件处理opc提供了opc服务器发生异常时,以及opc服务器设定事件到来时向opc客户发送通知的一种机制,通过使用opc技术,能够更好的捕捉控制过程中的各种报警和事件并给予相应的处理。 4)数据冗余技术工控软件开发中,冗余技术是一项最为重要的技术,它是系统长期稳定工作的保障。opc技术的使用可以更加方便的实现软件冗余,而且具有较好的开放性和可互操作性。 5)远程数据访问借助microsoft的dcom(分散式组件对象模型)技术,opc实现了高性能的远程数据访问能力,从而使得工业控制软件之间的数据交换更加。2.2 com技术概述com(component object model,组件对象模型)是由microsoft 提出的组件标准,是ole、activexows的、可扩充的、面向对象的通讯协议。com 不仅定义了组件程序之间进行交互的程序提供、dcom 技术的基础,它主要是为了实写现软件复用和互操作,并且为基于wind了统一的标准,并且也提供了组件程序运行所需的环境。该模型的定义实现了语言无关、厂商无关、位置透明以及减少版本问题,从而使得来自不同厂商、不同语言编和运行在不同平台上的com对象能够彼此协调地运行,共同实现某一任务。提供的是面向对象的组件模型,com组件提供给客户的是以对象形式封装起来的实com体。客户程序与com组件程序进行交互的实体是com对象,它并不关心组件模块的名称和位置(位置透明性),但必须知道自己在与哪个com对象交互。由于com组件的位置透明性,客户程序并不直接去访问com组件,而是通过一个全局唯一标识符guid(global unique identifier)进行对象的创建和初始化工作。com规范采用的全局唯一标识符是一个128位的随机数,不需要专门机构进行分配和管理。2.3 com接口com对象和它的客户之间通过接口进行交互,因此com规范的核心内容就是关于接口的定义。另外,接口的标识、接口的调用习惯、参数处理、接口与对象的关系以及接口与c/c+的关系、com 接口所具有的特性等都需要仔细研究。2.3.1 接口的定义和标识从技术上讲,接口是包含了一组函数的数据结构,通过这组数据结构,客户代码可以调用组件对象的功能。即接口定义了一组成员函数,这组成员函数是组件对象暴露出来的所有信息,客户程序利用这些函数获得组件对象的服务。客户程序用一个指向接口数据结构的指针来调用接口成员函数。如图 2.1 所示,接口指针实际上又指向另一个指针,这第二个指针指向一组函数,称为接口函数表,接口函数表中每一项为4 个字节长度的函数指针,每个函数指针与对象的具体实现连接起来。通过这种方式,客户只要获得了接口指针,就可调用到对象的实际功能。 图 2.1 接口结构通常我们把接口函数表称为虚函数表(virtual function table,简称 vtable),指向 vtable 的指针为 pvtable。对于一个接口来说,它的虚函数表 vtable 是确定的,因此接口成员函数个数是不变的,而且成员函数的先后顺序也是不变的;对于每个成员函数其参数和返回值也是确定的。在一个接口的定义中,所有这些信息都必须在二进制一级确定,不管什么语言,只要能支持这样的内存结构描述,就可以定义接口。因为接口是用于组件程序和客户程序之间的通信桥梁,所以接口应该具有不变性,一个com 对象可以支持很多个接口。但客户程序如何来标识一个接口呢?类似于com 对象的标识方法,com 接口也采用全局唯一标识符,被称为接口标识符iid(interface identifier)。如果客户要使用一个com 对象的某个接口,则它必须知道该接口的iid 和接口所能够提供的方法。2.3.2 接口描述语言idl在 osf(open software foundation,开放软件基金会)的 dce (distributedcomputing environment,分布式计算环境)规范中,使用了idl(interface description language,接口描述语言)来描述远程调用接口,com 规范在这个基础上,进行扩展形成了com 接口的描述语言。接口描述语言提供了一种不依赖于任何语言的接口描述方法,因此,它可以成为组件程序和客户程序之间的共同语言。com 规范使用的idl 接口描述语言不仅可用于定义com 接口,同时还定义了一些常用的数据类型。对于接口成员函数,我们可以指定每个参数的类型、输入输出特性,甚至支持可变长度的数组的描述。idl 还支持指针类型,与c/c+很类似。visual c+提供了midl 工具,可以把idl 接口描述文件编译成c/c+兼容的接口描述头文件(.h),可被组件程序和客户程序所使用。2.3.3 com接口特性1) 二进制特性接口规范并不建立在任何编程语言的基础上,而是规定了二进制的标准。任何语言只要有足够的表达能力,它就可以对接口进行描述,从而可以用于与组件程序有关的应用开发。2) 接口不变性接口是客户程序和组件程序之间的桥梁,具有不变性,只要客户程序和组件程序都按照规定的接口设计进行开发,则可保证两者独立开发结束后它们的协作能达到预期的效果。3) 继承性(扩展性)接口也可以继承发展,但接口继承只是说明继承,即派生的接口只继承了基接口的成员函数说明,并没有继承基接口的实现,因为接口定义不包含函数的实现部分;而且接口的继承只允许单继承,不允许多重继承。根据com规范,所有的接口都必须从iunknown 接口派生,但com并不提倡接口继承,除非在发展接口时无论从功能上还是语义上都应该采用接口继承,才会使用接口的继承特性。4) 多态性多态性是面向对象系统的重要特性,com对象的多态性通过com接口体现。多态性使得客户程序可以用统一的方法处理不同的对象,甚至是不同类型的对象,只要它们实现了同样的接口。如果几个不同的com 对象实现了同一个接口,则客户程序可以用同样的代码调用这些com 对象。2.4 com结构com 为组件程序和应用程序之间进行通信提供了统一的标准,它为组件程序提供了一个面向对象的活动环境。com 包括规范和实现两大部分,规范部分定义了组件和组件之间通信的机制,这些规范不依赖于任何特定的语言和操作系统,只要按照该规范,任何语言都可使用;com实现部分是com库,com库为com 规范的具体实现提供了一些核心服务。2.4.1 客户/服务器模型 对象和客户之间的相互作用是建立在客户服务器模型的基础上,客户服务器模型的最大优点是稳定性好,而稳定性正是com 模型的目标,尤其对于跨进程的程序通信,稳定性更会带来性能上的高可靠性。com 不仅仅是一种简单的客户服务器模型,有时客户也反过来提供服务,或者服务方本身也需要其它对象的一些功能 ,在这些情况下,一个对象可能即是服务器也是客户,com 能够有效地处理这些情况。客户服务器模型是一种发展比较成功的软件模型,com 就是以客户服务器模型为基础,并灵活地使用了这种模型。如图2.2,四种com 模型中每一个箭头就代表了一个客户服务器关系。客户对象1(客户)对象客户对象对象1 客户a对象2对象1 客户对象2(a)(b)(c)(d)(a)简单客户/服务器模型 (b)客户/服务器模型的双重结构 (c)com 中的包容模型 (d)com 中的聚合模型图2.2 com 中客户/服务器模型的几种用法2.4.2 com库com库是com标准的实现部分,其中包括一些核心的系统级代码,正是这部分代码,才使得对象与客户之间可通过接口在二进制代码级进行交互。在windows 操作系统环境下,这些库以dll文件的形式存在,其中包含以下内容:1) 提供了少量的api 函数实现客户和服务器端com 应用的创建过程。在客户端,主要是一些创建函数;而在服务器端,提供了一些对对象的访问支持。2) com 通过注册表查找本地服务器,及程序名与clsid 的转换等。3) 提供了一种标准的内存控制方法,使应用程序控制进程中内存的分配。com 库的实现必须依赖于具体的系统平台,尤其是系统底层的一些标准,因此一个操作系统只有一个com 库实现。com 库可以保证所有的组件按统一的方式进行交互操作,它使我们在编写com 应用时,可不编写为进行com 通信而必需的大量基础代码,而是直接利用com 库提供的api 进行编程,从而大大加快了开发速度。2.5 com的实现com的实现与操作系统平台密切相关,因为com源于windows平台,所以com实现部分(即com库)很多地方直接用到了windows系统的一些特性,如系统注册表、动态链接库等等,但实际上com是一个与平台无关的组件软件模型,我们在windows上使用的com标准只是com的一个具体实现。2.5.1 进程内组件和进程外组件进程是一个正在运行的程序,它有单独的内存地址空间,拥有自己的一些系统资源。如果我们用动态连接库的方式实现组件程序, 则客户程序调用组件程序的服务时,会把组件程序装入到自己的进程中, 所以客户程序和组件程序运行在同一个进程空间中,就把这种组件程序称为进程内组件;如果用exe程序的方式实现组件程序,这种组件程序在被调用时有其自己的进程空间,它运行在与客户程序同一个机器上或者在远程机器上的另一个进程空间内,所以客户程序和组件程序运行在不同的进程空间中,就把这种组件程序称为进程外组件5。虽然com对象有不同的进程模型,但这种区别对于客户程序来说是透明的,因此客户程序在使用组件对象时可以不管这种区别的存在,只要遵照com规范即可。进程内模型的优点是效率高,但组件不稳定会引起客户进程崩溃;进程外模型的优点是稳定性好,组件进程不会危及客户程序,但进程外组件开销大,而且调用效率相对低一些。用户可根据自己的需要选择进程模型。对于进程外组件需要注意的问题是进程之间如何进行通信。com采用了本地过程调用(lpc)和远过程调用(rpc)的方法进行通信。lpc用于同一个机器上的进程之间的通信,rpc用于不同机器上的进程间的通信,它们机理相同,但rpc涉及网络传递信息,要比lpc复杂。为了实现进程外组件,我们除了实现组件程序外,还应该实现代理dll和存根dll两个程序模块。如果我们使用自定义的com接口,应建立自己的dll程序,如果我们使用已定义的标准接口或者ole接口,可直接使用系统提供的dll,com库会为我们处理这些细节。2.5.2 com对象的管理com规范使用128位guid来标识com对象和接口,客户程序通过这些guid值来创建com对象并与对象进行交互。因为客户程序与组件程序是独立的客户程序在创建对象时并不一定知道组件程序的确切位置,按照com规范,客程序通过com库完成对象的创建工作。com库通过系统注册表所提供的信息行组件的创建工作,系统注册表是一个全操作系统范围公用的信息仓库,其中包含了所有的com组件必要的信息以及其它一些信息。组件程序把它所实现的com对象的信息以及接口信息都保存到注册表中,个步骤称为组件的注册,如果组件程序具有自注册能力则我们称该组件程序为可自注册的(self-registering)组件。客户程序在创建组件对象时,也需要直接或者间接地访问注册表中的信息。对于有自注册能力的组件分两种情况进行注册工作,进程内组件本身是一个动态链接库,不能直接运行,要靠其它程序调用才能获得控制。windows系统提供实用工具regsvr32.exe对其进行注册,只要进程内组件提供了相应的入口函数dllregisterserver和dllunregisterserver就可完成对组件的注册与注销工作。进程外组件是一个可执行程序,它不能提供入口函数供其它程序调用,因此com规范规定支持自注册的进程外组件必须支持两个命令行参数/regserver和/unregserver以便完成注册和注销工作。对于非自注册的组件程序其注册过程与组件程序本身没有直接关系,必须单独进行注册信息的配置,如可编写一个注册表文件,然后在regedit中引入。3 opc数据访问规范的研究3.1 opc规范简介opc规范由世界领先的自动化设备制造商与微软协商制定,它把硬件供应商和软件开发商分离开来,在设备、数据库等数据源和客户之间架起一座桥梁,为解决统一标准问题提供了方案。opc 规范定义了特定的com 接口,但是并没有说明如何实现这些接口,它规定服务器提供给客户应用程序的接口所应该具有的行为特征,而把实现方法交给opc 服务器提供者来制定。目前已经推出的opc规范如表3.1:表3.1 opc主要标准标准主要版本主要内容opc data accessvl.0,2.0,3.0数据访问规范opc alarm and eventsvl.10,1.00报警与事件规范opc batchv2.00,1.00批量过程规范opc data exchangev1.00数据交换规范opc historical data accessv1.2,1.0历史数据存取规范opc securityv1.00安全性规范opc xml dav1.00,0.18xml数据访问规范opc complex datav1.0复杂数据规范opc commandsv1.0命令规范opc-ua正在开发统一架构规范尽管opc 技术在不断发展,但是层层剖析,可以看到opc 规范建立的核心是数据访问(opc da)规范,opc基金会最初制定的一个工业标准,它提供给用户访问实时过程数据的方法,为各厂家提供了一个公用的数据交换标准和规范。对高度敏感的实时数据分离,可以得到报警/事件概念,制定报警/事件规范;对面向趋势显示、历史分析、报表的数据,opc 制定了历史数据访问规范。所以对于开发者来说,opc da 是实现的重点,其它都是在opc da 的基础上添加接口或外加包文件而成。而且在实际项目中,opc da 应用场合最广泛,也正是基于此,本课题最终的着眼点放在opc da 客户端的实现上,并建立一个稳定的基础架构,为其它应用的扩展打下良好的基础。3.2 opc 数据访问对象与接口opc 数据访问规范规定opc 服务器必须实现两个com 对象:服务器对象和组对象。通过对这两种标准的com 对象及相应接口的操作,我们可以完成opc数据访问客户端的开发。图3.3 和图3.4 分别是opc 数据访问规范3.0 版本服务器对象和组对象的接口总观。(带*的为3.0 新增的接口)opc serveriunknowniopcserveriopccommoniopcbrowser*iconnectionpointcontainetiopcitemio*图 3.3 opc 服务器对象必选接口图 3.4 opc 组对象必选接口opc 服务器对象是客户端与服务器交互的首要对象。客户端通过访问服务器对象的接口函数与之交互。一个服务器对象里可以设置一个以上的组对象。opc服务器对象的主要功能为:创建和管理组对象;管理服务器内部的状态信息;将服务器的错误代码翻译成描述性语句;浏览服务器内部的数据组织结构;同步读写数据等。组对象用于组织管理服务器内部的实时数据信息,它是 opc 项对象的集合。正因为有了组对象,opc 应用程序就可以成批地对所需要的数据进行访问,也可以以组为单位启动或停止数据访问。其主要功能为:管理组对象内部的状态信息;创建和管理项对象;进行数据访问(同步与异步方式)。3.3.1 opc 服务器对象及其接口opc 服务器对象是opc 服务器向外暴露的基本对象,在3.0版本中,服务器对象主要定义了5个接口。下面简单的说明一下opc 数据访问3.0版本规范中定义的服务器对象每个接口的功能3:1) iopcserver这是 opc 服务器对象的主接口,它可完成组对象的动态创建以及对其进行管理,以及管理服务器内部的状态信息。服务器对象必须提供此接口。 2) iopccommon其他opc 服务器像报警和事件服务器共享这个接口设计。它提供设置和查询localeid 的功能,对特定的client/server 交互有效,也就是说,一个客户的行为不会影响其他客户。3) iopcbrowser这是3.0 版本新增的接口,为浏览服务器地址空间和获得项属性提供改进的方法。该接口里的方法原意是用来影射xmlda 接口里相应的方法。4) iconnectionpointcontainer此接口提供了相对于iopcshutdown接口连接点的访问支持。5) iopcitemio这是3.0 版本新增的接口,目的是为简单的应用程序访问opc 数据提供一个非常容易的途径,即不用通过建立一个组对象就能对数据项进行操作;另外一个目的是,提供一个把时间戳和品质信息写进支持该功能的服务器的方法。3.3.2 opc 组对象及其接口opc 组对象是opc 服务器用来管理项集合的对象,具有某些一般的属性和行为,可影响接口和方法的操作,在介绍组对象的接口功能前,我们先看一下组对象的相关属性。1) 组名每一个组对象拥有一个名字。在同属于一个客户程序的其它组对象中该名字是唯一的。客户程序可以改变一个组的名字。组名字大小写敏感,如 group l 与groupl 是不同的。2) 缓存(cached)数据组对象的许多接口方法允许客户明确说明其操作的数据源,“缓存(cache)”或“设备(device)”。数据源不同,方法的行为也不同,其实现细节由开发者决定。多数情况下服务器访问缓存要快于访问设备,但缓存数据受组对象和项对象激活状态的影响,而设备数据不受此激活状态的影响。3) 激活标志(active)组对象和其内部的项对象都有一个激活标志。组对象的激活状态和项对象的激活状态相互独立。组对象状态的改变不会改变项对象的状态。在实际中,多数服务器将使用这个标志来最优化通信和cpu 资源。非激活状态的项对象和组对象不必要在缓存内保持。4) 更新率客户程序可为每一个组对象指定一个“更新率”。这确定了项对象值的异常限(exception limit)被检测的时间。如果超出了异常限,缓存中的值将被更新。服务器应该尽最大可能保持缓存内数据为最新。更新率也会影响发送到客户端的回调的通知的最大速率。服务器永远不会以比客户要求的更快的速率向客户程序送数据。5) 时区(时差)在某些情况下数据收集的设备所在的时区与客户程序所在的时区不同,所以客户程序知道数据被收集时的设备时间很有必要。opc 组对象提供了一个用于存储时区的地方,可被客户程序设置和读取,其默认值是主机的时区。opc 服务器不会用此值,这只是为了客户程序的方便。6) 百分比死区死区的范围从 0.0%到100%,它适用于组对象内具有dweutype(工程单位类型)的模拟数据项,项的eu 低限和eu 高限可用来计算项值的范围。这个范围与百分比死区相乘将产生一个异常限。百分比死区可在调用 addgroup 时设置,一个特定的组对象内的所有项对象允许使用相同的百分比死区。然而在 opc da3.0 中,允许设置项对象每一个基本元素的百分比死区。这意味着每个项对象都有可能潜在的越过其驻留的组对象设置的百分比死区。如果值超出了异常限,缓存中的最近值被新值更新,并且服务器会向客户端的回调(如果有)发一个通知。百分比死区是服务器的一个可选行为。如果客户程序在支持该行为的服务器上不指定百分比死区的值,则服务器假定为默认值“0”,所有值的变化都将更新缓存。注意,无论缓存的值是否被更新,时间戳都将被更新。组对象的更新率(updaterate)或者项对象的采样率如果被设置,将确定一个值以查看其是否超出异常限的时间间隔。百分比死区用来避免噪声信号使客户程序进行没不必要的更新。7) 客户句柄在任何的回调中将会返回这个句柄。这将使客户程序可以标识数据项所属的组对象。客户程序如果想要使用opc 接口的任何异步函数,比如iopcasyncio2iconnectionpoint或iopcdatacallback 接口,它应为客户句柄分配一个唯一值。8) 读写数据客户程序要获得数据主要有 6 种方式:iopcsyncio:read(同步,从缓存或设备)iopcasyncio2:read(异步,从设备)iopccallback:ondatachange()(基于异常的或通过刷新操作)iopcasyncio2:refresh 触发iopcltemio:read(从缓存或设备,也被缓存数据“staleness”确定)iopcsyncio2:readmaxage(从缓存或设备,也被缓存数据的“staleness”确定)iopcasyncio3:readmaxage(从缓存或设备,也被缓存数据的“staleness”确定)通常这六个方法在操作上独立,互相之间没有“副作用”。建议较新的应用程序在进行大多数读操作时使用ondatachange,iopcsyncio2 或iopcasyncio3。有五种方式向外写数据:iopcsyncio:writeiopcasyncio2:writeiopcitemio:writevqtiopcsyncio2:writevqtiopcasyncio3:writevqt在3.0 版本中,组对象主要定义了10 个接口。下面简单的说明一下opc 数据访问3.0 版本规范中定义的组对象每个接口的功能:1) iopcitemmgt该接口允许客户添加和删除组对象内的项对象,并控制这些项对象的行为。2) iopcgroupstatemgt该接口允许客户程序管理组对象的所有状态。最基本的是改变组对象的更新率和激活状态。3)iopcgroupstatemgt2这是 3.0 版本新增的接口,该接口的增加是为了增强原有的 iopcgroup statemgt 接口。该接口是从iopcgroupstatemgt 继承,因此所有的iopcgroup statemgt 接口的方法定义同时也是该接口的一部分。该接口的目的是为一个订阅(subscription)设置和获取keep-alive 时间。当一个订阅有一个非零的keep-alive 时间,服务器将确保客户程序在订阅的最低限度内,以keep-alive 时间指示的速率收到回调,甚至没有新的事件产生也会如此。通过以最小的已知频率提供回调,在没有借助于调用getstatus()来连接服务器的情况下,客户程序能确保服务器和订阅之间的正常。4) iopcsyncio该接口允许客户对服务器执行同步读写操作。操作将一直运行到完成才返回。5) iopcsyncio225这是 3.0 版本新增的接口,该接口的增加是为了增强原有的iopcsyncio接口。该接口是从iopcsyncio继承,因此所有的iopcsyncio接口的方法定义同时也是该接口的一部分。该接口的目的是提供一组标准的方法把时间邮戳和品质信息写到支持该功能的服务器中。另外,还提供读基于“maxage”的组的能力。该接口与iopcitemio 的不同之处在于,它是基于组的,而iopcitemio 是基于服务器对象的。6) iopcasyncio2该接口允许客户对服务器执行异步读写操作,操作被排队等候,函数立即返回,所以服务器可继续运行。每项操作被看作一个事务(transaction),并被分配一个事务id,当操作完成时,客户iopcdatacatiback 接口的回调将执行。回调中的信息指出了事务id 和操作结果。7) iopcasyncio3这是 3.0 版本新增的接口,该接口的增加是为了增强原有的iopcasyncio2接口。该接口是从iopcasyncio2 继承,因此所有的iopcasyncio2 接口的方法定义同时也是该接口的一部分。该接口的目的是提供一组标准的方法把时间邮戳和品质信息通过异步的方式写到支持该功能的服务器中。另外,还提供异步读基于“maxage”的组的能力。该接口与iopcite

温馨提示

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

评论

0/150

提交评论