OPC数据采集DCOM配置指南
起源与使用
开放平台通信(OPC)规范是以微软所开发,针对Microsoft Windows操作系统下的对象链接与嵌入(DDE)、组件对象模型(COM)及Distributed COM(DCOM)技术为基础。规格定义了过程控制及工厂自动化需要的对象、接口及方法,目的是为了达到互操作性。最常见的OPC规范是读写实时资料用的OPC资料存取(OPC DA)。许多制造商提到OPC时,所指的其实就是OPC Data Access。OPC DA在初版发行起,已有三个主要的版本,所有版本都向后兼容。第一版OPC DA的客户端仍可以存取第三版OPC DA的服务器,各版本会增加机能,但原有的机能仍然要支持。不过若客户端允许资料写入,就不支持旧版的服务器,例如DA 3 相同的客户端不一定支持DA 1.0的服务器。
除了OPC DA规范外,OPC基金会也维护OPC Historical Data Access(OPC HDA)的规范。OPC DA存取的是实时的资料,OPC HDA允许存取及检索已存档的历史资料。
OPC基金会还维护OPC Alarms and Events的规范,定义警告及事件型式的消息信息,类似变量状态及状态管理的消息[3]。
设计
OPC规格没有限制服务器提供哪些资料给程序控制设备。OPC服务器可以发送MCU的内部温度,也可以发送某一地区目前的温度。
只要某个设备已经有了OPC服务器,其他可以作为OPC client的软件就可以存取此一设备。OPC服务器使用微软的OLE技术(也称为组件对象模型,COM)来和client通信。COM技术提供在软件应用程序以及程序硬件之间即时的资料交换。
OPC规范中有一些已经出版发行,其他一部分只开放给OPC协会的成员,没有一家公司拥有OPC规范,任何一家公司就算不是OPC协会的成员,也可以开发OPC服务器,非成员不一定要使用到最新的规范。任何人都可以集成OPC产品,系统集成商也不需要属于任何组织。每家需要OPC产品的公司可以自行决定其产品是否要经过认证,其系统集成商是否有需要接受必要的训练。
未来
OPC UA(OPC Unified Architecture)已经有对应的规范,并且其早期Adopters版本已经部署并且进行测试。OPC UA可以用Java、Microsoft .NET、C语言实现,避免了早期OPC版本需要用Microsoft Windows为基础的系统才能实现的问题。UA结合了现有OPC接口的功能,又加入了像XML及Web Services等技术,来支持高阶的制造执行系统(MES)及企业资源计划(ERP)等应用。
分布式COM(DCOM)
是一项Microsoft技术,可为Windows应用程序提供在LAN(局域网),WAN(广域网)或Internet(互联网)连接上从一台计算机连接到另一台计算机的能力。例如,DCOM允许OPC客户端应用程序从一台计算机与另一台计算机上的OPC服务器通信。

DCOM
DCOM作为上世纪主流分布式应用技术占据了企业应用的巨大市场份额,导致了目前自动控制领域设备(DCS,PLC等)普遍支持OPC数据采集标准,但由于DCOM基于微软Windows操作系统的二进制标准,底层实现技术封闭,与Windows操作系统安全机制紧密耦合,DCOM配置繁琐,且过程极易失败等诸多问题也普遍为业界所诟病。
OPC DOM 配置方案
RtCloud(实时云平台)总结出一套行之有效的OPC DCOM配置解决方案。
如何顺利的配置OPC相关的DCOM?首先需要了解OPC DA的工作模式及相关程序(组件、服务)以及Windows的DCOM组件工作机制,然后才能正确的配置OPC DCOM。
OPC DCOM 的工作机制
Client和Server在同一台计算机
当Client和Server在同一台计算机时,首先,Client向OpeEnum组件(CLSID: {13486D51-4821-11D2-A494-3CB306C10000})发起查询本机已注册的所有OPC服务器(包括2.0标准(GUID : {63D5F431-CFE4-11D1-B2C8-0060083BA1FB})的及1.0标准(GUID : {63D5F430-CFE4-11d1-B2C8-0060083BA1FB})的服务器。OpcEnum组件负责返回所有已注册的OPC服务器信息。
第二步,OPC Client获取已注册OPC服务器信息后,确定需要连接的OPC服务器,并通过ConnectionPoint接口及AdviseSink接口获取服务器的各种配置信息、数据项(Tag)实时数据及其它通知(如服务器关闭)。

OPC Clientt/Server安装在同一台计算机
Client和Server在不同的计算机

OPC Client/Server安装在不同的计算机
首先,OPC客户端软件访问OPC服务器所在计算机上注册的OPCEnum.exe,查询服务器所在计算机上已注册的所有OPC服务器。OpcEnum组件负责返回所有已注册的OPC服务器信息。
第二步,OPC Client获取已注册OPC服务器信息后,确定需要连接的OPC服务器,并通过ConnectionPoint接口及AdviseSink接口获取服务器的各种配置信息、数据项(Tag)实时数据及其它通知(如服务器关闭)。
在简单了解OPC客户端与服务器的通讯过程后,可以得出一个结论,无论是在同一台计算机还是不同的计算机,OPC客户端和服务器之间的通讯主要涉及三个部分:OPC Client、OPCEnum 和 OPC Server。
步骤1 配置访问账号
配置方案要求在采集侧(OPC客户端)和OPC服务端同时配置一个就有相同账号名称和密码的具有DCOM访问权限的账号,这里假设配置的账号名称为OPCUser,密码为OPCUser*。
调用Windows账号管理器,控制台命令:
lusrmgr.msc

特别提示
账号要在OPC服务计算机和OPC客户端计算机同样配置。
步骤2 设置系统和默认DCOM访问权限
调用DCOM配置管理器,控制台命令:
dcomcnfg




确认 System和OPCUser两个账号具有本地和远程访问的权限。


同样确认 System和OPCUser两个账号具有本地和远程访问的权限。


确认 System和OPCUser两个账号具有本地和远程访问的启动和激活的权限。


同样确认 System和OPCUser两个账号具有本地和远程访问的启动和激活的权限
特别提示
上述设置系统和默认DCOM访问权限需要在OPC服务计算机和OPC客户端采集计算机同样进行。
步骤3 OPC服务器设置 OPCEnum 的DCOM访问权限
在OPC服务计算机调用DCOM配置管理器,控制台命令:
dcomcnfg






步骤4 OPC服务器设置 OPCDA服务 的DCOM访问权限
在OPC服务计算机调用DCOM配置管理器,控制台命令:
dcomcnfg



提示
上述DCOM设置完成后,应重启OPCEnum和OPC服务,使配置生效
步骤5 重启OPCEnum 和OPC服务
在OPC服务计算机调用服务配置管理器,控制台命令:services.msc


步骤6 设置网络访问安全策略
调用服务配置管理器,控制台命令:secpol.msc




特别提示
上述安全策略设置需要在OPC服务计算机和OPC客户端采集计算机同样进行。
步骤7 OPC服务计算机网络防火墙设置
调用防火墙管理器,控制台命令:
firewall.cpl

配置DCOM 135端口的入站规则




配置OPCEnum 的入站规则





配置OPC 服务的入站规则





配置OPC 服务的出站规则

步骤8 OPC客户端采集计算机网络防火墙设置
配置DCOM 135端口的入站规则
同上述OPC服务计算机135端口的入账规则配置流程。
配置OPC 客户端(采集程序)的入站规则






配置OPC 客户端(采集程序)的出站规则
