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

西门子PLC众平专营

产品:16209    
联系我们
您当前的位置:首页 » 新闻中心 » 西门子技术--巧用SIMATIC PLC SNMP 库-判断网络拓扑
产品分类
新闻中心
西门子技术--巧用SIMATIC PLC SNMP 库-判断网络拓扑
发布时间:2023-04-13        浏览次数:368        返回列表
 

 概述

在当今不断发展的工业自动化世界中,数据扮演着越来越重要的角色。传统的 IT 网络中,提供了丰富的规范和协议,这些都可以帮助用户对数据进行充分地发掘。

 

随着工业4.0的来临,IT、OT 的融合是大势所趋,IT 和 OT 之间的界限也越来越模糊,越来越多的 IT 技术被引入到 OT 应用之中,以前我们谈论 PLC 通讯会想到 PROFINET、S7、Modbus TCP 这些传统的工业通讯协议,现在随着技术发展,SIMATIC PLC 也提供了常用于 IT 领域的通讯协议库和功能块。

 

 

 

 拓扑诊断

2.1.1 TIA 博途拓扑视图

TIA 博途的拓扑视图,可以通过组态期望的连接关系来为 PLC 提供拓扑检查的功能。实际的网络连接关系和组态的拓扑不一致,虽然不会影响通信的结果,但是 PLC 会产生响应的报警信息。

 

如下图的例子,S7-1500 控制器连接了两个分布式 I/O,设备名称分别为 “io device_1” 的ET200MP和 “io device_2” 的ET200SP, “io device_2” 的P1接口应该连接到交换机的P3 口,如果连接错误了,PROFINET 虽然正常,但是通过 TIA 博途拓扑视图在线和在线诊断功能,我们可以看到 ET200 SP 和交换机都产生了报警。

 




 

借助 TIA 博途的在线诊断,我们可以知道拓扑连接错误的故障,ET200SP 站点连接在了错误的接口上。但是在实际工程中,获得的诊断信息也有几点不足:

1)     诊断是借助 TIA 博途软件,PLC 程序不能直接获得状态

2)     除了知道拓扑连接错了,程序中能不能知道 ET200SP 当前连接到交换机的哪个接口呢?

为了实现这两点要求,我们接下来看看 PLC 程序上该如何处理。

2.1.2 MAC 地址表

以太网数据在2层转发,依靠的是设备的 MAC 地址,MAC 地址和设备端口的对应关系就是我们常说的 MAC 地址表,交换机转发数据就是依靠MAC 地址表。如下图,通过检查交换机的 MAC 地址表,我们可以知道了设备名 “io device_2” 的设备按照设计应该连接在交换机 P3 口,但是此时错误的出现在了 P6 口上。


因此,如果在 PLC 程序中能够获得交换机的 MAC 地址表信息,就可以知道哪个设备接错了,而且还可以知道实际接到了哪个接口上。借助 SNMP 的程序块,CPU 可以获得所有这些信息,只需要知道查询 MAC 地址表的OID 即可。

2.1.3 SIMATIC PLC SNMP 获得拓扑连接信息

交换机等网络设备的 MAC地址表,已经在通用的 MIB-2 规范中定义了,其中 MAC 地址对应的端口号的根 OID 为1.3.6.1.2.1.17.7.1.2.2.1.2。

 

如果需要查询具体的 MAC 地址对应的端口号,需要在 OID 的***后增加需要查询设备 VLAN 和 MAC 地址 (如下图,红色的 “1”表示查询的交换机的 VLAN1;蓝色部分表示需要查询的设备 MAC 地址。注意,OID 中的MAC地址需要将实际 MAC 地址转换为十进制数,例如上面列出的 io device_2,MAC地址:28-63-36-8b-da-7d→40.99.54.139.218.125),因此***终的 OID 如下。

 

“io device_1” MAC地址端口 OID:1.3.6.1.2.1.17.7.1.2.2.1.2.1.40.99.54.139.218.125

“io device_2” MAC地址端口 OID:1.3.6.1.2.1.17.7.1.2.2.1.2.1.0.27.27.33.9.205

 

程序上,我们分别调用两个“LSNMP_GET 指令,来查询交换机的 MAC 地址表,分别读取两个分布式设备的 MAC 地址连接在交换机的哪个端口。返回的数据会存储在 “varBinding 定义好的 DB 中。

 



 

通过在状态表中监控获得的数据,可以看到 io device_1 连接在交换机的P2 口,和拓扑组态一致;io device_2 连接在交换机的 P6 口,因此和组态的拓扑不一致。这样,通过程序的处理,我们不仅很容易知道哪个设备连错了,而且这个设备当前连接在哪里也能够知道了。

 


 

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


2.1.4 SIMATIC PLC SNMP 批量处理

按照我们上面的介绍,如果我们需要查询的设备 MAC 比较多,就需要调用大量的 “LSNMP_GET “ 指令,那有没有办法通过一个指令就获得交换机的所有 MAC 地址表信息呢?

 

SIMATIC PLC SNMP 的指令块还提供了批处理的指令 “LSNMP_GetBulk” ,通过这个指令可以一键读取一定范围的 OID,如下图,我们输入 MAC 地址表的根 OID,“maxRepetitions” 表示查询从根 OID 开始的数量(我们这里读取5条,注意读取的数量不能超过当前交换机 MAC 地址表的***大条目数)

 


 

输出的结果保存在 “varBindings” 定义的数据块类型中,如下图,通过OID 字符串的后六个字节,可以知道是哪个设备的 MAC 地址,程序上我们做一下简单的梳理,整个交换机的 MAC 地址表都可以存储在 PLC 的 DB 中了。

 


 

 结语

SNMP 协议可以查询、更改网络设备的状态,不同的 MIB 库也为实际应用定义了很多有用的信息。作为***终用户,我们只要知道 OID,就可以获得这些信息,为网络的维护、诊断提供了有利的帮助。

 

SIMATIC PLC SNMP 库,随着版本的不断升级,性能上也有不断的提高,通过指令块的灵活使用,SIMATIC PLC 的网络通信功能如虎添翼,为自动化工程师提供了更多的网络诊断手段,我们后续也会继续开发相关的应用,扩展思路,期望能够成为大家工程中的有效工具!




 

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

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