首页 » PHP教程 » php读取opc技巧_OPC DA通讯排错

php读取opc技巧_OPC DA通讯排错

访客 2024-11-27 0

扫一扫用手机浏览

文章目录 [+]

当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:

php读取opc技巧_OPC DA通讯排错

网络故障。
OPC Client和OPC Server之间网络无法到达,肯定是无法建立通讯的,RPC的底层还是TCP/IP,网络不通那么就无法建立TCP/IP连接,也就不可能正常通讯。
检测网络是否可达,常用的命令是ping。
如果检测到网络不通,那么须要排查网络问题。

用ping测试网络是够可达

php读取opc技巧_OPC DA通讯排错
(图片来自网络侵删)

把稳: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。
我当时碰着的问题便是由于安全策略导致的。

标签:

相关文章

执业药师试卷代码解码药师职业发展之路

执业药师在药品质量管理、用药安全等方面发挥着越来越重要的作用。而执业药师考试,作为进入药师行业的重要门槛,其试卷代码更是成为了药师...

PHP教程 2025-02-18 阅读1 评论0

心灵代码主题曲唤醒灵魂深处的共鸣

音乐,作为一种独特的艺术形式,自古以来就承载着人类情感的表达与传递。心灵代码主题曲,以其独特的旋律和歌词,唤醒了无数人的灵魂深处,...

PHP教程 2025-02-18 阅读1 评论0

探寻福建各市车牌代码背后的文化内涵

福建省,地处我国东南沿海,拥有悠久的历史和丰富的文化底蕴。在这片充满魅力的土地上,诞生了许多具有代表性的城市,每个城市都有自己独特...

PHP教程 2025-02-18 阅读1 评论0

探寻河北唐山历史与现代交融的城市之光

河北省唐山市,一座地处渤海之滨,拥有悠久历史和独特文化的城市。这里既是古丝绸之路的起点,也是中国近代工业的发源地。如今,唐山正以崭...

PHP教程 2025-02-18 阅读1 评论0