Huawei SUN2000 Modbus register map
Grid-tied PV inverters (SUN2000-xKTL-L0/M0/M1/M2/M3/H series): nameplate, PV strings, grid, power, energy and alarms
- Official
- 89 registers
- Modbus TCP and RTU
- Revision 3 · 2026-11-10
- Identity: firmware, serial number
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus TCP and RTU
- Unit ID
- 1
- TCP port
- 502
- Serial
- 9600 8E1 · 9600 baud, 8 data bits, even parity, 1 stop bit defaults
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 89 holding registers
- Groups
- 7
- Revision
- 3 · 2026-11-10
- Added
- ()
- File
- maps/huawei/sun2000.mbmap.json · 15 KB · history
- SHA-256
- 5339db874fde4ff627d4c13f0520fd72de9ca8f0d064b581f2eb8ecb91f6c576
- Manufacturer
- solar.huawei.com
Device identity
What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.
| Role | Register | Address | Type | Values |
|---|---|---|---|---|
| Serial number | Serial number | holding 30015 | string[10] | |
| Firmware | Firmware version | holding 30035 | string[15] |
Sources and notes
- Solar Inverter Modbus Interface Definitions · version V3.0, Issue 01, 2023-01-17
Source: Huawei, "Solar Inverter Modbus Interface Definitions (V3.0)", Issue 01 (2023-01-17)
- Huawei SUN2000 grid-tied solar inverters (residential L0/L1/M0/M1 and commercial M2/M3/H/KTL ranges).
- Core read-only registers from the "Solar Inverter Modbus Interface Definitions (V3.0)" list.
- RTU over RS485/MBUS, or TCP (port 502) through the WLAN/FE/4G interface or a dongle. Registers are read with FC03.
- The document gives no factory serial settings or default unit id; check them on the inverter or app.
- Registers a model does not have return an exception or 0.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 30000 | string[15] | R | ||||
| HR | 30015 | string[10] | R | ||||
| HR | 30025 | string[10] | R | ||||
| HR | 30035 | string[15] | R | ||||
| HR | 30050 | string[15] | R | ||||
| HR | 30068 | uint32 ABCD | R | High word major, low word revision | |||
| HR | 30070 | uint16 | R | ||||
| HR | 30071 | uint16 | R | ||||
| HR | 30072 | uint16 | R | ||||
| HR | 30073 | uint32 ABCD | R | kW | ×0.001 | ||
| HR | 30075 | uint32 ABCD | R | kW | ×0.001 | ||
| HR | 30077 | uint32 ABCD | R | kVA | ×0.001 | ||
| HR | 32016 | int16 | R | V | ×0.1 | ||
| HR | 32017 | int16 | R | A | ×0.01 | ||
| HR | 32018 | int16 | R | V | ×0.1 | ||
| HR | 32019 | int16 | R | A | ×0.01 | ||
| HR | 32020 | int16 | R | V | ×0.1 | ||
| HR | 32021 | int16 | R | A | ×0.01 | ||
| HR | 32022 | int16 | R | V | ×0.1 | ||
| HR | 32023 | int16 | R | A | ×0.01 | ||
| HR | 32024 | int16 | R | V | ×0.1 | ||
| HR | 32025 | int16 | R | A | ×0.01 | ||
| HR | 32026 | int16 | R | V | ×0.1 | ||
| HR | 32027 | int16 | R | A | ×0.01 | ||
| HR | 32028 | int16 | R | V | ×0.1 | ||
| HR | 32029 | int16 | R | A | ×0.01 | ||
| HR | 32030 | int16 | R | V | ×0.1 | ||
| HR | 32031 | int16 | R | A | ×0.01 | ||
| HR | 32032 | int16 | R | V | ×0.1 | ||
| HR | 32033 | int16 | R | A | ×0.01 | ||
| HR | 32034 | int16 | R | V | ×0.1 | ||
| HR | 32035 | int16 | R | A | ×0.01 | ||
| HR | 32036 | int16 | R | V | ×0.1 | ||
| HR | 32037 | int16 | R | A | ×0.01 | ||
| HR | 32038 | int16 | R | V | ×0.1 | ||
| HR | 32039 | int16 | R | A | ×0.01 | ||
| HR | 32040 | int16 | R | V | ×0.1 | ||
| HR | 32041 | int16 | R | A | ×0.01 | ||
| HR | 32042 | int16 | R | V | ×0.1 | ||
| HR | 32043 | int16 | R | A | ×0.01 | ||
| HR | 32044 | int16 | R | V | ×0.1 | ||
| HR | 32045 | int16 | R | A | ×0.01 | ||
| HR | 32046 | int16 | R | V | ×0.1 | ||
| HR | 32047 | int16 | R | A | ×0.01 | ||
| HR | 32048 | int16 | R | V | ×0.1 | ||
| HR | 32049 | int16 | R | A | ×0.01 | ||
| HR | 32050 | int16 | R | V | ×0.1 | ||
| HR | 32051 | int16 | R | A | ×0.01 | ||
| HR | 32052 | int16 | R | V | ×0.1 | ||
| HR | 32053 | int16 | R | A | ×0.01 | ||
| HR | 32054 | int16 | R | V | ×0.1 | ||
| HR | 32055 | int16 | R | A | ×0.01 | ||
| HR | 32064 | int32 ABCD | R | kW | ×0.001 | Sum of all PV strings | |
| HR | 32066 | uint16 | R | V | ×0.1 | Grid voltage on single-phase models | |
| HR | 32067 | uint16 | R | V | ×0.1 | Three-phase only | |
| HR | 32068 | uint16 | R | V | ×0.1 | Three-phase only | |
| HR | 32069 | uint16 | R | V | ×0.1 | Not valid in L/N output mode | |
| HR | 32070 | uint16 | R | V | ×0.1 | ||
| HR | 32071 | uint16 | R | V | ×0.1 | Three-phase only | |
| HR | 32072 | int32 ABCD | R | A | ×0.001 | Grid current on single-phase models | |
| HR | 32074 | int32 ABCD | R | A | ×0.001 | Three-phase only | |
| HR | 32076 | int32 ABCD | R | A | ×0.001 | Three-phase only | |
| HR | 32078 | int32 ABCD | R | kW | ×0.001 | ||
| HR | 32080 | int32 ABCD | R | kW | ×0.001 | AC output | |
| HR | 32082 | int32 ABCD | R | kvar | ×0.001 | ||
| HR | 32084 | int16 | R | ×0.001 | |||
| HR | 32085 | uint16 | R | Hz | ×0.01 | ||
| HR | 32086 | uint16 | R | % | ×0.01 | ||
| HR | 32087 | int16 | R | °C | ×0.1 | ||
| HR | 32088 | uint16 | R | MΩ | ×0.001 | ||
| HR | 32089 | uint16 | R | Status code; see Huawei key signal description | |||
| HR | 32090 | uint16 | R | Highest-priority active alarm | |||
| HR | 32091 | uint32 ABCD | R | s | Epoch seconds | ||
| HR | 32093 | uint32 ABCD | R | s | Epoch seconds | ||
| HR | 32095 | int32 ABCD | R | kW | ×0.001 | Unfiltered value for storage control | |
| HR | 32106 | uint32 ABCD | R | kWh | ×0.01 | ||
| HR | 32108 | uint32 ABCD | R | kWh | ×0.01 | ||
| HR | 32112 | uint32 ABCD | R | kWh | ×0.01 | ||
| HR | 32114 | uint32 ABCD | R | kWh | ×0.01 | ||
| HR | 32116 | uint32 ABCD | R | kWh | ×0.01 | ||
| HR | 32118 | uint32 ABCD | R | kWh | ×0.01 | ||
| HR | 32151 | uint16 | R | ||||
| HR | 32152 | uint16 | R | ||||
| HR | 32153 | uint16 | R | ||||
| HR | 32154 | uint16 | R | ||||
| HR | 32158 | uint32 ABCD | R | kWh | ×0.01 | ||
| HR | 32162 | uint32 ABCD | R | kWh | ×0.01 | ||
| HR | 32166 | uint32 ABCD | R | kWh | ×0.01 | ||
| HR | 32170 | uint32 ABCD | R | kWh | ×0.01 |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).