1.前言
生产控制系统中,我们经常需要通过一些应用程序与现场设备或控制系统进行数据交换。在OPC出现以前,现场设备的硬件驱动器和与其连接的应用程序之间的接口并没有统一的标准,而现场设备繁多的种类,每一个应用程序访问不同的设备必须编写不同的驱动程序(如图1所示),给应用程序的开发带来了巨大的工作量,造成用户和应用软件开发人员负担沉重,且开发效率跟不上硬件的升级换代的速度。
图1.1 OPC出现前数据访问状况
图1.2 OPC出现后数据访问状况
OPC的出现使这一问题得到解决。所有应用程序都通过标准的OPC接口对不同的设备进行访问,而无需再编写专用的驱动程序(如图1.2所示)。
2. OPC的定义
OPC全称是,用于过程控制的OLE(链接及嵌入式对象)。它基于微软的OLE(现在的Active X)、COM (组件对象模型)和DCOM (分布式组件对象模型)技术,是连接数据源和数据的使用者(应用程序)之间的接口标准。
OPC标准的产生,源于WINDOWS平台应用程序存取现场设备的数据信息的需要。OPC标准提出的目的,就是为了实现不同供应厂商的设备和应用程序之间的软件接口标准化,促使各种不同系统应用之间具有更强大的互操作能力,数据交换更加简单化。采用OPC标准,可以向用户提供不依靠于特定开发语言和开发环境的可以自由组合使用的过程控制软件组件。它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。
3.OPC技术原理
OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的。
3.1COM和DCOM技术
COM(组件对象模型)是所有OLE机制的基础,它是WINDOWS系统中一种为了实现与编程语言无关的对象而制定的标准。这种标准可以使两个应用程序通过对象化接口通讯,而不需要知道对方是如何创建的。COM规范扩展到可访问本机以外的其它对象,一个应用程序所使用的对象可分布在网络上,这个扩展被称为DCOM。OPC是作为工业标准定义的特殊的COM接口。
3.2 OPC的工作原理
OPC采用客户端/服务器模式,在客户端和服务器端都各自定义了统一的符合OPC标准的接口,此接口具有不变特性。接口明确定义了客户同服务器间的COM方式的通信机制,它是连接客户同服务器的桥梁和纽带。由设备厂家或第三方开发出现场设备的访问接口(驱动及总线协议),并将其封装到OPC服务器中(硬件驱动模块)。客户通过OPC标准接口实现与服务器的数据交换。
当OPC客户端与服务器在同一台计算机上时,客户端通过COM进行本地过程调用(LRC)服务,当客户端与服务器不在同一台计算机上时,客户端通过DCOM进行远程过程调用(RRC)服务与服务器进行通信。
当OPC客户端访问服务器时,服务器程序就会为其打开一个进程实例,此时需要考虑三种情形:
l若OPC Server只允许一个用户访问,如果已有一个实例,则其它用户无法访问。
l 若Server允许多个用户访问,随着用户增多,实例也会增加,会占用更多计算机资源。
l 此外,还存在硬件抢占问题,比如串口,当一个用户使用了,其它用户就无法使用。
应用程序开发人员在设计客户端OPC接口程序时必须包含释放接口的函数,否则即使OPC客户端退出与服务器的连接,服务器上对应的进程实例也不会关闭,它会继续占用服务器系统资源。
3.3OPC数据传输方式
OPC Client与OPC Server之间交换数据有两种方式:同步和异步方式。
同步方式是按照一定的时间频率交换所有数据的方式,方法简单,但效率较低。适用于发送数据量较少的场合。
异步方式是当服务器缓冲区发生更改时,向客户发出通知,客户得到通知后再进行处理的一种方式。异步方式需要在客户程序中实现服务器的回调函数。适用于发送数据量大的场合。
下面是OPC在生产过程控制中的一种应用:生产系统中经常存在多种控制系统、多种总线共存的局面,如图3所示。以OPC作为异构网段集成的中间链接元件可以形成系统集成软件解决方案。每个总线段提供各自的OPC服务器,上层用户可以用任意一个OPC客户端软件通过一致的OPC接口访问这些OPC服务器,从而获得各个总线段的数据。
图3.1
4. OPC的构成
4.1OPC服务器的构成
如图4所示,OPC服务器总体结构由OPC标准接口实现模块、服务器界面模块、存储缓冲区模块、硬件驱动模块组成。
图4.1OPC的组成结构
4.1.1 OPC的标准接口
OPC标准接口定义了以下三个层次的接口,且它们在逻辑关系上依次呈包容关系。
lOPC Server,用于OPC启动服务器,获得其它对象和服务的起始类并用于返回OPC Group类对象;
lOPC Group,用于存储由OPC Item组成的组信息,并返回OPC Item类对象;
lOPC Item,用于存储Item项的定义、数据值、状态值等信息。
图4.2MatrikonOPC Explorer界面
4.1.2服务器和客户端界面模块
界面模块为用户提供组态及显示界面,方便用户配置服务器的参数。
通常在界面中,上面提到的OPC Item对应硬件设备中的某个具体设备单元,它包括当前设备单元数据值、当前设备单元的数据时间标签、数据品质信息等。OPC Group对象是用来管理标签的,实际上就是对标签的分类。最后就是创建标签对象,数值就是服务器从现场设备取得的实时变化的数据。标签对象和现场设备是一一对应的,OPC客户端程序从OPC服务器读取标签对象的数据,就等于从现场设备读取数据。
4.1.3存储缓冲区模块
存储缓冲区存放来自现场设备的实时数据和来自OPC客户端的数据,并在客户端需要时传给客户端。存储缓冲区的存在使得OPC客户端的 数据调用不需等待快速地从OPC服务器中返回,减少了OPC客户端的应用程序阻塞时间,加快了其应用程序的执行。
OPC客户端对存储缓冲区的读写是可选的,即可以通过数据缓冲区读写,也可以不通过数据缓冲区,直接从设备读取数据。前一种方式称为Cache方式,后一种称为Device方式。
4.1.4 硬件驱动模块
现场设备通过驱动程序(或总线协议)与OPC服务器进行数据交互。
例如,基于EPA(工业控制以太网)的OPC服务器通过EPA协议与支持EPA的控制系统通讯来实现OPC服务器的驱动部分。
5.OPC不同技术规范在现场控制网络中的应用
5.1 OPC DA(Data Access)数据访问规范
OPC DA在工业控制中的应用简化了不同总线标准间的数据访问机制,为不同总线标准提供了通过标准接口访问现场数据的基本方法。OPC DA 服务器屏蔽了不同总线通信协议之间的差异,为上层应用程序提供统一的访问接口,可以很容易的在应用程序层上实现对不同总线协议的设备进行互操作。
5.2 OPC DX(Data Exchange)数据交换规范
OPC DX 定义了不同类型控制系统间相同层上的用户数据的高层交换。它定义了一组标准化接口,用于数据的互操作性交换和以太网上服务器与服务器之间的直接通信。弥补了OPC DA规范在实现总线设备间数据访问时对上层应用程序有依赖性的不足。
5.3 OPC A&E(ALARM & EVNT) 报警和事件规范
OPC报警与事件规范接口提供了一种机制。通过这种机制,当I/O设备中有指定的事件或报警条件产生时,OPC客户应用程序能得到通知。通过OPC报警与事件规范接口,OPC客户应用程序可以设置OPC服务器支持的事件和条件,并获得其当前的状态。
6. OPC的连接配置
当OPC客户端与服务器在同一个主机上时,客户端会自动搜索并找到本机所安装的所有OPC服务器。而当OPC客户端与服务器不在同一主机上时,客户端与服务器之间以DCOM方式通讯。这时,为保证连接正确,客户端与服务器都需要分别对DCOM进行配置,配置步骤如下:
6.1准备
进行DCOM安全配置,必须拥有客户和服务器计算机的管理员权限。?为了能够建立DCOM通讯,首先需要禁止掉WINDOWS系统的防火墙功能,因其会阻止未被授权的访问。
6.2建立能互相识别的用户帐号
1) 为了使计算机能正确地识别用户,在OPC客户端和服务器上都添加一个用户,且用户名和密码相同。
2)缺省情况下,Simple File Sharing总是开启的,它强制使远程的每个用户作为Guest账户来认证,无法保证通讯正常。用下面的方法关闭该项:打开文件夹选项-查看-高级设置-文件和文件夹,去除“使用简单文件共享”项的勾选(图6.1)。
图6.1
6.3配置系统通用的DCOM设置
系统通用的DCOM设置会影响WINDOWS的DCOM应用,由于OPC客户端没有自己的DCOM设置,所以它受缺省的DCOM配置影响,因此需要作必要的改变,步骤如下:
A.点击开始按钮,运行dcomcnfg,打开ComponentService配置窗口
B.依次打开目录树:Console Root – ComponentService–Computers–My Computer
C.右击My Computer,选择properties选项,弹出窗口,选择Default Properties(图6.2)
确保缺省属性的三个指定选项设置如下:
l勾选Enable Distributed COM on this computer(需重新启动才生效)。
l将Default Authentication Level设置为“Connect”,该选项考虑安全的最小权限。
l将Default Impersonation Level设置为“Identify”
图6.2
D.点击Default Protocols标签设置缺省协议为“Connection-Oriented TCP/IP”,因为OPC通讯需要用到它,所以应尽可能将其它协议删除(除非用其它应用程序必须使用)。(图6.3)
图6.3
E.点击COM Security安全标签,WINDOWS系统用COM的安全标签设置所有对象的系统通用访问控制列表,包括了“Launch/Activation”和访问权限,添加允许权限步骤如下(如图6.4-6.5):
a)在允许访问组,点击“Edit Default…”按钮,添加“Everyone”到“Group or username”,点OK
b)在允许访问组,点击“Edit Limits…” 按钮, 添加”Anoymous Logon”和“Everyone”到“Group or username”,点OK
c)在启动激活组里,点击“Edit Default…”按钮,添加“Everyone”到“Group or username”,点OK
d)在启动激活组里,点击“Edit Limits…” 按钮, 添加 “Everyone”到“Group or username”,点OK
图6.4
图6.5
6.4配置Server的特殊DCOM设置
A.在服务器上运行dcomcnfg,打开ComponentService配置窗口
B.在窗口中依次打开目录树:Console Root–ComponentService–Computers–My Computer,打开DCOM Config文件夹,在右边窗口中找到OPCServer相关项,进行OPCserver的特殊设置,仅Identity标签的内容需要修改,其他标签参考客户端DCOM通用设置。
C.Identity标签下选项设置(见图6.6):
a)The interactive user:OPC Server中用来交互的认证用户,此账号是当前登录且驻留在此服务器所在计算机上的用户,也就是必须有账户登录,否则不能启动OPC Server。当用户注销时,OPC Server进程实例就会关闭,重启计算机也会造成OPC Server短暂关闭。
b)The Lunching user:OPC Server用来访问的认证用户,操作系统会为每个访问的用户创建一个实例。
c)This user:OPCServer已指定的认证用户账号,这种情况需OPCServer上已存在该账号,且OPC Client必须知道此用户,否则无法访问。
d)The system account(service only):OPCServer以操作系统帐号认证,无论对工作组还是域都能认证,也不需要用户登录,但OPCServer必须以服务方式启动。
图6.6
7.OPC应用实例
下面的例子是OPC技术在公司新空分装置压缩机组TRICON控制系统中的应用。我们通过OPC软件与控制系统通讯,可以取得压缩机过程数据和控制器系统状态信息。
这里我们使用Matrikon公司开发的MatrikonOPC Server for Triconex作为与Triconex控制器接口的OPC服务器。客户端采用Matrikon公司开发的标准OPC客户端软件(也可以是其他公司、组织开发的OPC客户端应用软件或者用户自己开发的能提供OPC客户端接口的程序)。
7.1OPC Server端设备连接配置
7.1.1 OPC服务器程序
工作站上安装OPC Server软件完毕后,依次点击开始菜单/MatrikonOPC/Triconex/
MatrikonOPC Server for Triconex 打开OPC SERVER组态画面(如图7.1)
图7.1
7.1.2 服务器站点定义
右键点击Server Configuration在弹出菜单中选择Define NEW,在弹出对话框中
(如图7.3)选择Triconex PLC Node,点击OK。
7.1.3 服务器及连接配置
在Triconex PLC Node配置画面中配置Triconex PLC站点(如图7.4-7.6)。设置包括名称、描述,PLC节点号、设备类型(Tricon)、IP地址,选择使用PLC的时间标度,连接断开时报警;在A&E标签中,定义所要访问的控制器SOE文件路径和名称。其余选项可保持为缺省值,点击“OK”完成。
图7.3
图7.4
图7.5
图7.6
最终得到的配置画面如图7.7,其中的配置可以随时修改,配置完成后须保存到指定的文件,保存后窗口可关闭。
图7.7
7.2 MatrikonOPC Explorer(浏览客户端)配置与连接
7.2.1. 连接指定OPC服务器
开始菜单/MatrikonOPC/MatrikonOPC Explorer打开客户端画面。在画面左边的列表中找到OPC服务器“Matrikon .OPC . Trikonex”。如果客户端与服务器在同一台计算机上,此条目在本机(localhost)目录树下(如图7.8);如果OPC服务在远方计算机上,则首先应该按照前面第六部分的步骤内容,分别对客户端和服务器所在计算机进行DCOM配置,配置完成后需要到客户端画面的“网络邻居”目录树中找到“Matrikon . OPC.Trikonex”。
选中“Matrikon . OPC.Trikonex”(高亮)后,在右边画面中点击连接图标与服务器连接,连接完成后右边画面中将显示服务器端所支持的OPC接口规范,如DA、HAD、A&E等。
图7.8
7.2.2添加数据项目
在MatrikonOPC Explorer画面中点击项目添加图标打开项目浏览的画面,如图7.9。
图7.9
在画面左边文件夹目录树中选择“AIR triconex” (即前面所定义的TRICONEX OPC服务器) 。此时在Available框中显示的项目为TRICON控制系统的系统参数,双击要选择的参数,它将会出现在右边的已添加项目框内,这里选择了三个参数:报警状态(ALARM STATUS)、实际扫描时间(ACTUAL SCAN TIME)、控制器负荷(CP LOAD STATE)。
展开“AIR triconex”文件夹会看到其下面有13个子文件夹,它们分别对应了控制器中13中不同类型的寄存器,选中子文件夹,“ITEM ID”域就会显示出该项目的名称和地址格式,其对应寄存器类型和地址范围就被选定了。例如图7.10中,选择文件夹“7”,在Available框中选择“0 to 999”选项(0 to 999表示的是地址偏移量,对应地址范围33001~34000),在画面的“ITEM ID”域中会显示:Air_triconex:7:0 to 999(offset range for bin7),将“0 to 999(offset range for bin7)”改为需指定寄存器的偏移量(例如111),则“ITEM ID”中最后所定义的内容表示控制器中地址为33110的只读实数型变量值。
图7.10
项目选择完成后,在画面中点击OK,环面返回主窗口,右边框内将显示所选项目的实时值,如图7.11。
图7.11
参考文献
[1] Honeywell_OPC_系统集成_白皮书
[2]《COM技术及OPC技术》
[3]《OPC 在现场控制网络中的应用》武汉海军工程大学陈丹丹、夏立、邵英