三菱FX5U系列PLC以其内置以太网口和便捷的SLMP协议(MELSEC通信协议)受到广泛欢迎,但在实际应用中,通信故障频发。本文分享一个因IP地址冲突和TCP端口复用不当导致的通信中断案例,并提供系统化排查流程。
案例背景:某包装机械使用FX5U-32MT与上位机通过SCADA系统(基于Modbus TCP)交换数据。运行一周后,PLC频繁出现“通信超时”报警,但断电重启后能恢复正常几小时。初步检查网线、交换机均无异常,且上位机日志显示连接状态在正常和异常间波动。
第一步,使用三菱GX Works3的诊断功能。在“以太网诊断”页面,查看“错误日志”发现记录有“IP地址重复”警告。进一步检查网络拓扑,原来现场新增了一台HMI,其IP地址被手动设置为与FX5U相同的192.168.0.10,导致ARP表混乱。解决方法:使用GX Works3的“IP地址测试”功能(PING命令)确认其他设备占用情况,并将HMI改为DHCP分配。
第二步,分析TCP连接复用问题。FX5U作为Modbus TCP服务器,默认支持最多4个同时连接。案例中上位机软件每5秒建立一次新连接,但未及时关闭旧连接,导致连接数达到上限。使用Wireshark抓包分析发现,上位机TCP连接在FIN握手后进入了TIME_WAIT状态(持续60秒),积压了约12个半连接。修正方法:修改上位机软件代码,在每次读取数据后使用“close”指令主动断开socket,并将TCP keep-alive时间设置为10秒以回收僵尸连接。
第三步,优化SLMP协议参数。在FX5U的参数设置中,将“以太网配置”下的“TCP重组超时”从默认30秒缩短为5秒,以减少无响应连接占用。同时启用“自动连接恢复”功能,当检测到通信中断超过3次重试时,PLC自动复位通信模块。注意:该功能需要固件版本1.30及以上。
最终,通过IP冲突排查和TCP连接管理优化,通信稳定性提升至99.9%,未再出现无故断开。维护建议:定期使用GX Works3的“通信测试”工具监控连接状态,并在上位机程序中加入心跳包机制(如每1秒写入一个寄存器),便于快速定位断点。