SRNE ASP48120SH3 Modbus Register Map (validated)

Validated Modbus register map for the SRNE ASP48120SH3 three-phase hybrid inverter, confirmed against the live unit on 2026-07-21.

Bus: RS485, 9600 8N1, function code 03 (read holding registers), slave address 1. Source of truth: src/inverter/registers.py in nfe-modbus-energy-logger (declarative, grouped by OpenEMS nature). This page is the human-readable copy.

Live telemetry registers

Address Field OpenEMS nature / channel Scale Signed Unit
0x0210 state_code System / STATE enum no code
0x0212 bus_v System / DC_BUS_VOLTAGE 0.1 no V
0x0228 pbus_v System / DC_BUS_P_VOLTAGE 0.1 no V
0x0229 nbus_v System / DC_BUS_N_VOLTAGE 0.1 no V
0x0213 grid_v_l1 ElectricityMeter(grid) / VOLTAGE_L1 0.1 no V
0x022A grid_v_l2 ElectricityMeter(grid) / VOLTAGE_L2 0.1 no V
0x022B grid_v_l3 ElectricityMeter(grid) / VOLTAGE_L3 0.1 no V
0x0214 grid_i_l1 ElectricityMeter(grid) / CURRENT_L1 0.1 no A
0x0215 grid_freq ElectricityMeter(grid) / FREQUENCY 0.01 no Hz
0x0216 backup_v_l1 ElectricityMeter(backup) / VOLTAGE_L1 0.1 no V
0x022C backup_v_l2 ElectricityMeter(backup) / VOLTAGE_L2 0.1 no V
0x022D backup_v_l3 ElectricityMeter(backup) / VOLTAGE_L3 0.1 no V
0x0217 backup_i_l1 ElectricityMeter(backup) / CURRENT_L1 0.1 no A
0x022E backup_i_l2 ElectricityMeter(backup) / CURRENT_L2 0.1 no A
0x022F backup_i_l3 ElectricityMeter(backup) / CURRENT_L3 0.1 no A
0x0218 backup_freq ElectricityMeter(backup) / FREQUENCY 0.01 no Hz
0x0219 load_i_l1 Load / CURRENT_L1 0.1 no A
0x021B load_active_w Load / ACTIVE_POWER 1 no W
0x021C load_apparent_va Load / APPARENT_POWER 1 no VA
0x021F load_ratio_pct Load / LOAD_RATIO 1 no %
0x0100 battery_soc SymmetricEss / SOC 1 no %
0x0101 battery_v SymmetricEss / VOLTAGE 0.1 no V
0x0102 battery_i SymmetricEss / CURRENT 0.1 yes A
0x0220 temp_heatsink_a Temp / TEMPERATURE_A 0.1 yes C
0x0221 temp_heatsink_b Temp / TEMPERATURE_B 0.1 yes C
0x0222 temp_heatsink_c Temp / TEMPERATURE_C 0.1 yes C

Derived values

Registers deliberately NOT used (validated wrong on this model)

Address Reason
0x021A load PF Reads 0 (unpopulated). Derive PF from active/apparent instead.
0x0103 device temp Reads 0. Use the heat-sink temps 0x0220 to 0x0222.
0x0223 heatsink D Reads 120.0 (bogus/unused).
0x0107 to 0x0111 PV This backup unit has no PV, reads 0.

Machine state (0x0210)

Only code 2 is verified. The generic SRNE V1.7 state table does NOT match this model (generic says 2 is "initialization"; the live unit at 2 is fully running). Verify the rest by observing transitions.

Writes

Config/control registers reject FC06 ("Illegal function"). Use FC16 (write multiple registers), e.g. pymodbus write_registers. Control area starts at 0xDF00 (power on/off) plus the setting parameters.


Revision #2
Created 2026-07-20 20:35:49 UTC by hillary.arinda
Updated 2026-07-20 20:36:09 UTC by hillary.arinda