Python连接三菱QJ71E71 PLC超时,请求排查连接代码问题
排查三菱QJ71E71 PLC连接超时问题的建议
代码层面的潜在问题与调整
- 校验
setaccessopt参数匹配度:
你设置的network=1和pc=18必须与GX Works2开放设置中的**网络编号(Network No.)和站号(Station No.)**完全一致,参数不匹配会直接导致通信握手失败。 - 优化连接逻辑与超时设置:
当前代码的while循环无实际作用,且quit()会直接终止程序,建议调整为更清晰的结构,同时给connect方法添加超时参数避免无限等待:import pymcprotocol pymc3e = pymcprotocol.Type3E() # Q系列PLC适配 # 先确认GX配置中的network和pc参数是否正确 pymc3e.setaccessopt(commtype="binary", network=1, pc=18) try: # 添加5秒超时限制,避免长时间阻塞 pymc3e.connect("192.100.13.34", 5002, timeout=5) print("连接成功") # 后续读写操作... pymc3e.close() except Exception as e: print(f"连接失败 -> {e}") - 确认通信协议类型一致性:
QJ71E71支持二进制和ASCII两种TCP通信协议,你设置的commtype="binary"必须与GX Works2开放配置中的协议类型完全匹配,若GX中启用的是ASCII协议,需将此处改为"ascii"。
非代码层面的排查点
- 核对GX Works2开放设置细节:
- 确认TCP/IP开放功能已启用,且端口号为5002(与代码配置一致);
- 检查IP地址过滤规则,确保运行代码的设备IP(192.100.13.5)在允许访问的列表内;
- 确认PLC处于RUN模式,部分三菱PLC在STOP模式下会拒绝外部通信请求。
- 网络端口与源端口验证:
先用telnet 192.100.13.34 5002或nc -zv 192.100.13.34 5002测试端口可达性,排除防火墙或端口映射问题。另外,三菱PLC部分型号要求源端口在1024-5000范围内,若Wireshark捕获的33213不在此区间,可手动绑定合规源端口:import socket import pymcprotocol pymc3e = pymcprotocol.Type3E() pymc3e.setaccessopt(commtype="binary", network=1, pc=18) # 绑定1024-5000之间的源端口 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(("192.100.13.5", 3000)) pymc3e.sock = sock try: pymc3e.connect("192.100.13.34", 5002, timeout=5) print("连接成功") pymc3e.close() except Exception as e: print(f"连接失败 -> {e}")
内容的提问来源于stack exchange,提问作者SecY
相关产品推荐
相关产品推荐

