您好!欢迎光临工博士商城

西门子PLC众平专营

产品:16217    
联系我们
您当前的位置:首页 » 新闻中心 » 巧用 SIMATIC PLC SNMP 库查询 IP 地址冲突
产品分类
新闻中心
巧用 SIMATIC PLC SNMP 库查询 IP 地址冲突
发布时间:2023-05-10        浏览次数:173        返回列表
 01

 概述

     

    在工业现场调试中,IP 地址冲突是比较常见的问题,如何及时地发现 IP 地址存在冲突并快速定位冲突设备的位置非常重要。通常,我们可以通过专业的软件扫描出冲突的设备,例如:PRONETATIA 博途等。

 

 

但是这些软件扫描都是基于 PN-DCP 2层发现协议工作的,如果网络上冲突的设备是非 PN 设备或者不支持 PC-DCP 协议,很有可能是扫描不出来的,因此针对这些设备,需要更专业的 IT 手段才能检测出来,无形中增大了错误排查的难度。
有没有可能通过 PLC 程序检查网络中的 IP 冲突呢?答案当然是可以的,今天给大家介绍的就是如何通过 SIMATIC PLC SNMP 块,定位 IP 冲突的设备。
 

 

02

检测 IP 冲突信息

2.1.1  TIA 博途

    如下图的例子,S7-1500 控制器连接了设备名称为 io device_2 ET200SPSCALANCE XC208 交换机也作为 PN 设备连接在了主 CPU。设备都直接连在交换机,形成星型的网络。

设备的参数信息如下图:

    虽然 PROFINET 通信是基于 MAC 地址收发数据,但是在通信的连接建立过程中会使用 IP 建立通信关系,因此如果 PN 设备存在 IP 冲突,不会导致 PN 通信的中断,但是如果通信断了,重新连接就会受到影响。


    如下图,如果 PN 设备的 IP 地址存在冲突,TIA 博途在线检查 CPU 的诊断缓冲区,我们可以知道 io device_2 的 IP 地址存在冲突,但是不能知道冲突设备的信息和位置。


2.1.2  ARP 地址表

    以太网数据在交换机上的转发是依靠 MAC 地址寻址的,因此在进行 IP 通信之前,设备都会通过 ARP 协议去探测设备的 MAC 地址,形成 IP 地址和 MAC 地址的对应表,这就是我们常说的 ARP 地址表。如果 IP 地址存在冲突,就会导致 ARP 地址表不断在不同的 MAC 地址间反复切换,导致通信的失败。PC 侧可以通过指令查询 ARP 地址表,如下图。

 

    SIMATIC PLC 作为一个标准的以太网设备,同样存在 ARP 地址表,通过查看 CPU 的 ARP 表内容,我们就可以知道冲突的 IP 地址设备当前的 MAC 地址是什么,这样,此时冲突的设备的 MAC 地址就无处遁形了。

    因此,如果在 PLC 程序中能够获得 PLC 的 ARP 地址表信息,冲突设备的 MAC 地址就知道了。借助 SNMP 的程序块,CPU 可以获得所有这些信息,只需要知道查询 ARP 地址表的 OID 即可。

    注意,CPU 本体的以太网接口不能通过 SNMP 获得自己的信息,因此本例中,为 CPU 增加了一块 CP 卡,连接在同一网络中,通过 CP 卡 SNMP 收集 CPU 的信息。

 

2.1.3  SIMATIC PLC SNMP 查询ARP 地址表信息

    设备的 ARP 地址表可以通用的 MIB-2 规范定义的 OID 中查询到,查询 CPU ARP 表中 IP 地址对应 MAC 地址的 OID 为:1.3.6.1.2.1.4.22.1.2.1.IP

    本例中 io device_2 的地址为192.168.0.1,因此在 CPU 中查询 ARP OID1.3.6.1.2.1.4.22.1.2.1.192.168.0.1

    如下图,程序上分别调用“LSNMP_GET指令,来查询 CPU 的 ARP地址表中192.168.0.1对应的 MAC 地址,返回的 MAC 地址会存储在”varBinding 定义好的 DB 中。注意,本例中在“connParam 参数中定义的设备硬件标识符,应该是 CP 卡的标识符。

    指令执行后,在”varBinding 定义好的 DB 中监控,可以看到 CPU 的 ARP 表中,192.168.0.1对应的 MAC 地址是 00.1B.1B.21.09.CD,对应上面的设备参数信息,我们可以知道当前的设备 MAC 地址就是 io device_2的 MAC 地址。


    这时候,如果接入存在 IP 冲突的设备,再次查询 CPU 的 ARP 表中,192.168.0.1对应的 MAC 地址变成了是20.87.56.7F.34.8D,通过比较 MAC,可以知道 IP 地址存在冲突,冲突设备的 MAC 地址也就知道了。(注意,***好暂时移除 io device_2 去探测,如果两个设备同时存在,读到的数据有可能会反复切换,影响程序处理)。

 

 

    在实际工程中,我们也对程序块做了重新的封装,方便***终的应用,如下图,简单输入 CPU 的 IP 地址和需要查询的设备的 IP 地址,这个 IP 地址在 CPU ARP 表中的 MAC 地址就可以一目了然看到了。

2.1.4   SIMATIC PLC SNMP 定位 IP 冲突设备的位置

    知道了冲突 IP 地址的 MAC 地址,下一步,我们需要根据 MAC 地址快速定位它的位置,这就可以用到我们linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2" hasload="1" style="margin: 0px; padding: 0px; outline: 0px; text-decoration-line: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); cursor: pointer; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">《巧用SIMATIC PLC SNMP 库-判断网络拓扑内容中介绍的通过 SNMP 查询交换机的 MAC 地址表的功能。

    如下图,我们直接使用重新封装的指令块为大家展示一下效果,首先通过指令读取 CPU ARP 表中192.168.0.1的对应的 MAC 地址,然后通过读取交换机的 MAC 地址表来获得设备连接在哪个端口。

    正常情况下,指令执行后,就可以查询交换机 MAC 地址表,设备连接在交换机的哪个端口就知道了,下图中,读取到的192.168.0.1的 MAC 地址是00.1B.1B.21.09.CD,对照参数表知道,这个 MAC 地址就是 io device_2的 MAC 地址,连接在交换机的 P7 口。

    当网络存在 IP 冲突时,我们移除 io device_2,再次指令执行后,读取到的192.168.0.1的 MAC 地址变成了20.87.56.7F.34.8D,连接在交换机的 P4 口。

    这样,通过两个 SNMP 指令的配合使用,我们知道了冲突 IP 的设备的信息,并且能够快速地找到这个设备。



本文系转载,如有涉及侵权请联系删除。




 

联系热线:18271966141   联系人:王乐 联系地址:北京市朝阳区霄云里8号楼1单元13层1601室551

技术和报价服务:星期一至星期六8:00-22:00 西门子PLC众平专营