2023年11月30日发(作者:)

OPC通讯协议简介

OPC(OLE for Process Control, 用于过程控制的OLE)是一个工业标准,管

理这个标准国际组织是OPC基金会,OPC基金会现有会员已超过220家。遍布全

球,包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统的公司。

基于微软的OLE(现在的Active X)COM (部件对象模型)DCOM (分布式

部件对象模型)技术。OPC包括一整套接口、属性和方法的标准集,用于过程控

制和制造业自动化系统。

OPC全称是OLE for Process Control,它的出现为基于Windows的应

用程序和现场过程控制应用建立了桥梁。在过去,为了存取现场设备的数据信息,

每一个应用软件开发商都需要编写专用的接口函数。由于现场设备的种类繁多,

且产品的不断升级,往往给用户和软件开发商带来了巨大的工作负担。通常这样

也不能满足工作的实际需要,系统集成商和开发商急切需要一种具有高效性、

靠性、开放性、可互操作性的即插即用的设备驱动程序。在这种情况下,OPC

准应运而生。OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套

标准的OLE/COM接口完成的,在OPC技术中使用的是OLE 2技术,OLE标准允许

多台微机之间交换文档、图形等对象。

COMComponent Object Model的缩写,是所有OLE机制的基础。COM

是一种为了实现与编程语言无关的对象而制定的标准,该标准将Windows下的对

象定义为独立单元,可不受程序限制地访问这些单元。这种标准可以使两个应用

程序通过对象化接口通讯,而不需要知道对方是如何创建的。例如,用户可以使

C++语言创建一个Windows对象,它支持一个接口,通过该接口,用户可以访

问该对象提供的各种功能,用户可以使用Visual BasicCPascalSmalltalk

或其它语言编写对象访问程序。在Windows NT4.0操作系统下,COM规范扩展到

可访问本机以外的其它对象,一个应用程序所使用的对象可分布在网络上,COM

的这个扩展被称为DCOMDistributed COM)。

通过DCOM技术和OPC标准,完全可以创建一个开放的、可互操作的控

制系统软件。OPC采用客户/服务器模式,把开发访问接口的任务放在硬件生产

厂家或第三方厂家,OPC服务器的形式提供给用户,解决了软、硬件厂商的矛

盾,完成了系统的集成,提高了系统的开放性和可互操作性。

OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言

环境提供访问机制。这两种接口是:自动化接口(Automation interface);自

定义接口(Custom interface)。自动化接口通常是为基于脚本编程语言而定义

的标准接口,可以使用VisualBasicDelphiPowerBuilder等编程语言开发

OPC服务器的客户应用。而自定义接口是专门为C++等高级编程语言而制定的标

准接口。OPC现已成为工业界系统互联的缺省方案,为工业监控编程带来了便利,

用户不用为通讯协议的难题而苦恼。任何一家自动化软件解决方案的提供者,

果它不能全方位地支持OPC,则必将被历史所淘汰。

1、在控制领域中,系统往往由分散的各子系统构成;并且各子系统往

往采用不同厂家的设备和方案。用户需要,将这些子系统集成,并架构统一的实

时监控系统。

2、这样的实时监控系统需要解决分散子系统间的数据共享,各子系统

需要统一协调相应控制指令。

3、再考虑到实时监控系统往往需要升级和调整。

4、就需要各子系统具备统一的开放接口。

5OPC(OLE for Process Control) 规范正是这一思维的产物。

6OPC 基于Microsoft公司的 Distributed interNet Application

(DNA) 构架和 Component Object Model (COM) 技术的,根据易于扩展性而设计

的。OPC规范定义了一个工业标准接口。

7OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客

/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC规范

了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而

保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。

8OPC定义了一个开放的接口,在这个接口上,基于PC的软件组件能

交换数据。它是基于WindowsOLE——对象链接和嵌入、COM——部件对象模

(Component Object Model)DCOM——分布式COM(Distributed COM)技术。

因而,OPC为自动化层的典型现场设备连接工业应用程序和办公室程序提供了一

个理想的方法。

OPC应用领域

1、工控解决方案用户

2、楼控解决方案用户

3、工控解决方案厂商

4、楼控解决方案厂商

5、工控解决方案集成商

6、楼控解决方案集成商

7 All Automation Fields

OPC是为了连接数据源(OPC服务器)和数据的使用者(OPC应用程序)

间的软件接口标准。数据源可以是PLCDCS,条形码读取器等控制设备。随控

制系统构成的不同,作为数据源的OPC服务器即可以是和OPC应用程序在同一台

计算机上运行的本地OPC服务器,也可以是在另外的计算机上运行的远程OPC

服务器。

OPC接口既可以适用于通过网络把最下层的控制设备的原始数据提供

给作为数据的使用者(OPC应用程序)HMI(硬件监督接口)SCADA(监督控制与

数据采集),批处理等自动化程序,以至更上层的历史数据库等应用程序,也可

以适用于应用程序和物理设备的直接连接。所以OPC接口是适用于很多系统的具

有高厚度柔软性的接口标准。

OPC解决了什么?

OPC诞生以前,硬件的驱动器和与其连接的应用程序之间的接口并没有

统一的标准。例如,在FA(FactoryAutomation)——工厂自动化领域,连接

PLC(Programmable Logic Controller)等控制设备和SCADAHMI软件,需要不

同的FA网络系统构成。根据某调查结果,在控制系统软件开发的所需费用中,

各种各样机器的应用程序设计占费用的7成,而开发机器设备间的连接接口则占

3成。此外,在PA(Process Automation)——过程自动化领域,当希望把分

布式控制系统(DCS——Distributed Control System)中所有的过程数据传送到

生产管理系统时,必须按照各个供应厂商的各个机种开发特定的接口,例如,

C语言DLL(动态链路数据库)连接的DDE(动态数据交换)服务器或者利用

FTP(文件传送协定)的文本等设计应用程序。如由4种控制设备和与其连接的监

视、趋势图以及表报3种应用程序所构成的系统时,必须花费大量时间去开发分

别对应设备ABCD的监视,趋势图以及表报应用程序的接口软件共计要用

12种驱动器。同时由于系统中共存各种各样的驱动器,也使维护运转环境的稳

定性和信赖性更加困难。

OPC是为了不同供应厂商的设备和应用程序之间的软件接口标准化,

使其间的数据交换更加简单化的目的而提出的。作为结果,从而可以向用户提供

不依靠于特定开发语言和开发环境的可以自由组合使用的过程控制软件组件产

品。

利用OPC的系统,是由按照应用程序(客户程序)的要求提供数据采集服

务的OPC服务器,使用OPC服务器所必需的OPC接口,以及接受服务的OPC应用

程序所构成。OPC服务器是按照各个供应厂商的硬件所开发的,使之可以吸收各

个供应厂商硬件和系统的差异,从而实现不依存于硬件的系统构成。同时利用一

种叫做Variant的数据类型,可以不依存于硬件中固有数据类型,按照应用程序

的要求提供数据格式。

利用OPC使接口标准化可以不依存于各设备的内部结构及它的供应厂

商来选用监视,趋势图以及表报应用程序。

为什么开发自主OPC ServerOPC Gateway

1、国外原厂商的高价格

2、国外原厂商面对项目的不灵活性

3、国内项目中子系统的多样性难以提供DRIVER

4、自主OPC服务器追求的是稳定、实时、迅速。

5、众多子系统的不规范性

6、总包项目在投标前后可能出现的不一致性

7、价格昂贵的原厂平台服务器软件

8、总包商集成是否投入大量的人力开发

9、平台和子系统的兼容性

10、建立了OPC平台和子系统的互通

11、解决厂商和集成商在项目集成的烦恼

12、解决厂商和集成商分散资源进行二次开发

13、解决项目中子系统厂商的困扰

14、为上下位的数据通讯提供透明的通道

1 示例系统的体系结构 0 本例中以OPC为例在上位机上插入CP5611

PLC313C-2DP(6ES7313-6CE00-0AB0)二者通过PROFIBUS 总线相

连。 2 软件版本描述 需要软件 SIMATIC NET V6.0 SP4 PB SOFTNET-S7 3

组态 3.1 PC 机上安装SIMATIC NET V6.0 PC NCM后,打开NCM 组态一个PC

STATION 1 插入一个PC STATION 以上为例,把站名改为OPC双击

CONFIGURATION 进入组态画面,如图2 2 在第一槽插入OPC SERVER在第四

槽中插入CP5611注意相应的版本号如本例中安装V6.0 SP4 插入OPC SERVER

CP5611时,选择SW V6.0 SP4存盘编译后,在OPTIONS菜单下选择Configure

Network单击OPC SERVER后,出来连接表,双击其中一格,建立S7-CONNECTION

如图3 3 连接的站选择UNSPECIFIED.点击APPLY进入详细组态画面图4

4 填入S7-300C的站号如6号站,点击Address Details组态CPU的槽号。 5

S7-300PLCCPU槽号为2S7-400CPU依据组态而定,如果连接通讯模块如

CP342-5CP443-5在这里也必须填上CPU的槽号。编译存盘,准备下载。 3.2

组态虚拟PC STATION,编译存盘后,配置虚拟PC STATION.于实际配置一样在第

一行添加APPLICATION 6 进入虚拟PC STATION画面 7 第一行添加OPC

SERVER INDEX表示行数 NAME 任意。 进入配置网卡界面 8 9 选择CP5611

的模式为CONFIGURED MODE INDEX4(行数)配置完后退出。 使能OPC S7

议。 10 11 进入STATION NAME OPC与配置一样。 12 13 在控

制面板中设置PG/PCINTERFACES7ONLINE 指向 PCINTERNAL CP_L2_1指向

CP5611(PROFIBUS)下载PC配置信息到虚拟PC 站中 14 确认配置无误 15

3.3 测试实际连线状态,在SIMATIC NET CONFIGURATION CONSOLE

2

基于PLCDCS控制系统在污水处理厂中的应用

随着国民经济建设的快速发展,各级政府对环境保护更加关注,各地陆续

新建了一大批污水处理厂。这些新建的污水处理厂根据自身特点,对控制系统的

性能和价格提出了新的要求。

重庆市奉节污水处理厂采用CASS工艺对生活污水进行处理,日处理量为3

万吨。DCS系统以高性价比的PLC为控制单元,采用商用计算机为监控站。

个系统在实现生产自动化的情况下,有效降低了系统成本,从2004年投产至今

运行情况良好。

1 生产工艺简介

污水处理是一种连续的生化反应过程,有氧化沟工艺、AOSBRCASS等众

多不同的处理工艺。奉节污水处理厂所采用的污水处理工艺为新型改良 CASS

Cyclic Activated Sludge System,循环式活性污泥法)工艺,属于改进型

SBR工艺的一种,由格栅井、CASS 池、鼓风机房、加药间、储泥池、脱水机房、

接触消毒池组成。该工艺具有以下特点:

1)可升降的滗水器最大限度降低了排水水流对底部沉淀污泥扰动。

2)抗冲击力强,对难降解有机物的去除效率高,同时具有脱氮除磷功能。

3)工艺流程短,占地面积小,建设费用低,运转费用省。

4)管理简单,运行可靠,出水水质好,无异味。

5)污泥产量低,污泥性质稳定,不发生污泥膨胀。

2 DCS控制系统选型及硬件配置

21 DCS系统的选型

重庆市奉节口前污水处理厂为三峡库区国债项目建设的第一批污水处理厂,

根据实际的工艺要求及建设特点,该项目对控制系统提出了如下要求:

1)受控设备控制点数在800点内。控制工艺较为复杂,但是我们所需要

的算法并不复杂,基本以时间控制和位式控制为主。

2)控制系统须成熟可靠,便于调试和维护。

3)考虑到会有第三方产品,网络通讯及其协议须具备开放性和标准性。

4)测量设备和受控设备均为传统设备,基本不带现场总线通讯能力,所

以输入、输出控制还是以传统的IO点为基础。

5)作为国债投资项目,尽可能在满足要求的前提下降低造价。

经过比较,该厂的自动化控制系统采用以PLC为基础的DCS控制系统,该系

统在满足生产要求的基础上其性能和价格上取得了很好的平衡。

22 基于PLCDCS系统

传统DCS是针对流程工业的仪表控制系统发展起来的,主要功能是实现连续

物理量的监视与调节。PLC是针对传统的继电器控制系统而发展起来的,主要功

能是实现开关量的逻辑控制。

一般来说,PLC是一种局部的控制器,但随着应用规模的扩大以及工业以太

网的出现,多台PLC能够互连起来而形成的较大控制系统。与单个的PLC相比有

几点重大的改变:

1)在网络上挂接了在线的通用计算机,其作用一是实现系统组态、编程

和下装,二是在线监视被控过程的状态。这样,一个具有现场控制层和协调控制

层的DCS雏形就出现了。

2)在PLC中增加了模拟量IO接口和数值计算功能,这样,PLC就不仅

可以完成逻辑控制,也可以完成模拟量监测及控制和混合控制的功能。

3)越来越多的PLC厂家把专用的网络改成为通用的网络,这样就使PLC

有条件和其它各种计算机系统和设备实现集成,以组成大型的控制系统。

上述几点改变使得PLC组成的系统具备了DCS的形态。由于PLC产品已经进

入市场多年,其IO接口、编程方法、网络通信都趋于标准化和适应开放系统

的要求,同时通过扩展能够增加现场总线通讯功能。加上PLC在价格上的优势,

使得PLC在分布式控制系统领域有着很重要的地位,在很多应用领域具有相当大

的竞争优势。

23 奉节污水处理厂DCS系统配置及构成

DCS控制系统以工业以太网这种开放式的网络结构为基础,由三个下位控制

PLC0PLC1PLC2站,1个上位工程师站、1个上位操作员站组成。其拓扑结

构如图1所示。

PLC0控制站安装在中央管理中心的大屏幕马塞克模拟显示屏内,通过

以太网采集各设备的状态信号并用RS232的通讯方式与马赛克屏通讯,将生产的

整个流程以及设备状态显示出来。

PLC1安装在变配电所,负责控制格栅井、污水提升泵、沉砂池、1CASS

池、2CASS池、3CASS池、鼓风机房、储泥池及流量井流量检测、接触消

毒池的部分检测控制、配电室的部分电力参数监测。

PLC2安装于加药间。用于控制加药间的电磁阀、搅拌器、隔膜泵在内的全

套加药设备。

中央管理中心的两台监控计算机采用DELL公司的OptiPlex系列台式机。

OptiPlex系列台式机定位于初级服务器应用,在高性能的前提下其专门设计的

钢丝屏蔽层结构以及散热系统保证了系统的高可靠性和稳定性。所采用的监控软

件是基于微软的Windows 2000平台的,商用机对操作系统的兼容性比工控机略

好。

该厂整个控制的系统信息交换层和控制层两层合一。采用先进的工业以太

网,具有高速可靠的特点。工业以太网是以传统以太网为基础,针对工业控制的

要求,改良后的一种信息及控制网,具有一网到底和降低网络造价的特点。

3 自控系统功能

31 监控软件

监控软件采用开物2000软件,开物2000为北京华富慧通开发的一款通用监

控软件,该软件对OPC通讯方式支持较好。 OPCOLE for ProcessContro1)是

基于COMComponent Object Mode1)和 DCOMDistributed Component Object

Mode1)技术的面向对象软件协议。OPC为现场设备、自动控制应用软件和企业

管理应用软件之间提供了开放、一致的接口规范,为来自不同供应商的软、硬件

提供“即插即用”的连接。

本系统的监控软件和DCS硬件之间的通讯协议采用OPC方式,ROCKWELL

RSLINX软件为OPC SEVER端而监控软件作为OPC CLIENT读取数据,采用该方式

通讯避免了监控软件对DCS系统驱动程序支持不完善的情况发生。

32 控制方式X

为便于操作调试和事故的紧急处理,系统控制方式分为三种:

1)就地手动方式。即通过就地控制箱或MCC上的按扭、开关操纵设备。

2)遥控方式。通过中央管理中心的两台计算机在手动模式下控制设备。

3)自动方式。系统根据工况自动完成设备的启停、调节控制。

遥控和就地控制方式的切换由MCC柜或就地控制箱完成;自动方式和遥控方

式的切换由两台监控计算机完成。

33 监控功能

两台计算机分别作为操作站和工程师站相互备用,设置于中央管理中心,

全厂工艺设备运行状况、运行参数进行集中监控,遥控现场设备。监控计算机通

过集成的1000M网卡与PLC系统经工业以太网进行数据交换。

主要功能:

1)工艺流程监控功能。系统能按工艺要求对污水处理的各环节参数及设

备状态进行监视,同时根据工艺要求选择自动、顺序、定时等控制方式。

2)报警及报警记录功能。当设备发生事故时,系统将在计算机、马赛克

大屏幕、就地控制箱上进行报警指示。同时计算机将对所发生的报警内容、时间

及确认时间进行记录。在计算机上还可进行语音报警。

3)联锁保护功能。当系统检测到局部故障后启动相应的联锁保护程序。

4)参数设定功能。可在中央管理中心的任何一台监控计算机或现场控制

站的人机界面上进行报警上下限、调节参数、运行时间等参数的设定。

5)数据记录存储功能。系统可对重要数据如工艺参数、工况、设备运行

时间等进行记录储存,以备调用。

6)操作记录功能。系统自动保存重要操作记录,如改动参数,操作设备

的操作员代号、时间、内容等。

7)实时数据曲线和历史数据曲线。对重要工艺参数可以进行实时曲线显

示,并记录历史数据曲线。

8)多级口令保护功能。在中央管理中心的任何一台监控计算机上可设定

不同操作权限,只有相应操作权限的操作员,在输入正确的口令后才可访问该级

画面。

9)打印功能。可进行报表打印、曲线打印、图形打印。

4 工程效果

该工程于20035月份开始实施,20044月份设备移交厂方运行,DCS

系统运行稳定可靠无损坏情况。系统投入使用后,操作人员在中央管理中心就能

够全面了解整个工厂的运行情,DCS系统对泵及滗水器等主要设备能够根据预先

设定好的参数进行自动控制。整个系统只需中央管理中心操作人员就能够保证系

统的正常运行,大大降低了值班员的劳动强度。该系统的投运解决了以往污水处

理厂自动化程度低,所有设备均需手动操作,值班人员劳动强度大、操作易出错,

出水水质不稳定、生产过程无法集中监控的问题。该厂作为三峡库区第一批兴建

的污水处理厂,对三峡库区水质的保护起到了积极的作用。各级政府领导多次对

该厂进行视察和工作指导,对该厂的生产以及工艺水平给予了良好的评价,取得

了很好的社会效益和经济效益。

5 结语

PLC作为成熟的控制器其编程语言及系统结构具有统一性,便于控制系统的

调试及维护。虽然PLC控制算法相对单一,但是却很好的满足了污水生产工艺的

要求,在避免功能浪费的同时降低了系统造价。采用工业以太网技术,保证了通

讯网络良好的兼容性和稳定性,同时实现了通讯的高速化。PLC为基础采用工

业以太网搭建的DCS控制系统,在污水处理厂的自动化控制中具有成熟可靠,

满足生产工艺要求,同时也降低了工程造价,具有很好的应用前景。

VC环境中使用定制接口开发OPC客户应用程序,下面是程序实现的关键

步骤。

4.1 包含OPC头文件

开发OPC客户应用程序,除了需要OPC接口外,还需要在程序中包含OPC标准库

文件,可以从OPC基金会网站(网址:)下载这些文件:

#include "opcda_i.c " OPC数据存取接口

#include "opcda.h " OPC数据存取2.0头文件

#include "opccomn_i.c " OPC公共接口定义

#include "opccomn.h " OPC公共头文件

4.2 初始化COM支持库

OPCCOM使使

CoInitialize(NULL)函数初始化COM库,如果成功,函数返回值等于S_ OK

4.3 连接opc服务器

OPC 客户能够连接到OPC服务器上,并建立OPC组和OPC数据项,这是OPC数据

访问的基础,如果没有这个机制,数据访问的其它机能不可能实现[4]连接 OPC

服务器,OPC客户需要事先指定计算机名(如果OPC服务器和OPC客户不在同一

台计算机上)OPC数据访问服务器名 (32OPCTagServer)实现代码

如下:

ConnectToServer(/*in */LPOLESTR ProgID,/*in*/ BOOL IsRemote,/*out */

IUnknown **ppUnknown)

{

CLSID OPCCLSID;

HRESULT hRet=CLSIDFromProgID(ProgID,&OPCCLSID);

//将字符串ProgID转换为唯一OPCCLSID

if(IsRemote)

//opc服务器和opc客户不在同一台计算机上

{

COSERVERINFO ServerInfo;

memset(&ServerInfo,0,sizeof(ServerInfo));

me=T2OLE( "ServerComouter ");

MULTI_QI qi[1];

memset(qi, 0, sizeof(qi));

qi[0].pIID=&IID_IUnknown;

HRESULT hRet=CoCreateInstanceEx(OPCCLSID,NULL,CLSCTX_REMOTE_SERVER,

&ServerInfo,1,qi);

*ppUnknown=qi[0].pItf;

}

else

//opc服务器和opc客户在同一台计算机上

{

hRet=CoCreateInstance(OPCCLSID,NULL,CLSCTX_LOCAL_SERVER,IID_IUnknown,

(void **)ppUnknown);

}

}

4.4 创建OPC

IOPCServer接口的AddGroup()方法可以创建一个有指定名称和属性的OPC组。

使Iunknown

QueryInterface()方法请求IOPCServer接口指针。代码如下:

ppUnknown-> QueryInterface(IID_IOPCServer,(void **)&pServer);

//得到IOPCServer接口指针

pServer-> AddGroup(L "

",TRUE,500,1235,&lTimeBias,&fTemp,0,&hOPCServerGroup,

&dwActualRate,IID_IOPCItemMgt,& pOPCItemMgt);

4.5 添加数据项

IOPCItemMgt接口的AddItem()方法可以添加具有特殊属性的指定数量的数据

项。

pOPCItemMgt-> AddItems(ItemNumber,ItemArray,

(OPCITEMRESULT**)&pItemResult(HRESULT **)&pErrors);

ItemArray OPCITEMDEF类型结构数组,它包含数据项的详细信息,客户需要

知道要进行交换的数据在RSView32标签数据库中的名称、数据类型及作为 OPC

服务器的RSView32项目名称。添加数据项之前,要用这些数据项信息对

ItemArray结构数组进行初始化。

4.6 数据交换

成功地增加完所需要的数据项后,OPC客户(VC应用程序)OPC服务器(RSView32)

就可以进行数据交换了。在数据量不大的情况下,可以使用 IOPCSyncIO同步接

口的Write()Read()两个方法进行数据的读写操作,从而实现OPC客户(VC

用程序)OPC服务器 (RSView32)之间的数据交换。代码如下:

ppUnknown-> QueryInterface(IID_IOPCSyncIO,(void **)&pOPCSync);

//得到IOPCSyncIO接口指针

pOPCSync->

Read(OPC_DS_CACHE,ReadNumber,hServerRead,&pItemValue,&pErrors);

//ReadNumber个数据

pOPCSync-> Write(WriteNumber,hServerWrite,WriteValue,&pErrors);

//WriteNumber个数据

4.7 释放接口指针

VC应用程序停止运行之前必须使用Release()方法删除已创建的OPC对象并

释放内存。

5 结束语

OPC技术规范把硬件供应商和应用软件开发者分离开来,使得双方的工作效率都

有了很大提高。软件开发商无需了解硬件的实质和操作过程,就能访问OPC数据

服务器中的数据,尤其是开发商在已使用了组态软件进行实时监控的过程控制系

统基础上,用C++等高级语言开发系统时,大大简化了过去从设备传输数据的复

杂过程。在某铝厂的自动配料系统开发中,应用OPC技术方便地实现了VC应用

程序和RSView32的数据交换,间接地实现了VC应用程序与PLC的通信,获得了

很好的结果。