版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、监督控制与数据采集技术监督控制与数据采集技术华东理工大学自动化系华东理工大学自动化系王华忠王华忠 Ch4 工业控制数据交换标准OPC规范一、一、OPC开发背景和历史开发背景和历史1、为什么需要OPC(1)对于早期的计算机系统,为了实现不同的硬件和软件所构成的计算机之间的数据交换和通信,必须要花费很多时间去开发独自的通信程序。(2)由于驱动程序缺乏统一的连接标准,这样一旦硬件设备升级换代,就需要对相应的驱动程序进行更改,增加了系统的维护费用。(3)即使计算机中的SCADA、HMI等软件都有独立的驱动程序,但一般也不允许同时访问相同的设备,否则很容易造成系统崩溃(4)另一方面,现场控制层作为企业整
2、个信息系统的底层部分,必然需要与生产过程管理层和经营决策层进行集成。这样也存在着监控计算机如何与其它计算机进行信息沟通和传递的问题。图4.1 用驱动程序的系统连接客户应用程序A设备1驱动程序A设备2驱动程序A客户应用程序B设备1驱动程序B设备2驱动程序B设备1设备22、OPC是如何工作的OPC规范是由世界领先的自动化厂商与微软合作制定的一项工业标准,它以组件对象模型和分布式组件对象模型(COM、DCOM)技术为基础,采用C/ S模式,定义了一组COM对象及其接口规范。OPC规范定义了客户程序与服务器程序进行交互的方法,但并没有规定具体的实现,OPC服务器可由不同供应商提供,其代码决定了服务器访
3、问物理设备的方式、数据处理等细节。但这些对OPC 客户程序来说都是透明的,只需要遵循相同的规范或方法就能读取服务器中的数据。通过COM接口,OPC 客户程序可以和一个或多个提供商的OPC服务器连接。同时一个OPC 服务器也可以同多个客户程序相连,形成多对多的关系。任何支持OPC的产品都可以无缝地实现系统集成。由于OPC技术基于DCOM所以客户程序和服务器可以分布在不同的主机上,形成网络化的监控系统。图4.2 利用OPC的控制系统构成客户应用程序AOPC客户程序接口设备1设备2客户应用程序BOPC客户程序接口设备1OPC服务器设备2OPC服务器3、采用OPC的好处:各方受益(1)OPC技术把硬件
4、和应用软件有效地分离开,硬件厂商只需要提供一套软件组件,所有OPC客户程序都可以使用这些组件,无需重复开发单独的驱动程序。一旦硬件升级,只需修改OPC服务器端I/O 接口部分,无需改动客户端程序。(2)工控软件公司只要开发一套OPC接口就可采用统一的方式对不同硬件厂商的设备进行存取操作。这样,软硬件厂商可以专注于各自的核心部分,而不是兼容问题。(3)对于最终用户而言,由于无需担心互操作性,在选择和更换软硬件时有了更多的余地,不再局限于从单一的厂商购买专用成套系统。(4)同时在异构计算机环境下的系统集成将变得很简单,应用程序之间很容易实现信息的共享和交互。用户可以将重点放在整个系统的功能及应用上
5、,这也意味着成本的降低。(5)OPC组件的使用也十分方便,用户只需进行简单的组态即可。4、OPC的历史早期的OPC标准是由提供工控软件的家公司所组成的OPC特别工作小组所开发的。Fisher-Rosement,Intellution,Rockwell Soft ware,Intuitive Technology以及Opto22早在1995年开发了原始的OPC标准,微软同时作为技术顾问给予了支持。OPC基金会(OPC Foundation)是在1996年9月24日在美国的达拉斯举行了第一次理事会,并在同年10月7日在美国的芝加哥举行了第一次全体大会上宣告正式成立的。之后得到迅速发展,中国也成了了
6、OPC促进会。表41 现存的和正在开发的OPC的标准标准版本内容Data Access 1.0A,2.0,3.0 数据访问的标准Alarm and Events1.0,2.0 警报和事件的标准Historical Data 1.0,1.2历史数据访问的标准Batch 1.0 ,2.0批处理的标准Security 1.0安全性的标准Compliance 1.0数据访问标准的测试工具OPC XML 1.01过程数据的XML标准OPC Data eXchange 1.0服务器间数据交换的标准二、二、OPC规范简介规范简介1、OPC规范基础随着软件工业技术的迅
7、速发展,传统的程序升级已经无法满足技术的发展需要,而且程序升级需要大量人力成本,解决这一问题的方法就是将应用程序分割成一些小的应用或组件,然后将这些组件在运行时组装起来以形成所需的应用程序,每一个组件都可以在不影响其他组件的情况下被升级。 在组件技术规范方面,主要有两个标准:一个是由对象管理组织(Object Management Group,OMG)起草并颁布的公共对象请求代理体系结构(Common Object Request Breaker Architecture,CORBA),另外一个是由微软推出的组件对象模型(Component Object Model,COM)技术。 组件实际上
8、是一些小的二进制可执行程序。它可以给应用程序、操作系统以及其他组件提供一些服务。多个COM 对象可以连接起来以形成应用程序或组件系统,每一个应用程序都可划分为多个独立的模块进行开发,这里的每一个独立模块都是一个自给自足的组件。可以采取不同的开发语言去设计每一个组件。在运行时将这些组件通过接口组装起来以形成所需要的应用程序。 (1)COM/DCOM简介简介由微软公司推出的开放的组件标准。COM标准包括规范和实现二大部分,规范部分定义了组件之间通信的机制,这些规范不依赖任何特定的语言和操作系统,具有语言无关性;COM 标准的实现部分是COM 库,COM库为COM规范的具体实现提供了一些核心服务。由
9、于COM以客户/ 服务器模型为基础,因此具有良好的稳定性和很强的扩展能力。分布式组件对象模型(Distributed COM,DCOM)是COM的网络扩展,它建立在COM之上,并且提供了一种使COM组件加入网络环境的透明网络协议,使COM对象能像在本机上一样在网络上彼此交互。DCOM技术的核心是地址透明性,它依赖对象远程过程调用(Object Remote Procedure Call,ORPC)来完成它所有的网络通信工作,使DCOM组件不仅能跨越进程边界,而且能跨越计算机间的物理边界而相互交换信息,程序员不必编写网络通信所需要的繁杂代码。在分布式计算机环境下,DCOM服务器和客户处于不同的地
10、址空间,不能直接交互信息,客户和DCOM服务器通过代理(proxy)对象和存根(stub)模块间接地交互。 客户程序和COM 组件程序进行交互的实体是COM对象。 COM 对象类似C+ 中对象的概念,它是某个类(class)的一个实例,包括一组属性和方法。COM接口是COM规范中最重要的部分,COM规范的核心内容就是对接口的定义,COM都是以接口的形式出现。组件与组件之间、组件与客户程序之间都要通过接口进行交互。 COM 对象提供的方法就是COM接口,它是一组逻辑相关函数的集合。客户程序必须通过接口才能获得COM对象的服务。COM接口的名字以字母I打头。COM组件有两个最基本的接口类,分别是I
11、Unknown、IDispatch。 所有的COM接口都必须继承一个名为IUnknown的接口,COM的核心接口是IUnknown接口。 IUnkown接口提供了两个非常重要的特性:生存期控制和接口查询。 Idispatch为调度接口。调度接口把每一个函数每一个属性都编上号。客户程序要调用这些函数属性的时侯就把这些编号传给IDispatch接口就行了,IDispatch再根据这些编号调用相应的函数。 对于COM对象来说,接口是它与外界交互的唯一途径,因此,封装特性也是COM对象的基本特征。在COM模型中,对象本身对于客户来说是不可见的,客户请求服务时只能通过接口进行,每个COM对象是用一个12
12、8位的全局唯一标识符(Globally Unique Identifier,GUID)来标识的,称为CLSID(class identifier类标识和类ID)。 COM规范采用开放软件基金会 (Open Software Foundation,OSF)的分布式计算环境 (Distributed Computing Enviroment,DCE)规范的描述远程调用接口描述语言 (Interface Description Language,IDL)的基础上,进行扩展形成了COM接口的描述语言。接口描述语言提供了一种不依赖于任何语言的接口描述方法,因此,它可以成为组件程序和客户程序之间的共同语言
13、。 (2)OPC对象与接口对象与接口定制接口(custom interface)自动化接口(automation interface) OPC规范描述了OPC服务器需要实现的COM 对象及其接口,定义了:图4.3 OPC自动化接口和定制接口 (1)图4.4 OPC自动化接口和定制接口 (2)2、OPC数据存取规范(OPC DA) OPC数据存取规范是OPC基金会最初制定的1 个工业标准,其重点是对现场设备的在线数据进行存取。该规范也分为定制接口规范和自动化接口规范二部分,2种接口完成的功能类似,下面主要介绍定制接口规范中基本的对象和接口功能。 OPC数据存取服务器主要由以下几个对象组成:即服务
14、器对象、组对象和项对象。OPC服务器对象维护有关服务器的信息并作为OPC 组对象的包容器,可动态地创建或释放组对象;而OPC 组对象除了维护有关其自身的信息,还提供了包容OPC项的机制,逻辑上管理OPC项;OPC项则表示了与OPC 服务器中数据的连接。图4.5 OPC数据访问对象的分层结构 从定制接口的角度来看,OPC项并不是可以由OPC客户直接操作的对象,因此OPC项没有定义外部接口,所有对OPC 项的操作都是通过包容该项的OPC组对象进行的。而OPC 服务器对象和组对象是聚合关系,即OPC 服务器对象创建OPC 组后,将组对象的指针传递给客户,由客户直接操纵组对象。这样既提高了数据存取的速
15、度也易于功能扩展,体现了组件软件的重用性。(1)OPC服务器对象服务器对象 OPC 服务器对象是OPC 服务器程序暴露的主要对象,客户程序首先创建该对象再通过其接口完成所需功能。图4.6 标准OPC服务器对象 A:IUnknown接口 COM对象必须实现的接口,主要负责对象的接口查询和生存期管理,包括QueryIntertface()、AddRef()和Release()函数。客户程序可以通过QueryInterfac()查询需要访问的接口。因此,客户程序只要得到对象的任何一个接口,就可以访问对象的所有接口。 B:IOPCCommon接口: OPC规范如DataAccess,Historica
16、l DataAccess,Alarms andEvents等的OPC Server对象的公共接口,通过该接口的函数,可以设置或查询组件应用程序的位置标识Local ID,从而实现客户应用程序与服务器的有效会话,且客户程序间不受干扰。C:IOPCServcr接口: 是Server对象的主要接口,主要完成Group对象的添加、删除、获取Server对象的状态、创建组对象枚举器等。 IOPCServer 是OPC Server的主接口,通过它实现OPC Server在操作系统中的安装和注册。此接口是必须要实现的,其所有方法也必须实现。在IOPCServer接口中共有六个函数:IOPCServer:A
17、ddGroup HRESULT AddGroup( LPCWSTR szName,BOOL bActive, DWORD dwRequestedUpdateRate, OPCHANDLE hClientGroup, LONG *pTimeBias, FLOAT * pPercentDeadband, DWORD dwLCID, OPCHANDLE * phServerGroup, DWORD *pRevisedUpdateRate, REFIID riid, LPUNKNOWN * ppUnk );此方法是在OPC Server上建立一个组 IOPCServer:GetErrorString
18、HRESULT GetErrorString( HRESULT dwError,LCID dwLocale, LPWSTR *ppString );为Server的错误代码返回相应的错误字符串 IOPCServer:GetGroupByName HRESULT GetGroupByName( LPCWSTR szName, REFIID riid,PUNKNOWN * ppUnk );通过指定的组名(由同一客户端建立的)找到该组接口指针 IOPCServer:GetStatus HRESULT GetStatus(OPCSERVERSTATUS * ppServerStatus ); 返回当前
19、Server的状态信息 IOPCServer:RemoveGroup HRESULT RemoveGroup( OPCHANDLE hServerGroup,BOOL bForce ); 从服务器中删除指定组在组列表中找到指定的组,并将其删除。 IOPCServer:CreateGroupEnumerator HRESULT CreateGroupEnumerator( OPCENUMSCOPE dwScope,REFIID riid,LPUNKNOWN* ppUnk ); 为Server上所提供的组建立不同的列举器。D:IConnectionPointContainer接口: 是COM标准接
20、口,支持可连接点对象。包含两个成员函数EnumConnectionPoints()和FindConnectionPointo()函数返回连接点枚举器,客户可以利用此枚举器访问COM对象的所有连接点。FindCormectionPoint()函数根据给定接口引用标识LiD,返回相应接口的连接点。当OPC服务器关闭时需要通知所有的客户程序释放OPC组对象和其中的OPC组员,此时可利用该接口调用客户程序方的IOPCShutdown接口实现服务器的正常关闭。 E:IOPCServerPublicGroups、IPersistFile和IOPCBrowseServerAddressSpace为可选接口,
21、OPC服务器提供商可根据需要选择是否需要实现。其中 IOPCServerPublicGroups接口用于对公共组进行管理; IPersistFile接口允许用户装载和保存服务器的设置,这些设置包括服务器通信的波特率、现场设备的地址和名称等。这样用户就可以知道服务器启动和配置的改变而不需要启动其它的程序。 IOPCBrowseServerAddressSpace主要供客户程序来查看服务器中有用项的信息。(2)OPC组对象组对象 OPC 组提供了一种让客户组织数据的方法,用户可以将逻辑相关的一组数据作为OPC项添加到同一个组当中,例如同一个反应器的各点温度等。客户程序可创建多个组对象,并分别设置其
22、属性。客户程序对服务器进行数据存取时是以组对象为单位进行的,即客户程序对组内感兴趣的OPC项进行统一的读写操作,这样无疑提高了数据通信的效率。图4.7 标准OPC组对象 A:IOPCItemMgt接口及其成员函数的功能是允许OPC客户程序添加和删除项对象并可控制项对象的行为。 B:IOPCGroupStateMgt接口及其成员函数允许客户程序管理组对象的所有状态,最基本的功能是改变组对象的更新速率和活动状态。 C:IOPCPublicGroupStateMgt为可选接口,用于将私有组对象转换成公共组对象,因为当客户创建一个组对象时,被初始化为私有组对象。D:lOPCSyncIO接口允许客户对服
23、务器执行同步读写操作,操作将一直运行到完成才返回。E:IOPCAsyncIO2接口允许客户对服务器执行异步读写操作,操作被“排队等候”,函数立即返回。每项操作被看作一个“事务”,并被分配一个事务ID,当操作完成时,客户IOPCDataCallback接口的回调将执行。回调中的信息指出了事务ID和操作结果。F:IConnectionPointContainer接口:组对象必须实现此接口,与服务器对象的此接口的唯一区别是管理的出接口不一样,组对象管理的出接口是IOPCDataCallback接口,可使客户与服务器连接并进行最有效的数据传送。G:IOPCAsyncIO(old)接口是数据存取规范1.
24、0必须实现的接口之一,按照程序兼容规则,符合规范2.0的服务器也应该实现规范1.0的必选接口。H:IDataObject(old)接口是OPC规范1.0需要服务器实现的接口,这允许使用OPC数据流格式创建客户与组对象之间的Advise接,用于进行高效的数据交换。(3)OPC项项 OPC 项表示了与OPC 服务器中数据的连接,包括值(value)、品质(quality)、时间戳(time stamp)三个基本属性。值的数据类型为VARIANT,表示实际的数值;品质则标识数值是否有效;时间戳则反映了从设备读取数据的时间或者服务器刷新其数据存储区的时间。 OPC 项并不是实际的数据源,只是表示与数据
25、源的连接。OPC 规范中定义了两种数据源,即内存数据(cache data)和设备数据(device data)。每个OPC 服务器都有数据存储区,存放着值、品质、时间戳以及相关设备信息,这些数据称为内存数据。而现场设备中的数据则是设备数据。OPC服务器总是按照一定的刷新频率通过相应驱动程序访问各个硬件设备,将现场数据送入数据存储区。三、三、OPC数据访问数据访问1、同步访问同步访问:OPC服务器把按照OPC应用程序的要求得到的数据访问结果作为方法的参数返回给OPC应用程序,OPC应用程序在结果被返回之前必须处于等待状态。图4.8 同步数据访问处理2、异步访问 OPC服务器接到OPC应用程序的
26、要求后,几乎立即将方法返回。OPC应用程序随后可以进行其他处理。当OPC服务器完成数据访问时,触发OPC应用程序的异步访问完成事件,将数据访问结果传送给OPC应用程序。OPC应用程序在VB的事件处理程序中接受从OPC服务器传送来的数据。图4.9 异步数据访问处理3、订阅方式数据采集 服务器用一定的周期检查过程数据,如发现数据变化超过一定的幅度时,则更新数据缓冲器,并自动通知OPC应用程序。 该方式并不需要OPC应用程序向OPC服务器要求,就可以自动接到从OPC服务器送来的变化通知。图4.10 订阅方式数据采集4、刷新 读取所有活动的OPC标签对应的过程数据。应用程序发出更新要求后立即返回,更新
27、完成时发生数据变化事件,OPC应用程序被调出。同步和异步数据访问的特征比较特征同步访问异步访问访问性能因为在访问完成之前应用程序必须一直在等待,尤其大量数据的访问或直接向设备的访问对访问性能的影响很大。因为在访问完成之前应用程序不必等待,可以并行处理,对访问性能的影响不大。程序开发处理程序比较简单,开发容易。因为发出要求和访问完成事件处理是分别进行的,所以必须有事务识别功能,开发比较难。远程连接的分布式COM设置只要分布式COM启动权限和访问权限就可以运行,设置比较简单。除了分布式COM启动权限和访问权限以外,还必须设置身份标志,设置比较复杂。四、其它四、其它OPC规范规范 1、 OPC报警与
28、事件(Alarm and Event)规范 OPC报警与事件接口规范提供了一种机制,通过这种机制,当IO设备中有指定的事件或报警条件发生时,OPC客户程序可以得到通知。通过这个接口,OPC客户程序还可以知道OPC服务器支持哪些事件和条件,并能得到其当前状态。这里使用了过程控制中常用的报警和事件的概念,在不严格的场合,报警和事件也可以互换,两者意义上的差别不是非常明显。 在OPC中,一个报警是一种非正常情况,因此是一种特殊的情况。一个情况是OPC事件服务器(Event Server)或其所包含的对象中命名了的一个状态,而这个状态一般来说是对OPC客户程序有意义的。例如,标签FC101可以有以下几
29、种相关的情况:上限报警、上上限报警、正常、下限报警、下下限报警。 另一方面,一个事件是对OPC服务器、其所表示的IO设备或OPC客户重要的某种可感觉到的变化。一个事件可以是和某种情况相关的,也可能与任何情况无关。例如,数据从正常变化到上限报警或从报警变化到正常状态,这是和某种情况有关的事件。而操作人员的动作(如对系统配置的更改)、系统故障则是与情况无关联的事件。 OPC事件服务器接口类IOPCEventServer通过其方法使得OPC客户程序能够完成以下功能:决定OPC服务器支持的事件的类型;对某些特定的事件进行登记,以便当这些事件发生时,OPC客户程序能得到通知,也可以采用过滤器定义这些事件
30、的一个子集;对OPC服务器实现的情况进行存取或处理。 2、OPC历史数据存取 历史数据引擎可以向感兴趣的用户或客户程序提供关于原始数据的额外信息。目前大部分历史数据系统采用自己专用的接口分发数据,这种方式不能提供即插即用的功能,从而限制了其应用范围和功能。 为了将历史数据和各种不同的应用系统进行集成,可以将历史信息认为是某种数据类型的数据。目前的OPC规范支持以下几种历史数据服务器 (1)简单趋势数据服务器:这种服务器只是提供原始数据和简单存储功能,数据一般以OPC数据存取服务器提供的类型存储,即取数值,品质元组的形式。(2)复合数据压缩和分析服务器:这种服务器可以提供数据压缩功能,还可以提供
31、数据汇总和数据分析功能,如取平均值、最大值、最小值等。支持数据刷新及刷新历史记录,此外,保存历史数据的同时还可以记录对数据的注释信息。3、OPC批量服务器 OPC批量服务器主要用于访问批量控制过程的各类数据源。用于批量控制过程的OPC服务器可以是单纯的OPC批量服务器,也可以是位于现有专用批量过程数据源之上的一套OPC接口。OPC批量服务器的数据源可以是普通的OPC数据访问服务器,也可以是制造商特定的批量过程应用程序。 访问OPC批量服务器的客户应用程序可以通过OPC批量服务器提供的OPC接口访问批量过程数据,也可以借助OPC批量服务器访问OPC数据访问服务器,还可以直接访问OPC数据访问服务
32、器。OPC批量服务器不直接与现场设备通信,一般由OPC数据访问服务器或现有专用批量数据的物理接口访问现场设备的I/O。 五、五、OPC服务器与客户程序设计服务器与客户程序设计1、OPC服务器的设计 OPC 数据服务器可按图4.11的系统结构设计。它主要由服务器对象与接口、数据存储区、硬件驱动程序和服务器界面与设置等部分组成。各个部分功能相对独立又相互协作,形成一个统一的整体。图4.11 OPC服务器系统结构 OPC对象部分是OPC服务器程序与客户程序进行交互的部分。OPC 对象包括服务器对象、组对象、项对象,其中前两个对象是真正的COM对象,能够将各自的接口暴露给客户程序。OPC 服务器对象和
33、组对象之间是聚合关系,即OPC服务器对象创建OPC 组后,将组对象的指针传递给客户,由客户直接操纵组对象。而组对象只是简单地包容OPC项对象,客户程序通过组对象管理OPC 项。 数据存储区中存放着OPC服务器中定义的数据项。数据项包括值、品质、时间戳三个基本属性以及与硬件相关的属性,例如设备号、板卡号、通道号等。数据项的基本属性与OPC规范中定义的OPC项属性一致。客户程序通过组对象添加OPC 项时,将OPC项与数据项关联起来,读取数据时返回其基本属性。数据存储区是服务器的中心部分,需要动态地管理和维护数据项,并与其它部分进行数据交互。 服务器界面与设置部分为用户提供了友善的界面,使用户可以管理数据存储区中数据项并设置其属性。同时该部分负责对硬件的初始设置以及在程序运行期间对硬件的监控和诊断,保证与现场设备的正常通信。该部分还负责保存这些设置,在OPC服务器程序每次运行时能够自动完成设置。 硬件驱动程序是OPC服务器对硬件进行设置和读写操作的部分,不同的硬件均需要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年冀教新版选修化学下册月考试卷含答案
- 2025年沪教版九年级历史上册阶段测试试卷
- 2025年鲁科五四新版九年级历史下册阶段测试试卷
- 2025年苏科新版九年级地理上册阶段测试试卷
- 2025年沪科版选修4历史下册月考试卷含答案
- 2025年北师大版选择性必修1生物上册阶段测试试卷
- 2025年湘教版九年级历史上册月考试卷
- 2025年度门卫值班人员交通秩序管理聘用合同4篇
- 南京二手房2025年度电子合同签订流程规范4篇
- 技能再教育培训合同(2篇)
- 广东省茂名市电白区2024-2025学年七年级上学期期末质量监测生物学试卷(含答案)
- 2024版个人私有房屋购买合同
- 2024爆炸物运输安全保障协议版B版
- 2025年度军人军事秘密保护保密协议与信息安全风险评估合同3篇
- 《食品与食品》课件
- 读书分享会《白夜行》
- 光伏工程施工组织设计
- DB4101-T 121-2024 类家庭社会工作服务规范
- 化学纤维的鉴别与测试方法考核试卷
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
- 自动驾驶汽车道路交通安全性探讨研究论文
评论
0/150
提交评论