Windows Server用pymcprotocol连接三菱FX5U PLC超时问题求助
排查三菱FX5U PLC连接TimeoutError的步骤
验证端口连通性:ping仅能确认网络可达,无法证明目标端口开放。在Windows Server上执行以下命令测试1200端口:
Test-NetConnection 192.168.250.6 -Port 1200若结果显示
TcpTestSucceeded: False,说明端口不通,需重点排查PLC端口设置或中间网络拦截。检查Windows Server高级安全防火墙:即使关闭Windows Defender,系统自带的高级安全防火墙仍可能存在拦截规则:
- 打开「Windows Defender防火墙高级设置」
- 查看「出站规则」,确认是否存在阻止TCP 1200端口的规则
- 可临时禁用整个防火墙测试,或手动添加允许TCP 1200端口出站的规则
确认PLC连接数限制:三菱FX5U以太网模块有最大连接数限制(通常为8个),若其他电脑已占满连接,服务器将无法接入:
- 用GX Works3连接PLC,进入「以太网设置」界面
- 查看「当前连接状态」,断开闲置连接后重试
调整pymcprotocol超时参数:Windows Server网络栈响应可能慢于普通PC,尝试延长连接超时时间:
import pymcprotocol plc1 = pymcprotocol.Type3E() plc1.connect("192.168.250.6", 1200, timeout=10) # 设置10秒超时排查服务器网络细节:
- 临时禁用IPv6:部分场景下IPv6会干扰IPv4通信,在网卡属性中取消勾选「Internet协议版本6 (TCP/IPv6)」后重试
- 检查代理/VPN状态:这类工具可能拦截PLC连接请求,关闭后测试
核对PLC以太网配置:
- 确认PLC的MC协议端口确实为1200(默认值,但可能被修改)
- 检查PLC的IP过滤设置,确认允许服务器IP(192.168.250.90)发起连接
- 确认PLC以太网模块通信模式设置为「MC协议」
抓包定位问题:用Wireshark在服务器上抓包,过滤规则设为
ip.addr == 192.168.250.6 and tcp.port == 1200:- 无SYN包发出:问题在服务器端,排查代码或本地网络配置
- 有SYN包但无SYN-ACK回应:PLC未收到请求,排查交换机或PLC端口设置
- 有SYN-ACK但服务器未处理:问题在服务器网络栈或防火墙
内容的提问来源于stack exchange,提问作者Swapnil
相关产品推荐
相关产品推荐

