Register access to Multiplus via Venus GX and Modbus TCP

I am currently commissioning my installation consisting of a Multiplus 48/800/9 and a Venus GX connected via VE.Bus; I am trying to control the charging and discharging of a battery in ESS mode 3 using a Raspberry PI with Python in Modbus; but I cannot find the list of accessible registers (I launch my requests with the service unit-id 242 which corresponds to the multiplus);

I managed to identify two simple registers: battery voltage and battery charge current, because I ran a scan of the readable registers in two states:

-1/ Battery only connected (and I then see 42.2V and 0A charging in the console)

-2/ Battery + AC-IN connected (and I then see approximately 42.2V and 6A charging in the console):

I identify hence:
Register 840: 422 // DC voltage of 42.2V
Register 841: 61 // Charging current of 6.1A

To continue and control the charge, I’m stuck at this point.

I’m looking for the following registers: Grid Power Setpoint, Charge Authorization, Feed-in Authorization.

I’m also interested if you can advice me other way from Modbus-TCP, to control the charge or discharge of the battery using python SW.
Thank you,

Go to the linked page below, scroll down a bit to find a spreadsheet called “Modbus TCP register list”, download that.

moved to modifications section where these questions belong. thanks.

Sorrry but in the fil “CGXModbus-TCP-register-list.xlsx” i don’t find the same registers as i have scanned with python and my gx venus device.
Here the registers i would like to write:
(Registers 36-37-38):

|ESS power setpoint phase 1|37|int16|1|-32768 to 32767|/Hub4/L1/AcPowerSetpoint|yes|W|

|ESS disable charge flag phase|38|uint16|1|0 to 65536|/Hub4/DisableCharge|yes|0=Charge allowed;1=Charge disabled|

|ESS disable feedback flag phase|39|uint16|1|0 to 65536|/Hub4/DisableFeedIn|yes|0=Feed in allowed;1=Feed in disabled|

attached are the results of my registers scanned:

Scan_registres_charge6A.txt (1,0 Ko)
Scan_registres_off.txt (1,2 Ko)

bellow ici the script i used on my steup:
perhaps i make something wrong in my way of scanning ?

from pymodbus.client import ModbusTcpClient
import time

scan_regsitre_modbus.py

testé avec unit-id de diff valeurs

VENUS_IP = “venus.local” # ou IP fixe
PORT = 502
UNIT_ID = 0 # par défaut
UNIT_ID = 242 # par défaut

Plage à scanner (ex: 0 à 3000)

START_REG = 0
END_REG = 9000

client = ModbusTcpClient(VENUS_IP, port=PORT)
client.connect()

print(f":magnifying_glass_tilted_left: Scan des registres Modbus TCP sur {VENUS_IP} unit-id {UNIT_ID}…")

for reg in range(START_REG, END_REG):
try:
result = client.read_input_registers(reg, 1, unit=UNIT_ID)
if not result.isError():
print(f":white_check_mark: Registre {reg} : {result.registers[0]}“)
else:
pass # Ignore erreur
except Exception as e:
print(f"Erreur sur registre {reg}: {e}”)
time.sleep(0.01) # Éviter surcharge

client.close()
print(“:white_check_mark: Scan terminé.”)

Hi,
what do you mean by mdification section ?