当OPC Client连接本地OPC Server时(OPC Client和OPC Server在同一台电脑),OPC Client可以通过OPCEnum.exe列举到本地已经注册的OPC Server,OPC Client也可以通过注册表查找本地的OPC Server。
当OPC Client连接远程OPC Server时(OPC Server与OPC Client不在同一台电脑),情形将变得繁芜。在windows操作系统中,RPC(Remote Procedure Call)是通过135端口进行通讯的。OPC Client列举远程电脑上的OPC Server时,要调用远程电脑上的OPCEnum.exe。这就涉及到了防护墙和DCOM配置。如果有以下问题,那么OPC Client无法列举到OPC Server:
用ping测试网络是够可达

把稳:ping是有一定的欺骗性的。ping是通的代表网络可达。ping不通不代表网络不可达。由于防火墙可能会阻挡ICMP回应。当ping不通时,要通过其他的办法合营确定网络是否可达,比如端口开放检测工具。
防火墙(硬件防火墙或者系统自带的软件防火墙)阻挡了135端口。测试端口是不是通,常用的工具有telnet、nmap、tcping。在事情中,这三个工具我都会用。但是就检测端口来说,我更喜好tcping这个工具,大略又直不雅观。nmap过于强大,以是就会比较繁芜。telnet又过于简陋。tcping工具的官方站点:https://www.elifulkerson.com/projects/tcping.php。tcping的利用非常大略,就像ping工具一样。下图是tcping最大略的用法,tcping 后面跟随两个参数,第一个参数为目的ip,也便是OPC Server所在电脑的IP地址。第二个参数为端口号,下图我测试的是135端口。下图的测试结果表示192.168.56.1的135端口是通的。
tcping最大略的用法
tcping检测到135端口不通
如果检测到135端口不通,那么该当去排查硬件防火墙或者windows防火墙。windows防火墙该当开放TCP135端口。网络中的硬件防火墙(如果有的话)也该当许可OPC Client和OPC Server之间的135端口互访。
DCOM配置缺点。网络上不少DCOM配置的教程。基本上便是将administrators、everyone、anonymous、sytem、interactive、network几个账户添加到COM安全配置中。往后有韶光我会再写一个DCOM配置的文章。我目前常常利用的是脚本,我自己写的一个DCOM配置脚本,由于我比较安全策略问题。
不同版本的windows,默认安全策略是不同的。该当只管即便让OPC Client和OPC Server的安全策略相同。尤其是“网络访问:本地账户共享和安全模型”,直接影响账户的验证办法。有些OPC Server,须要开启Guest才能正常通讯。最随意马虎导致问题的便是下面三图选中的选项。
本地账户共享和安全模型
将 Everyone用于匿名账户权限
来宾账户状态
OPCEnum没有注册或者被删除这个就安装opc 运行环境吧。
OPCEnum的用户标识缺点。默认情形下,windows7往后的系统中,OPCEnum是注册为windows做事的,并且已经集成到windows系统中。安装一个全新的系统,默认就安装了OPCEnum做事。已经被注册为做事的DCOM组件,强烈建议将标识设置为“系统账户(仅用于做事)”。只管即便不要选择“下列用户”,更不建议将OPCEnum反注册往后设置为“交互式用户”。网络上有很多文章说要把OPCEnum的标识设置为“交互式用户”,乃至有很多文章为了把OPCEnum的标识设置为“交互式用户”,不惜把OPCEnum反注册往后再重新注册。我的建议是:没事别动系统做事。
opcenum标识配置
OPC Client和OPC Server用户名密码不同。OPC Client和OPC Server要有相同的用户名和密码,否则将无法正常通讯。OPC Client 连接OPC Server
经由第一步列举往后,如果OPC Client能列举到OPC Server,那么一定能连接上OPC Server吗?答案是不一定。导致能列举到OPC Server而无法连接OPC Server的问题非常多。最常见的缘故原由有以下点:
DCOM配置缺点。要仔细检讨一下DCOM的配置有没有问题,有没有遗漏。其余DCOM配置往后常日须要重启电脑。
标识缺点。这个问题和上面的OPCEnum标识缺点一样的。OPC Server可能以COM办法注册,也可能以做事办法注册。如果OPC Server因此做事办法注册的,那么标识只管即便选择“系统账户(仅用于做事)”。如果OPC Server因此COM办法注册的,那么只管即便选择“交互式用户”。
这个opc server因此COM办法注册的
这个opc server因此做事办法注册的
OPC Server无法正常启动/运行。OPC Server常日都是依赖数据源的,一样平常数据源是DCS系统或者组态软件之类的。可能由于依赖关系导致OPC Server无法启动。或者由于安装配置缺点,导致OPC Server无法启动。也可能是由于其他的缘故原由导致OPC Server处于假去世状态。
创建数据点在创建数据点的过程中可能无法遍历OPC Item的情形。也便是列出OPC Serve的点时出错或者无法显示。这个常日是由于OPC Server自身的缘故原由导致的。如果只是无法列出点,但是能在OPC Client创建点,也能读取,那么这个问题可以不予理会。如果无法在OPC Client创建点,那么须要检讨OPC Server。
一样平常来说OPC Server都是依赖其他数据源的。涌现无法列出OPC Item的情形,很可能是OPC Server无法读取数据源或者是由于依赖的数据源没有启动、启动顺序不对等缘故原由造成的。常日重启软件或者电脑能办理问题。
读写OPC Item终于来到了读写这一步。理论上,上面的每一步都走通了,读写数据该当是迎刃而解吧?然而,这一步不出问题还好,出了问题就是非常头大的问题。有些问题非常奇怪,让人都无从下手。我列一个我碰着过的问题:
可以同步读取,无法异步读取/订阅。这个问题困扰了我良久,有好几天找不到缘故原由。同步通讯时,是客户端发起要求,做事端相应。而异步通讯时,客户端订阅了一些点,做事端会在未来某个时候连接客户端发送数据。也便是说OPC Client侧135端口要打开,DCOM要配置精确,安全策略要配置精确,双方的用户名和密码也要精确。这样才能担保OPC Server能正常的发送数据给OPC Client。以上任何一个有问题都会导致OPC Server无法将订阅数据发送给OPC Client。我当时碰着的问题便是由于安全策略导致的。