1 OPC技术简介
1.1 什么是OPC
OPC(OLE for Process Control),即用于过程控制的对象链接与嵌入技术,是一种规范,是在工业控制和生产自动化领域中使用的硬件和软件的接口标准。OPC以组件对象模型和分布式组件对象模型(COM/DCOM)技术为基础,采用客户/服务器(Client/Server)的模式,定义了一组COM对象及其接口标准。
OPC规范是由世界范围内自动化领域中处于领导地位的硬件和软件开发商,在微软的协作下制定的,并且已经得到越来越多的客户和硬件制造商的认可。
1.2 OPC的意义
在传统的控制系统中,针对同一个硬件设备,每个应用软件都要根据自己的需求开发一套硬件驱动程序。这不仅加大了开发和维护费用,而且带来了访问冲突问题。
OPC技术将各个硬件设备驱动程序和通讯程序封装成独立的OPC服务器,上层应用软件(作为OPC客户端)可以不关心硬件的性能特点,而通过标准的OPC接口访问OPC服务器。
这样不仅解决了上述问题,而且实现了软件的“即插即用”。OPC相当于一块软件“主板”,它能够直接与现场的PLC、工业网络、数据采集和Windows CE设备连接,快速有效地获取现场实时数据。PC机内的各种监视、控制和管理等应用软件则像是插在OPC主板上的软件“芯片”,芯片可以通过OPC获得现场实时数据,芯片之间也可以按照OPC协议进行通讯,从而实现软件的“即插即用”。
1.3 OPC对象与接口
OPC的核心是COM/DCOM技术。在COM模型中,软件的功能被分解为一些组件,这些组件通过COM协议在一定条件下连接起来,实现相应的功能。COM对象分为客户端和服务器两类,客户端通过COM接口访问服务器[2]。
OPC数据访问规范描述了OPC服务器需要实现的COM对象及其接口,它定义了定制接口(custom interface)和自动化接口(automation interface)[1]。OPC客户程序通过接口与服务器通讯,间接读取数据。OPC服务器必须实现定制接口,也可以有选择地实现自动化接口。一般来说,自动化接口能为VB等高级语言客户程序提供极大的便利,但数据传输效率较低;而定制接口则为用C/C++语言编写的程序带来灵活高效的调用手段。
OPC客户程序访问服务器时,创建一个服务器对象(这里指的是逻辑对象,目的是利用这个逻辑对象建立与实际服务器的连接),调用这个服务器对象的接口,服务器对象创建组对象并返回组对象的指针,客户程序获得组对象的指针后调用其接口。
注意,OPC项并不是OPC客户直接操作的对象,因为OPC项没有定义外部接口,对象的所有操作都是通过包容该项的组对象进行的。
2 OPC数据访问服务器的结构及设计步骤
2.1 OPC数据访问服务器的结构
图 1 OPC数据访问服务器的结构