Huawei · Solar inverter
SUN2000 (with Smart Dongle / SmartLogger, Modbus TCP) Modbus register map
Default configuration
- Protocol
- Modbus TCP
- Port
- 502
- Unit ID
- 0
- Addressing
- 0-based
- Byte order
- Big endian
- Word order
- High word first
Register map
| Address | Count | Name | Type | Unit | Scale | Access |
|---|---|---|---|---|---|---|
| 30000 | 15 | Model Inverter model string, e.g. "SUN2000-8KTL-M1". Up to 30 characters. | Ascii | - | 1 | R |
| 30015 | 10 | Serial number (SN) | Ascii | - | 1 | R |
| 30025 | 10 | Part number (PN) | Ascii | - | 1 | R |
| 30070 | 1 | Model ID Numeric model code; the mapping is in the "Supported Models" table of Huawei's interface definitions. | UInt16 | - | 1 | R |
| 30071 | 1 | Number of PV strings | UInt16 | - | 1 | R |
| 30072 | 1 | Number of MPP trackers | UInt16 | - | 1 | R |
| 30073 | 2 | Rated power (Pn) | UInt32 | kW | 0.001 | R |
| 30075 | 2 | Maximum active power (Pmax) Nominal AC output power; useful as the 100 % reference for power limiting. | UInt32 | kW | 0.001 | R |
| 32000 | 1 | State 1 Bit field: 0 = standby, 1 = grid-connected, 2 = grid-connected normally, 3 = derating by power rationing, 4 = derating for internal reasons, 5 = normal stop, 6 = stop due to fault, 7 = stop due to power rationing, 8 = shutdown, 9 = spot check. | Hex | - | 1 | R |
| 32002 | 1 | State 2 Bit field: 0 = locking status (0 locked, 1 unlocked), 1 = PV connection, 2 = DSP data collection. | Hex | - | 1 | R |
| 32003 | 2 | State 3 Bit field: 0 = off-grid (0 on-grid, 1 off-grid), 1 = off-grid switch. | UInt32 | - | 1 | R |
| 32008 | 1 | Alarm 1 Alarm bit field; see the alarm table in Huawei's interface definitions. | Hex | - | 1 | R |
| 32016 | 1 | PV1 voltage | Int16 | V | 0.1 | R |
| 32017 | 1 | PV1 current | Int16 | A | 0.01 | R |
| 32018 | 1 | PV2 voltage | Int16 | V | 0.1 | R |
| 32019 | 1 | PV2 current | Int16 | A | 0.01 | R |
| 32064 | 2 | Input power (DC) Total DC input power of all strings. | Int32 | kW | 0.001 | R |
| 32066 | 1 | Grid voltage A-B / phase A voltage Line-to-line voltage on three-phase models, phase voltage on single-phase models. | UInt16 | V | 0.1 | R |
| 32067 | 1 | Grid voltage B-C / phase B voltage | UInt16 | V | 0.1 | R |
| 32068 | 1 | Grid voltage C-A / phase C voltage | UInt16 | V | 0.1 | R |
| 32069 | 1 | Phase A voltage Invalid on single-phase models. | UInt16 | V | 0.1 | R |
| 32070 | 1 | Phase B voltage | UInt16 | V | 0.1 | R |
| 32071 | 1 | Phase C voltage | UInt16 | V | 0.1 | R |
| 32072 | 2 | Phase A current | Int32 | A | 0.001 | R |
| 32074 | 2 | Phase B current | Int32 | A | 0.001 | R |
| 32076 | 2 | Phase C current | Int32 | A | 0.001 | R |
| 32080 | 2 | Active power (AC) Total AC output power; this is the register most monitoring tools use. | Int32 | kW | 0.001 | R |
| 32082 | 2 | Reactive power | Int32 | kvar | 0.001 | R |
| 32084 | 1 | Power factor | Int16 | - | 0.001 | R |
| 32085 | 1 | Grid frequency | UInt16 | Hz | 0.01 | R |
| 32087 | 1 | Internal temperature | Int16 | °C | 0.1 | R |
| 32089 | 1 | Device status 0x0000 initialising, 0x0100 starting, 0x0200 on-grid, 0x0201 grid-connected power limited, 0x0203 off-grid running, 0x0300+ shutdown (fault, command, OVGR, communication lost, ...), 0x0401+ grid scheduling, 0x0500 spot check, 0x0A00 off-grid charging, 0xA000 standby: no irradiation. | UInt16 | - | 1 | R |
| 32090 | 1 | Fault code Current fault code; 0 = no fault. | UInt16 | - | 1 | R |
| 32106 | 2 | Accumulated energy yield | UInt32 | kWh | 0.01 | R |
| 32114 | 2 | Daily energy yield | UInt32 | kWh | 0.01 | R |
| 37100 | 1 | Meter status 0 = offline, 1 = normal, 2 = abnormal. | UInt16 | - | 1 | R |
| 37101 | 2 | Meter voltage, phase A | Int32 | V | 0.1 | R |
| 37103 | 2 | Meter voltage, phase B | Int32 | V | 0.1 | R |
| 37105 | 2 | Meter voltage, phase C | Int32 | V | 0.1 | R |
| 37107 | 2 | Meter current, phase A | Int32 | A | 0.01 | R |
| 37109 | 2 | Meter current, phase B | Int32 | A | 0.01 | R |
| 37111 | 2 | Meter current, phase C | Int32 | A | 0.01 | R |
| 37113 | 2 | Meter active power Positive = feeding into the grid, negative = drawn from the grid. | Int32 | W | 1 | R |
| 37115 | 2 | Meter reactive power | Int32 | var | 1 | R |
| 37117 | 1 | Meter power factor | Int16 | - | 0.001 | R |
| 37118 | 1 | Meter grid frequency | Int16 | Hz | 0.01 | R |
| 37119 | 2 | Meter energy, feed-in (export) Energy fed by the inverter into the grid; Huawei calls this the positive active electricity. | Int32 | kWh | 0.01 | R |
| 37121 | 2 | Meter energy, drawn (import) Energy supplied from the grid; Huawei calls this the reverse active power. | Int32 | kWh | 0.01 | R |
| 37125 | 1 | Meter type 0 = single phase, 1 = three phase. | UInt16 | - | 1 | R |
| 37758 | 2 | Battery rated capacity | UInt32 | Wh | 1 | R |
| 37760 | 1 | Battery state of charge (SOC) | UInt16 | % | 0.1 | R |
| 37762 | 1 | Battery running status 0 = offline, 1 = standby, 2 = running, 3 = fault, 4 = sleep mode. | UInt16 | - | 1 | R |
| 37763 | 1 | Battery bus voltage | UInt16 | V | 0.1 | R |
| 37764 | 1 | Battery bus current | Int16 | A | 0.1 | R |
| 37765 | 2 | Battery charge/discharge power Positive = charging, negative = discharging. | Int32 | W | 1 | R |
| 37780 | 2 | Total battery charge (lifetime) | UInt32 | kWh | 0.01 | R |
| 37782 | 2 | Total battery discharge (lifetime) | UInt32 | kWh | 0.01 | R |
| 37784 | 2 | Current-day battery charge | UInt32 | kWh | 0.01 | R |
| 37786 | 2 | Current-day battery discharge | UInt32 | kWh | 0.01 | R |
| 40000 | 2 | System time Epoch seconds, local time. | UInt32 | s | 1 | RW |
| 40120 | 1 | Fixed active power derating Setpoint for grid-scheduling active power limitation; takes effect with the matching control mode. | UInt16 | kW | 0.1 | RW |
| 40122 | 1 | Reactive power compensation (PF) Target power factor, e.g. 950 = 0.95. Range (-1, -0.8] and [0.8, 1]. | Int16 | - | 0.001 | RW |
| 40123 | 1 | Reactive power compensation (Q/S) Reactive power as a fraction of Smax, range [-1, 1]. | Int16 | - | 0.001 | RW |
| 40125 | 1 | Active power percentage derating Active power limit in % of Pmax for grid-scheduling by percentage. | UInt16 | % | 0.1 | RW |
| 40126 | 2 | Fixed active power derating (W) Active power limit as an absolute value in W. | UInt32 | W | 1 | RW |
| 47075 | 2 | Maximum charging power Upper limit for battery charging, capped by the inverter's rated charge power (37046). | UInt32 | W | 1 | RW |
| 47077 | 2 | Maximum discharging power Upper limit for battery discharging, capped by the inverter's rated discharge power (37048). | UInt32 | W | 1 | RW |
| 47081 | 1 | Charging cutoff capacity (max SOC) Default 100 %; range 90-100 %. | UInt16 | % | 0.1 | RW |
| 47082 | 1 | Discharging cutoff capacity (min SOC) Default 15 %; range 12-20 %. | UInt16 | % | 0.1 | RW |
| 47087 | 1 | Charge from grid 0 = disabled, 1 = enabled (LUNA2000 AC charging from the grid). | UInt16 | - | 1 | RW |
| 47100 | 1 | Forcible charge/discharge 0 = stop, 1 = charge, 2 = discharge. Requires a forcible charge/discharge period (47083) and mode (47246). | UInt16 | - | 1 | RW |
| 47415 | 1 | Active power control mode 0 = unlimited, 1 = DI active scheduling, 5 = zero power to grid, 6 = power-limited (kW), 7 = power-limited (%). | UInt16 | - | 1 | RW |
| 47418 | 1 | Maximum feed-in grid power Export limit in % of the plant capacity; only applied when the active power control mode is 7. | UInt16 | % | 0.1 | RW |
Combined registers
- PV1 power (calculated)Holding registers 32016 * Holding registers 32017 (W)PV1 voltage x PV1 current. Huawei publishes per-string voltage and current but no per-string power register.
- PV2 power (calculated)Holding registers 32018 * Holding registers 32019 (W)PV2 voltage x PV2 current.
Notes
Modbus TCP must be enabled on the inverter (Communication settings, installer/maintenance access) and the registers are served by the Smart Dongle (SDongleA-05, port 502) or a SmartLogger. Unit ID 0 addresses the directly connected device, which is the default in Huawei's interface definitions; some dongle firmware versions answer on unit ID 1 instead, and downstream devices behind a SmartLogger use their own address (the SmartLogger can also expose the data on port 6607). All registers are holding registers: read-only values with function code 3, settings written with 6/16. Address numbers are Huawei's register numbers used as wire addresses. "Gain" in Huawei's tables is applied here as the scale factor (gain 10 -> 0.1, gain 100 -> 0.01, gain 1000 -> 0.001). The meter block (37100-37138) is only populated when a Smart Power Sensor / DTSU666 is connected. The battery block (37758-37786) is the aggregate view of all battery units and is only present on hybrid (M1) models with LUNA2000 or LG RESU; battery unit 1 has its own registers at 37000-37025 and unit 2 at 37700-37755. Writes are range-checked by the inverter, and repeatedly written settings can be rejected while the dongle is busy, so keep the polling interval for RW registers long. Source: Huawei "Solar Inverter Modbus Interface Definitions", issue 05 (2023-02-16).