我使用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
或读取错误地址的问题
目前没有回答
相关问题 更多 >
编程相关推荐