Python读取Modbus寄存器遇GatewayNoResponse错误求助
Modbus TCP读取报错:Exception Response(131, 3, GatewayNoResponse) 求解
我正在开发Python脚本读取电气柜中带Modbus功能的中央测量单元数据,运行时遇到错误:
Error reading registers: Exception Response(131, 3, GatewayNoResponse)
脚本目的是读取Modbus TCP设备的保持寄存器并打印32位无符号整数值,但目前无法获取数据。以下是使用的代码片段:
from pymodbus.constants import Endian from pymodbus.payload import BinaryPayloadDecoder from pymodbus.client.sync import ModbusTcpClient def read_modbus_registers(host, port, unit_id, starting_address, register_count): # Create a Modbus TCP client client = ModbusTcpClient(host, port) try: # Connect to the Modbus TCP server client.connect() # Read holding registers result = client.read_holding_registers(starting_address, register_count, unit=unit_id) if result.isError(): print("Error reading registers:", result) else: decoder = BinaryPayloadDecoder.fromRegisters(result.registers, byteorder=Endian.Big) uint32_values = [decoder.decode_32bit_uint() for _ in range(register_count // 2)] print("32-bit uint values read from Modbus registers:", uint32_values) except Exception as e: print("Error:", e) finally: # Close the Modbus TCP connection client.close() # Modbus settings modbus_host = '192.168.50.6' modbus_port = 502 modbus_unit_id = 0x01 modbus_starting_address = 0 modbus_register_count = 161 # Call the function to read Modbus registers read_modbus_registers(modbus_host, modbus_port, modbus_unit_id, modbus_starting_address, modbus_register_count)
我已尝试的操作:
- 运行脚本连接目标Modbus TCP服务器
- 尝试读取起始地址0的161个保持寄存器
预期结果是成功读取并打印32位无符号整数值,但实际出现上述错误,未获取到数据。希望有人帮忙分析错误原因并给出解决指导,让我能成功获取并显示寄存器值。
内容的提问来源于stack exchange,提问作者moiscs
相关产品推荐
相关产品推荐

