OPC的全称是Object Linking and Embeding(OLE) for Process Control,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。

概述
       市场上的数据源有很多种,plc、dcs、rtu、数据库等等,数据也可以通过多种媒介传输,比如以太网、串口通讯、无限通讯等,过程控制通信软件所依赖的操作系统也多种多样像Windows、Unix等,过去系统供应商提供自己的驱动程序来获取数据,但这样一来数据就以一种供应商专权享有的形式储存下来。当用户需要对系统进行改进或扩张时就必须与同一家设备供应商联系,从另一个角度看,传统的控制系统中,智能设备之间及智能设备和控制系统之间的信息共享是通过驱动程序来实现的,不同厂家的设备要使用不同的驱动程序,就使工业控制网络当中包含了越来越多的底层通信模块,而且相对特定应用的驱动程序不支持硬件变化的特点使工业控制软硬件的升级和维护都很不方便。另外,同一时刻两个客户应用一般不能对同一个设备进行数据通信,因为他们拥有不同的相对独立的驱动程序,同时对同一个设备进行操作可能会引起存取冲突甚至导致系统崩溃。系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。在这种情况下,OPC标准应运而生。

OPC工业通讯协议_OPC

       OPC技术的出现很好的解决了这些问题。因为OPC是一种技术平台,不论客户端是谁,不论客户使用哪种工程软件,只要支持OPC,都可以顺畅无阻的从数据源获取数据。
发展史

OPC工业通讯协议_工业控制系统安全_02

       1990年微软提供了动态数据互换技术,到了1992年对象链接与嵌入技术2.0相对成熟,windows推出了面向对象的设计和编程,包括COM/DCOM技术用于不同对象间的数据交换,1996年OPC基金会正式成立并发布了OPC DA1.0,之后陆续发布了DA2.0/DA3.0,这两个标准也是目前市面上最流行,应用最多的两个标准,2009年OPC基金会发布了OPC UA即OPC统一架构,成为今后OPC的发展方向。
定义

       OPC是用于过程控制的OLE,是一个工业标准,管理这个标准国际组织是OPC基金会,OPC基金会是一个非营利性的国际组织,由成百个遍布世界各地的相关公司组成。OPC基金会现有会员已超过220家。遍布全球,包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统的公司。OPC标准基于微软的OLE(现在的Active X)、COM (部件对象模型)和DCOM (分布式部件对象模型)技术。OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。

OPC工业通讯协议_OPC_03

       OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。这两种接口是:自动化接口(Automation interface);自定义接口(Custom interface)。自动化接口通常是为基于脚本编程语言而定义的标准接口,可以使用VisualBasic、Delphi、PowerBuilder等编程语言开发OPC服务器的客户应用。而自定义接口是专门为C++等高级编程语言而制定的标准接口。
       OPC技术包含一系列的标准规范如DA、HAD、A&E等。这些访问规范都是由OPC基金会创建、发行并且进行维护,基金会创建的这些标准和维护从根本上保证了OPC技术的兼容性。
通信结构

OPC工业通讯协议_工业控制系统安全_04

       OPC通信采用Client/Server的通信结构,OPC客户端扮演着重要的角色,OPC Client向OPC Server发出数据请求,当OPC Server收到来自Client的数据请求时就会按照OPC Client的要求返回相应的数据,也就是相应客户端的请求。
       看起来,OPC Client更像“主人”,单向的向服务器发出数据请求,客户端发出命令但从不执行命令。OPC Server更像“侍从”,收到客户端的请求后才做相应的动作,从不会主动向客户端发出命令。
       常见的OPC Client有HMI、Historian等,常见的服务器可访问的数据源有PLC、DCS、数据库等。
小结
       OPC是为了不同供应厂商的设备和应用程序之间的软件接口标准化,使其间的数据交换更加简单化的目的而提出的。作为结果,从而可以向用户提供不依靠于特定开发语言和开发环境的可以自由组合使用的过程控制软件组件产品。 
       利用OPC的系统,是由按照应用程序(客户程序)的要求提供数据采集服务的OPC服务器,使用OPC服务器所必需的OPC接口,以及接受服务的OPC应用程序所构成。OPC服务器是按照各个供应厂商的硬件所开发的,使之可以吸收各个供应厂商硬件和系统的差异,从而实现不依存于硬件的系统构成。同时利用一种叫做Variant的数据类型,可以不依存于硬件中固有数据类型,按照应用程序的要求提供数据格式。 
       OPC现已成为工业界系统互联的缺省方案,为工业监控编程带来了便利,用户不用为通讯协议的难题而苦恼。任何一家自动化软件解决方案的提供者,如果它不能全方位地支持OPC,则必将被历史所淘汰。