Writing frequency of register 37 in ESS mode 3 not according to specs

Hi, I have an MultiPlus-II 48/3000/35-32 and set it up for ESS mode 3 (full external control loop). Firmware: 502 (latest)

I am able to drive charge/discharge using a python script running on my home automation RPi and communicating via ModbusTcp.

The manual (ESS mode 2 and 3 [Victron Energy] → p3.2a) states, I have to write register 37 at least once in every 60 seconds.

From my experience, I have to write this register at least once every 14-15s to get it working without fluctuations in the in/output.

Tried to work with (volatile) register 2700/2716 but that does not seem to work as expected as this register is ment for mode 2.

  1. Is there a volatile version of register 37 (just like 2716 for 2700) to avoid wearing out the flash?
  2. Can I somewhere decrease the write frequency needed to update register 37?

Thanks!

Hi,
What UID are you using for #37 writes?
I can’t get that to work at all.
Also, what version for Venus firmware are you on?
Thanks.

UID 228,

You may find yours in console->settings->services->modbus tcp->available services

firmware 3.54

Relevant snippet from my code:

register = 37
unit_id = 228

def Sendline():
print('Setting AC GRID SetPoint to [W]: ', setpoint_value)
C = ModbusClient(host=‘192.168.3.2’, port=502)
try:
builder = BinaryPayloadBuilder(byteorder=Endian.BIG, wordorder=Endian.BIG)
builder.reset()
builder.add_16bit_int(2 * int(setpoint_value))
payload = builder.to_registers()
C.write_register(register, payload[0], unit_id)
time.sleep(11.5)
msg = C.read_holding_registers(register, 1, unit_id)
decoder = BinaryPayloadDecoder.fromRegisters(msg.registers, byteorder=Endian.BIG)
msg = decoder.decode_16bit_int()
print('Actual AC GRID Setpoint is [W]: ', msg)
C.close()
except:
print (‘Fatal error, cannot communicate with GX device’)

Thanks, but no UID 228 on my system…
Just asking what is the service name that your GX gives for this id?

afbeelding

My VE bus ID is 227.