最近一段时间忙于给内部的同事做网络基础知识的培训,所以一直没有写故事给大家。但还是抽了点时间总结自己的现场经历分享给大家。
这次分享的内容是我在某制药设备生产公司进行的网络诊断时发现的问题。该公司正在计划研发新型制药机型。该机型自控系统采用的是S7-1500 CPU、ET 200 SP分布式I/O 和SINAMICS S120。通过调试S7-1500 CPU与SINAMICS S120驱动之间采用PROFINET RT的通信方式系统可以正常运行,同时也能满足现有工艺的要求。但为了未来与竞争对手差异化的产品性能竞争,用户希望在现有的基础上来测试S7-1500 CPU与SINAMICS S120驱动之间的PROFINET IRT的等时同步的应用。
现场的网络拓扑结构如下图1所示。红色的Switch 1为魏德米勒的交换机,S7-1500 CPU PN口的接口1连接到魏德米勒的交换机,S7-1500 CPU PN口的接口2连接到后续的SINAMICS S120。S7-1500 CPU与其它的分布式IO 如ET200SP、BPS、EX260经过了Switch 1实现PROFINET RT通信。S7-1500 CPU与SINAMICS S120实现PROFINET IRT通信。
当把S7-1500 CPU与SINAMICS S120的通信由RT模式换成IRT模式后,CPU刚开始可以正常工作,但过几分钟后就会出现如下图2的错误信息而通信中断。
图2、CPU诊断缓存的诊断信息
现场查检查了项目的配置,发现IRT的配置是正确的。不存在同步域配置错误的问题。
查看是否是魏德米勒的交换机引起的问题。于是在魏德米勒的交换机与S7-1500 CPU的网线上抓取数据报文,看是否有不正常的报文。抓取到的报文如下图3所示。
图3、Wireshark抓取到的数据帧
从上图的报文可以看到有经过魏德米勒的交换机既有RT的报文也有线延迟的测量报文。对时钟同步的报文进行过滤,可以分析到如下图4的结果。
图4、PROFINET的线延迟测量数据帧
从上图中可以看到网络中的线延迟测量报文非常多(几乎在1ms内会有多个报文出现),且这些线延迟测量报文来自不同的设备(源MAC地址不唯一)。把魏德米勒的交换机换成西门子的交换在同样的地方抓取报文过滤时钟同步报文如下图5所示。
图5、更换为西门子交换机的PROFINET线延迟测量数据帧
从图5中可以看到线延迟会每隔30ms发送一次,且发送的源MAC地址只有一个。这是西门子交换机与使用魏德米勒的交换机的不同之处,且换上西门子的交换机后运行将近2个小时不出现故障现象。
故障的原因是魏德米勒的交换机不能过滤时钟同步的组播报文导致的CPU不能正确计算IRT的线延迟,最终引起IRT的同步域的同步的不正常,最后导致系统出现中断的现象。
从此问题的处理得出的结论是对于PROFINET网络中最好使用PN的交换机避免一些不必要的麻烦。
---------------------------------------------------------------------------------------------------
->返回汇总帖
->PROFINET基础知识介绍
->汽车厂PROFINET 网络故障的诊断与分析
->烟厂PROFINET网络故障诊断与分析