用于Python正确引用的MODBUS

2024-09-30 08:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pymodbus试图访问晨星太阳能控制器上的数据。我有控制器here的MODBUS文档,它列出了值在注册表中的位置。我实际上只是在前15ish地址的读保持寄存器(0x03)中寻找一些值。我目前正在使用下面的代码来访问数据,它正在将数据读回给我,但这完全是胡说八道的数字。如果有人有什么建议,我会非常感激

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
 
client = ModbusClient(method = 'rtu', port = 'COM1', baudrate = 9600)
client.connect()
 
result = client.read_input_registers(0x003,6,unit=1)
solarVoltage = float(result.registers[0] )
chargingCurrent = float(result.registers[1] )
batteryVoltage = float(result.registers[2] )
batteryTemperature = float(result.registers[3] )
 
# Do something with the data
print(solarVoltage)
print(chargingCurrent)
print(batteryVoltage)
print(batteryTemperature)
 
client.close()

编辑:这是我从读取所有6个寄存器中得到的结果数据。 [0, 17058, 18943, 17662, 18634, 18938, 26098, 8374, 42046, 32768]

编辑2:我正在尝试读取逻辑地址5到30。所以我明白你从获取逻辑地址49的意思,但即使将读取寄存器更改为0x0004仍然读取17056。我不确定这是否是float16或读取错误地址的问题


Tags: 数据client地址控制器resultfloat寄存器pymodbus

热门问题