Ingeteam · Solar inverter
INGECON SUN (1Play / 3Play, storage versions) Modbus register map
Default configuration
- Protocol
- Modbus TCP
- Port
- 502
- Unit ID
- 1
- Addressing
- 0-based
- Byte order
- Big endian
- Word order
- High word first
Register map
| Address | Count | Name | Type | Unit | Scale | Access |
|---|---|---|---|---|---|---|
| 15 | 1 | Inverter status 0 stopped, 1 starting, 2 off-grid, 3 on-grid, 4 on-grid (standby battery), 5 waiting to connect to grid, 6 critical loads bypassed to grid, 7 emergency charge from PV, 8 emergency charge from grid, 9 inverter locked waiting for reset, 10 error mode. | UInt16 | - | 1 | R |
| 16 | 1 | Waiting time to connect to grid | UInt16 | s | 1 | R |
| 17 | 1 | Battery voltage | UInt16 | V | 0.1 | R |
| 18 | 1 | Battery current | Int16 | A | 0.01 | R |
| 19 | 1 | Battery power Signed: positive is discharging, negative is charging (the source splits it into discharge = max(0, value) and charge = max(0, -value)). | Int16 | W | 1 | R |
| 20 | 1 | Battery state of charge | UInt16 | % | 1 | R |
| 21 | 1 | Battery state of health | UInt16 | % | 1 | R |
| 22 | 1 | Battery charging voltage | UInt16 | V | 0.1 | R |
| 23 | 1 | Battery discharging voltage | UInt16 | V | 0.1 | R |
| 24 | 1 | Battery maximum charging current | UInt16 | A | 0.01 | R |
| 25 | 1 | Battery maximum discharging current | UInt16 | A | 0.01 | R |
| 26 | 1 | Battery status 0 standby, 1 discharging, 2 constant current charging, 3 constant voltage charging, 4 floating, 5 equalizing, 6 error communicating with BMS, 7 not configured, 8 capacity calibration step 1, 9 capacity calibration step 2, 10 standby manual. | UInt16 | - | 1 | R |
| 27 | 1 | Battery temperature | Int16 | °C | 0.1 | R |
| 28 | 1 | Battery BMS alarm code 0 high current charge, 1 high voltage, 2 low voltage, 3 high temperature, 4 low temperature, 5 BMS internal, 6 cell imbalance, 7 high current discharge, 8 system BMS error. | UInt16 | - | 1 | R |
| 29 | 1 | Battery discharge limitation reason 0 no limitation, 1 heat sink temperature, 2 PT100 temperature, 3 low bus voltage protection, 4 battery settings, 5 BMS communication, 6 SOC max configured, 7 SOC min configured, 8 maximum battery power, 9 Modbus command, 10 digital input 2, 11 digital input 3, 12 PV charging scheduling, 13 EMS strategy. | UInt16 | - | 1 | R |
| 30 | 1 | Battery voltage, internal sensor | UInt16 | V | 0.1 | R |
| 31 | 1 | PV1 voltage | UInt16 | V | 1 | R |
| 32 | 1 | PV1 current | UInt16 | A | 0.01 | R |
| 33 | 1 | PV1 power | UInt16 | W | 1 | R |
| 34 | 1 | PV2 voltage | UInt16 | V | 1 | R |
| 35 | 1 | PV2 current | UInt16 | A | 0.01 | R |
| 36 | 1 | PV2 power | UInt16 | W | 1 | R |
| 37 | 1 | Inverter active power | Int16 | W | 1 | R |
| 38 | 1 | Inverter reactive power The source's unit column says W for this row while the meter blocks below use Var; the register is the inverter's reactive power. | Int16 | var | 1 | R |
| 39 | 1 | Inverter power factor | Int16 | - | 0.001 | R |
| 40 | 1 | Active power reduction ratio | UInt16 | % | 0.1 | R |
| 41 | 1 | Active power reduction reason 0 no limitation, 1 communication, 2 PCB temperature, 3 heat sink temperature, 4 Pac vs Fac algorithm, 5 soft start, 6 charge power configured, 7 PV surplus injected to the loads, 8 Pac vs Vac algorithm, 9 battery power limited, 10 AC grid power limited, 11 self-consumption mode, 12 high bus voltage protection, 13 LVRT or HVRT process, 14 nominal AC current, 15 grid consumption protection, 16 PV surplus injected to the grid. | UInt16 | - | 1 | R |
| 43 | 1 | Critical loads voltage | UInt16 | V | 1 | R |
| 44 | 1 | Critical loads current | UInt16 | A | 0.01 | R |
| 45 | 1 | Critical loads frequency | UInt16 | Hz | 0.01 | R |
| 46 | 1 | Critical loads active power | Int16 | W | 1 | R |
| 47 | 1 | Critical loads reactive power | Int16 | var | 1 | R |
| 48 | 1 | Internal meter voltage | UInt16 | V | 1 | R |
| 49 | 1 | Internal meter current | UInt16 | A | 0.01 | R |
| 50 | 1 | Internal meter frequency | UInt16 | Hz | 0.01 | R |
| 51 | 1 | Internal meter active power | Int16 | W | 1 | R |
| 52 | 1 | Internal meter reactive power | Int16 | var | 1 | R |
| 53 | 1 | Internal meter power factor | Int16 | - | 0.001 | R |
| 54 | 1 | DC bus voltage | UInt16 | V | 1 | R |
| 55 | 1 | Temperature, module 1 | Int16 | °C | 0.1 | R |
| 56 | 1 | Temperature, module 2 | Int16 | °C | 0.1 | R |
| 57 | 1 | Temperature, PCB | Int16 | °C | 0.1 | R |
| 61 | 1 | RMS differential current | UInt16 | mA | 0.1 | R |
| 62 | 1 | Digital output 1 status 0 off, 1 on. | UInt16 | - | 1 | R |
| 63 | 1 | Digital output 2 status 0 off, 1 on. | UInt16 | - | 1 | R |
| 64 | 1 | Digital input DRM0 status 0 off, 1 on. | UInt16 | - | 1 | R |
| 65 | 1 | Digital input 2 status 0 off, 1 on. | UInt16 | - | 1 | R |
| 66 | 1 | Digital input 3 status 0 off, 1 on. | UInt16 | - | 1 | R |
| 69 | 1 | External meter voltage | UInt16 | V | 1 | R |
| 70 | 1 | External meter frequency | UInt16 | Hz | 0.1 | R |
| 71 | 1 | External meter active power Signed: the source splits it into import = max(0, value) and export = max(0, -value). | Int16 | W | 1 | R |
| 72 | 1 | External meter reactive power | Int16 | var | 1 | R |
| 78 | 1 | Total loads power | UInt16 | W | 1 | R |
| 79 | 1 | External PV power | UInt16 | W | 1 | R |
| 80 | 1 | EV charger power | Int16 | W | 1 | R |
Read this device live with Modbus Connect, free for Windows, macOS and Linux
Related guides
Notes
INGECON SUN inverters (1Play / 3Play string and storage versions) serve this map over Modbus TCP on port 502, unit ID 1. Source: the community Home Assistant integration https://github.com/vortizhe/home-assistant-ingeteam-modbus - its hub reads 81 input registers starting at wire address 0 (custom_components/ingeteam_modbus/__init__.py) and const.py carries the units and the status enums used here - plus a cross-check against a second community template, https://github.com/solideus/Ingeteam-ingecon-homeassistant-modbus/blob/main/modbus.yaml, which reads the same offsets for external-meter active power (71), battery power (19), inverter active power (37), PV1 (33) and PV2 (36). Both are secondary sources; no Ingeteam register document was retrieved, so treat the scales as the integrations' decoding rather than a vendor statement. Address convention: the integrations comment their registers with Ingeteam's 30001-based numbers, so documented 30001+n is wire address n; this file lists the wire addresses and declares zero_based addressing. The 32-bit rows in the source (operating time 30007-8 and alarm code 30011-12, both low word first) are left out: the operating time has no documented unit and the alarm code would need the whole map switched to LowFirst word order, so no 32-bit row is included and the default HighFirst stands. The isolation resistances (59/60) are omitted because the source lists no unit for them; the reactive set-point type (42) and the reserved gaps are omitted as well.