I have a Epever 40 amp charge controller and using python + minimalmodbus to communicate to it on the rs485 bus. I can read
all of the over 100 registers OK. I can set the 'battery type' to 'user'. I'm trying a test to set the boost reconnect voltage.
This is what I'm doing but, I'm getting an...
I tried these. Nothing works so far
instrument.write_register(0x9009, .133, 2) # 'Slave reported device failure' exception
instrument.write_register(0x9009, 1330, 2) # 'ValueError...' (133,000 is too big?) exception
instrument.write_register(0x9009, 1330, 0)...
I ended up (for now) setting the battery parameters with the display so I agree that register 0x9009 is writable with the MT50. Can you try it with pymodbus?
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
client = ModbusClient( method='rtu', port='/dev/ttyUSB0'...
I decided to try pymodbus to see if I could get more info.
r = client.read_holding_registers(0x9009, 1, unit=1) # https://pymodbus.readthedocs.io/en/latest/source/library/pymodbus.client.html
val = r.registers[0]
assert r.registers[0] == 1320
This works
then I try to change this value:
r =...
I'm logging data from the controller's rs485 interface to see how it works. It seems to be doing the right stuff but there is one thing that doesn't make sense.
According to the documentation this is the definition of the status bits:
D15-D14: Input volt status. 00 normal, 01 no
power...