pymodbus使用时Modbus RTU正常但Modbus TCP通信失败问题求助
问题原因及修正方案
- 端口配置错误:Modbus TCP默认服务端口为502,你代码中使用的端口
22是树莓派默认的SSH服务端口,从日志返回的报文可看出,你实际连接到了树莓派的SSH服务而非Modbus TCP服务,因此无法解析Modbus协议报文。 - 连接地址配置错误:你代码中填写的连接地址为
localhost,指向运行脚本的本地设备,若你在PC端运行脚本连接局域网内的树莓派,需要替换为树莓派的实际局域网IP地址。 - 额外检查项:确认树莓派上已经正常运行Modbus TCP服务端程序,且防火墙未拦截502端口的访问请求。
修正后代码示例
from pymodbus.client.sync import ModbusTcpClient import logging logging.basicConfig() log = logging.getLogger() log.setLevel(logging.DEBUG) # modbus连接配置替换为树莓派实际IP和Modbus TCP默认端口502 client = ModbusTcpClient('替换为树莓派的局域网IP', 502) connection = client.connect() read=client.read_input_registers(address = 1008, count =16, unit=55) print(read.isError()) if not read.isError(): print(read.registers) else: print('Modbus Error:', read)
内容的提问来源于stack exchange,提问作者Banks
相关产品推荐
相关产品推荐

