目录
1 opc 发展历程
OPC是英文“OLE for Process Control”的缩写,是工业自动化领域中的一种工业通信标准。它通过定义一些在不同平台上具有通用性的规范,实现了各种设备、不同制造厂商及不同代表的设备可互联互通。
我们将通过多篇文档来介绍OPC通讯标准。
今天我们来聊一聊OPC通讯标准的前世今生。
1.1 OPC产生的背景
在OPC通讯标准产生之前,自动化设备对外数据服务没有统一的接口标准。不同的软硬件厂商都有自己的一套标准。如早期的PhoneWell DCS、横河DCS、Foxboro DCS都有各自的数据服务接口,为此,要从这些设备或系统中采集数据,必须编写不同的通讯接口。这好比如早期的手机充电接口,不同厂家的手机必须配备厂家自带的充电器,或者通过各种转换接口,否则无法充电。这就给工业互联效率和成本带来很大的阻碍。
为了解决这种接口不统一造成工业互联效率低下、成本高的现状,1995年,由Microsoft和3个工业自动化系统供应商共同创立OPC(OLE for Process Control)Foundation组织。OPC Foundation致力于定义一组开放、中立、标准的数据接口规范,建立一种工业自动化领域内通用的数据通信机制。在1996年,OPC第一个版本定义了核心规范(COM/DCOM)和数据访问规范(DA),此后不断推出新的规范,包括历史数据规范(HDA)、报警和事件规范(A&E)等等。目前,OPC已经广泛应用于各种设备连接与数据采集场合。这个过程如同手机充电接口的统一,当然,除了坑人的苹果手机,这无疑给用户带来了极大的方便。
OPC通讯标准的发展经历了经典OPC和OPC UA两个阶段。
1.2 经典OPC
经典OPC是第一代OPC技术, 英文全称为:OLE for Process Control。OLE技术是基于微软公司的COM/DCOM技术,因此经典OPC本质上是基于COM/DCOM的过程控制技术。经典OPC提供了一整套过程控制中数据交换的软件标准和接口,包括:
1)OPC DA(OPC Data Access):OPC数据访问接口,这是最常用到的接口,接口定义了数据交换的规范,包括:过程值、更新时间、数据品质等信息。目前OPC DA经历1.0版本(1997年)、2.0版本(2002年)、3.0版本(2003年)。
2) OPC AE (OPC Alarms & Events):OPC报警与事件接口,接口定义了报警、事件消息、变量的状态及如何管理。
3) OPC HDA(OPC Historical Data Access): OPC历史数据访问接口,接口定义了访问及分析历史数据的方法。
4) OPC XML-DA:XML数据访问,脱离Windows COM/DCOM技术,提供基于XML、SOAP、HTTP的数据交换。
5) OPC DX(Data eXchange):提供在OPC服务器之间交换数据的功能,该标准的主要目的是为来自不同制造商的设备和程序之间的数据交换创建网关。
OPC接口涉及对接双方,对接方可以分为OPC Server和OPC Client。OPC Server一般由厂商提供,负责与系统、设备通讯,将系统、设备的数据封装成对外服务的OPC接口。OPC Client则是符合OPC标准的客户端软件,可以由第三方自行开发,通过OPC标准接口与OPC Server进行通讯,可以获取到系统、设备的实时数据,也可将指令下载到系统或设备。经典OPC网络拓扑图如下图所示。
由于采用了标准的OPC接口,不同厂家的系统、设备对外数据服务采用相同的规范,1个OPC客户端可以对接不同厂家的系统、设备,大大提高了工业互联的效率,从而降低互联成本。
1.3 OPC UA
OPC自发布以来广泛应用在工业互联中,但由于对COM/DCOM技术的依赖性,该技术在安全性、跨平台性以及连通性方面都存在很多问题。如:很难通过Internet/Intranet,尤其是企业防火墙;难以运行在非Windows系统中,也难以在嵌入式系统中实现;很多上层应用没有COM接口,难以进行远程调用等。
OPC UA的推出,正是基于这一背景。该技术不再依靠DCOM,而是基于面向服务的架构 (SOA),提供了如平台独立性,扩展性,高可靠性和连接互联网的能力。因此,OPC UA的使用更简便。
OPC UA(OPC Unified Architecture),基于OPC统一架构的时间敏感网络技术 ,是一个新的工业软件接口规范,其目的在于提出一个企业制造模型的统一对象和架构定义,具有跨平台、增强命名空间、支持复杂数据内置、大量通用服务等新特点。
OPC UA 规范包含核心规范部分与存取类型规范部分,其中核心规范部分包括
OPC UA Data Access
OPC UA Alarms and Conditions
OPC UA Programs
OPC UA Historical Access
存取规范部分包括:
OPC UA Security Model
OPC UA Address Space Model
OPC UA Services
OPC UA Information Model
OPC UA Service Mappings
OPC UA Profiles
和现行OPC一样,OPC UA 系统结构包括 OPC UA 服务器和客户端两个部分, 每个系统允许多个服务器和客户端相互作用。
由于OPC UA技术具备优秀的信息建模、通信传输、跨平台等能力,使得数据采集、信息模型化、系统通信更加安全、可靠。这决定了OPC UA将在多广泛的技术领域获得应用,如IEC发布的智能电网标准化Roadmap将OPC UA技术作为重要的支撑标准,德国工业4.0也将OPC UA作为支撑技术之一。所以,OPC UA技术将作为重要的信息集成标准,在信息领域获得广泛应用。
2 OPC DA简介
OPC 提出了一套统一的标准,采用典型的CLIENT/SERVER 模式,针对硬件设备的驱动程序由硬件厂商或专门的公司完成,提供具有统一OPC接口标准的SERVER 程序,用户只需按照OPC 标准编写CLIENT程序访问OPC SERVER,即可实现与硬件设备的通信。
OPC DA(OPC Data Access),即OPC数据访问接口,定义了数据交换的规范,包括:过程值、更新时间、数据品质等信息。目前OPC DA经历1.0版本(1997年)、2.0版本(2002年)、3.0版本(2003年)。
本文对于OPC DA规范的主要内容做简单介绍。
2.1 OPC Server/Client
一个OPC 客户可以连接一个或多个OPC 服务器,而多个OPC 客户也可以同时连接同一个OPC 服务器,如图所示。
2.2 OPC Server
一个OPC 服务器由三个对象组成:服务器(Server),组(Group),项(Item)。三者之间的关系如下:
对应设备的模型图如下:
1)OPC Server:OPC Server运行在设备端,对应设备模型的设备概念,描述OPC服务器自身的属性,作为OPC组对象的容器。
2)OPC Group:对应设备模型的寄存器区概念,描述OPC组对象的属性(更新速率、数据死区等),作为OPC Item对象的容器。OPC规范定义了2 种组对象:公共组和私有组。公共组由多个客户共享,私有组只隶属于一OPC 客户。全局组对所有连接在服务器的应用程序都有效,而私有组只能对建立它的CLIENT 有效。在一个SERVER 中,可以有若干个组。
3)OPC Item:对应设备模型的寄存器概念,是OPC读写数据的最小单位。。一个OPC 项不能被OPC 客户程序直接访问,需要通过包含项的OPC组对象来实现。1个OPC项可以包含在不同的OPC组对象中。每个数据项包括3 个变量:值(Value)、品质(Quality)和时间戳(Time Stamp)。数据值是以VARIANT形式表示的。
2.3 OPC数据更新
客户端从缓冲区或直接从终端设备接收来自 OPC 服务器的数据。从缓冲区读取速度更快,但其中的数据在读取时可能已过期。OPC 服务器通过从终端设备请求信息来定期更新数据。
2.4 读取数据方式
OPC读取数据方式有以下几种方式:
同步模式:客户端向服务器发送请求并等待它的响应。
异步模式:客户端发送请求并立即继续执行其他任务。处理完请求后,服务器向客户端发送通知,客户端获取提供的数据。
订阅模式:服务器只向客户端发送发生变化的标签。为了防止数据的噪声被误认为它们的变化,引入了“死区”的概念,它稍微超过了干扰的最大可能幅度。
数据刷新模式:客户端调用所有活动标签的同时读取。除了那些被指定为“被动”的标签外,所有标签都被称为主动标签。标签的这种划分通过更新从物理设备接收到的数据来减少处理器的负载。
数据以同步或异步模式写入设备,无需中间缓冲。在同步模式下,客户端写入数据并等待,直到收到设备对命令执行的确认。此过程可能需要很长时间,在此期间客户端处于等待。异步模式允许客户端向服务器发送请求后继续执行其他任务。处理结束后,服务器会向客户端发送通知。
3 OPC XML简介
3.1 诞生由来
OPC(OLE for Process Control)是为过程控制专门设计的OLE 技术,基于COM/DCOM的数据访问的标准。OPC DA(OPC Data Access),是基于OPC标准的数据访问接口。COM/DCOM存在如下缺陷:
1)缺少跨平台通用性:由于COM/DCOM依赖于Windows系统, OPC COM接口很难被应用到其他非Windows的操作平台上,使得工业互联受到很大的限制。
2)不易通过防火墙,与互联网应用集成难度大:由于防火墙会过滤大多数基于COM传输的数据,所以,基于COM的OPC应用就很难与互联网应用集成。
为了解决以上问题,OPC基金会制定了OPC XML标准,就是对原有OPC Server进行功能扩展。由于XML具有良好的跨平台通用性,广泛应用于Internet应用,且很容易穿透防火墙,使得OPC DA能够跨平台或在互联网上得到应用。
OPC XML DA基于XML的web技术,采用SOAP作为对应用程序共享消息进行包装的通讯协议,实现OPC Server和OPC Client之间通过Http协议传输数据,使得数据很容易在不同平台间传输,并轻易实现在Internet上发布OPC数据。
如下图所示,增加1个OPC XML Server,与OPC DA Server通讯,并将数据以XML发布到Web Server上,这样Web浏览器或者其他非Windows应用就可以通过internet访问web server来获取到OPC DA的数据。
3.2 功能服务
OPC XML DA 支持Browse、Read、Write、SubScribe等服务,每种服务都包括1对请求(Request)/响应(Respone)。通过对这些服务的定义,提供了访问OPC Server的标准接口。请求和响应按照SOAP协议标准封装成SOAP信封,信封标题说明消息如何被处理,信封正文包含了相关数据。
OPC XML DA定义了以下服务:
1)数据请求: 请求OPC数据。有同步(请求-回应)与异步(订阅-更新)两种方式。它通过读取请求和订阅请求来实现。
2)数据响应: 对数据请求的响应。如果是同步请求,那么请求一次,回答一次;如果是异步请求,则是包括初始值与错误代码,此后,服务器发送包含发生值改变的项目的回应。
3)写请求:是指写数据到一个特定项目的请求。如果超过了设定的过期时间,服务器没有收到请求的话,那就什么也写不了。
4)写响应: 是对写请求的响应,它给出从写数据到特定项目过程中存在的所有错误。
5)取消数据请求: 是取消特定数据请求的要求,如果数据请求是订阅请求,所有后续数据更新将被取消,如果不是订阅,则是请求服务器释放分配给这个请求的资源。
6)取消数据响应: 取消数据响应就是对取消数据请求的响应,它显示出取消动作是否成功。
7)浏览请求:请求显示有服务器地址空间的标签结构列表,返回信息将显示标签结构列表。
8)浏览响应:对浏览请求的响应,返回值为位于指定位置的“枝叶”。
综上所述,OPC XML DA就是对OPC DA的XML扩展标准,其目的就是在于解决OPC DA不能跨平台的缺陷。