OPC(OLE for Process Control)技术是指为了给工业控制系统应用程序之间的通信建立一个接口标准,在工业控制设备与控制软件之间建立统一的数据存取规范。它给工业控制领域提供了一种标准数据访问机制,将硬件与应用软件有效地分离开来,是一套与厂商无关的软件数据交换标准接口和规程,主要解决
过程控制系统与其数据源的数据交换问题,可以在各个应用之间提供透明的数据访问。
简述
OPC是OLE for Process Control的缩写,即应用于过程控制的
OLE。
OLE原意是对象连接和嵌入,随着OLE2的发行,其范围已远远超出了这个概念。如今OLE包含了许多新的特征,如统一数据传输、结构化存储和自动化,已经成为独立于
计算机语言、
操作系统甚至硬件平台的一种规范,是面向对象程序设计概念的进一步推广。
OPC建立于OLE规范之上,它为工业控制领域提供了一种标准的数据访问机制。工业控制领域用到大量的现场设备,在OPC出现以前,软件开发商需要开发大量的驱动程序来连接这些设备。即使硬件供应商在硬件上做了一些小小改动,应用程序也可能需要重写。同时,由于不同设备甚至同一设备不同单元的驱动程序也有可能不同,软件开发商很难同时对这些设备进行访问以优化操作。硬件供应商也在尝试解决这个问题,然而由于不同客户有着不同的需要、同时也存在着不同的数据传输协议,因此也一直没有完整的解决方案。
自OPC提出以后,这个问题终于得到解决。OPC规范包括OPC服务器和OPC客户两个部分。其实质是在硬件供应商和软件开发商之间建立一套完整的“规则”。只要遵循这套规则,数据交互对两者来说都是透明的,硬件供应商只需考虑应用程序的多种需求和传输协议,软件开发商也不必了解硬件的实质和操作过程。
作用
OPC诞生以前,硬件的
驱动器和与其连接的应用程序之间的接口没有统一的标准。如在
工厂自动化(Factory Automation,FA)领域,连接
PLC等控制设备和SCADALVHMI软件需要不同的工业自动化网络系统构成。OPC是为了不同供应厂商的设备和应用程序之间的
软件接口标准化,并使其间的数据交换更加简单化的目的而提出的。它可以向用户提供不依赖于特定开发语言和开发环境的、可以自由组合使用的过程控制软件组件产品。OPC系统是由按照应用程序(客户程序)的要求提供数据采集服务的OPC服务器,使用OPC服务器所必需的OPC接口,以及接受服务的OPC应用程序所构成。OPC服务器是利用各个供应厂商的硬件所开发的,使之可以吸收各个供应厂商硬件和系统的差异,从而实现不依赖于硬件的系统构成。同时利用一种叫
VARIANT的数据类型,可以不依赖于硬件中固有的数据类型,按照应用程序的要求提供数据格式。
工作原理
OPC以OLE/COM机制作为应用程序的通信标准,而OLE/COM是一种客户端/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC服务器中的代码确定了服务器所存取的设备和数据、数据项的命名规则和服务器存取数据的细节,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。客户应用程序仅须使用标准接口和服务器通信,而并不需要知道底层的实现细节。通过OPC服务器,OPC客户既可以直接读写物理VO设备的数据,也可操作SCADA,DCS等系统的端口变量(只要该系统提供OPC服务)。
特点
OPC是为了解决应用软件与各种
设备驱动程序的通信而产生的一项工业技术规范和标准。它采用客户/服务器体系,基于Microsoft的OLE/COM技术,为硬件厂商和应用软件开发者提供了一套标准的接口。
综合起来说,OPC有以下三个特点。
①计算机硬件厂商只需要编写一套驱动程序就可以满足不同用户的需要。硬件供应商只需提供一套符合OPC Server规范的程序组,无需考虑工程人员需求。
②应用程序开发者只需编写一个接口程序便可以连接不同的设备。软件开发商无需重写大量的设备驱动程序。
③工程人员在
设备选型上有了更多的选择。对于最终用户而言,可以根据实际情况的不同,选择符合实际的设备。
OPC扩展了设备的概念。只要符合OPC服务器的规范,OPC客户都可与之进行数据交互,而无需了解设备究竟是PLC还是智能仪表,甚至只要在数据库系统上建立了OPC规范,OPC客户就可与之方便地实现数据交互。
OPC把硬件厂商和应用软件开发者分离开来,使得双方的工作效率都有了很大的提高,因此OPC在短时间内取得了飞速的发展。
适用范围
开发OPC的最终目标是在工业控制领域建立一套数据传输规范,现有的OPC规范涉及以下五个领域。
①在线数据监测。OPC实现了应用程序和工业控制设备之间高效、灵活的数据读写。
②报警和事件处理。OPC提供了OPC服务器发生异常时以及OPC服务器设定事件到来时,向OPC客户发送通知的一种机制。
③历史数据访问。OPC实现了对历史数据库的读取、操作和编辑。
④远程数据访问。借助Microsoft的
DCOM(Distributed Component Object Model)技术,OPC实现了高性能的远程数据访问能力。
⑤OPC实现的功能还包括安全性、批处理和历史报警事件数据访问等。
OPC服务器的组成
OPC服务器由三类对象组成,相当于三种层次上的接口:服务器、组对象和数据项。
①服务器对象包含服务器的所有信息,同时也是组对象的容器。一个服务器对应于一个OPC服务器,即一种设备的驱动程序。在一个服务器中,可以有若干个组。
②组对象包含本组的所有信息,同时包含并管理OPC数据项。OPC组对象为客户提供了组织数据的一种方法。组是应用程序组织数据的一个单位,客户可对其进行读写,还可设置客户端的数据更新速率。当服务器缓冲区内数据发生改变时,OPC服务器将向客户发出通知,客户得到通知后再进行必要的处理,而无需浪费大量的时间进行查询。OPC规范定义了两种组对象:公共组(或称全局组,public)和局部组(或称局域组、私有组,local)。公共组由多个客户共有,局域组只隶属于一个OPC客户。全局组对所有连接在服务器上的应用程序都有效、而局域组只能对建立它的Client有效。一般说来,客户和服务器的一对连接只需要定义一个组对象。在一个组中,可以有若干个数据项。
③数据项是读写数据的最小逻辑单位,一个数据项与一个具体的位号相连。数据项不能独立于组存在,必须隶属于某一个组。在每个组对象中,客户可以加入多个OPC数据项。
OPC数据项是服务器端定义的对象,通常指向设备的一个寄存器单元。OPC客户对设备寄存器的操作都是通过其数据项来完成的。通过定义数据项,OPC规范尽可能地隐藏了设备的特殊信息,也使OPC服务器的通用性大大增强。OPC数据项并不提供对外接口,客户不能直接对其进行操作,所有操作都是通过组对象进行的。
应用程序作为OPC接口中的Client方,硬件驱动程序作为OPC接口中的服务器方,每一个OPC Client应用程序都可以连接若干个OPC服务器,每一个硬件驱动程序可以为若干个应用程序提供数据。
接口方式
OPC规范提供了两套接口方案,即COM接口和自动化接口。COM接口效率高,通过该接口,客户能够发挥OPC服务器的最佳性能,采用C++语言的客户一般采用COM接口方案。自动化接口使解释性语言和宏语言访问OPC服务器成为可能,采用VB语言的客户一般采用自动化接口。自动化接口使解释性语言和宏语言编写客户应用程序变得简单,然而自动化客户运行时需进行类型检查,这一点则大大牺牲了程序的运行速度。
OPC服务器必须实现COM接口,是否实现自动化接口则取决于供应商的主观意愿。
数据访问方式
(1)服务器缓冲区数据和设备数据
OPC服务器本身就是一个可执行程序,该程序以设定的速率不断地同物理设备进行数据交互。服务器内有一个
数据缓冲区,其中存有最新的数据值、数据质量截和时间戳。时间戳表明服务器最近一次从设备读取数据的时间。服务器对设备寄存器的读取是不断进行的,时间戳也在不断更新。即使数据值和质量戳都没有发生变化,时间戳也会进行更新。客户既可从服务器缓冲区读取数据,又可直接从设备读取数据,从设备直接读取数据速度会慢一些,一般只有在故障诊断或极特殊的情况下才会采用。
(2)同步和异步
OPC客户和OPC服务器进行数据交互可以有两种不同方式,即同步方式和异步方式。同步方式实现较为简单,当客户数目较少而且同服务器交互的数据量也比较少的时候可以采用这种方式;异步方式实现较为复杂,需要在客户程序中实现服务器回调函数。然而当有大量客户和大量数据交互时,异步方式的效率更高,能够避免客户数据请求的阻塞,并可以最大限度地节省CPU和网络资源。