Growatt TL3-X / MAX / MIX / SPH inverters Modbus register map
Grid-tied and storage inverters that use the first register group (0-124) of the Growatt protocol
- Official
- 107 registers
- Modbus RTU
- Revision 2 · 2026-10-18
- 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 RTU
- Unit ID
- 1
- Serial
- 9600 8N1 · 9600 baud, 8 data bits, none parity, 1 stop bit
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
- Max read
- 125 registers per request
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 30 holding registers, 77 input registers
- Groups
- 9
- Revision
- 2 · 2026-10-18
- Added
- ()
- File
- maps/growatt/tl3-x-max-mix-sph.mbmap.json · 16 KB · history
- SHA-256
- 7c5d7728b03ed047b5cb00117296f9fafa84ba3aa2dd741a69c1a70cc7f5d4a2
- Manufacturer
- growatt.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 |
|---|---|---|---|---|
| Firmware | Firmware version | holding 9 | string[3] | |
| Serial number | Serial number | holding 23 | string[5] |
Sources and notes
- Growatt Inverter Modbus RTU Protocol · version V1.24 holding registers 0-88 and input registers 0-119 (first group)
Source: Growatt Inverter Modbus RTU Protocol V1.24
- This map covers the first register group (0-124), used by TL3-X (MAX, MID, MAC), MAX 1500V, MIX and SPH inverters.
- TL-X / TL-XH (MIN) and MOD TL3-XH inverters use the 3000-3374 range instead and are not covered by this map.
- 32-bit values are sent high word first (H, then L).
- Default serial settings: 9600 baud, 8N1; the address range is 1-254.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 0 | uint16 | R | ||||
| IR | 1 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 3 | uint16 | R | V | ×0.1 | ||
| IR | 4 | uint16 | R | A | ×0.1 | ||
| IR | 5 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 7 | uint16 | R | V | ×0.1 | ||
| IR | 8 | uint16 | R | A | ×0.1 | ||
| IR | 9 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 11 | uint16 | R | V | ×0.1 | ||
| IR | 12 | uint16 | R | A | ×0.1 | ||
| IR | 13 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 15 | uint16 | R | V | ×0.1 | ||
| IR | 16 | uint16 | R | A | ×0.1 | ||
| IR | 17 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 19 | uint16 | R | V | ×0.1 | ||
| IR | 20 | uint16 | R | A | ×0.1 | ||
| IR | 21 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 23 | uint16 | R | V | ×0.1 | ||
| IR | 24 | uint16 | R | A | ×0.1 | ||
| IR | 25 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 27 | uint16 | R | V | ×0.1 | ||
| IR | 28 | uint16 | R | A | ×0.1 | ||
| IR | 29 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 31 | uint16 | R | V | ×0.1 | ||
| IR | 32 | uint16 | R | A | ×0.1 | ||
| IR | 33 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 35 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 37 | uint16 | R | Hz | ×0.01 | ||
| IR | 38 | uint16 | R | V | ×0.1 | Phase voltage (phase 1 also on single-phase models) | |
| IR | 39 | uint16 | R | A | ×0.1 | ||
| IR | 40 | uint32 ABCD | R | VA | ×0.1 | ||
| IR | 42 | uint16 | R | V | ×0.1 | Phase voltage (phase 1 also on single-phase models) | |
| IR | 43 | uint16 | R | A | ×0.1 | ||
| IR | 44 | uint32 ABCD | R | VA | ×0.1 | ||
| IR | 46 | uint16 | R | V | ×0.1 | Phase voltage (phase 1 also on single-phase models) | |
| IR | 47 | uint16 | R | A | ×0.1 | ||
| IR | 48 | uint32 ABCD | R | VA | ×0.1 | ||
| IR | 50 | uint16 | R | V | ×0.1 | ||
| IR | 51 | uint16 | R | V | ×0.1 | ||
| IR | 52 | uint16 | R | V | ×0.1 | ||
| IR | 53 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 55 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 57 | uint32 ABCD | R | s | ×0.5 | ||
| IR | 59 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 61 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 63 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 65 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 67 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 69 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 71 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 73 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 75 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 77 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 79 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 81 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 83 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 85 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 87 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 89 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 91 | uint32 ABCD | R | kWh | ×0.1 | ||
| IR | 93 | uint16 | R | °C | ×0.1 | ||
| IR | 94 | uint16 | R | °C | ×0.1 | ||
| IR | 95 | uint16 | R | °C | ×0.1 | ||
| IR | 97 | uint16 | R | V | ×0.1 | ||
| IR | 98 | uint16 | R | V | ×0.1 | ||
| IR | 99 | uint16 | R | V | ×0.1 | ||
| IR | 100 | uint16 | R | 0-20000: raw value of the PF command (see holding 5) | |||
| IR | 101 | uint16 | R | % | |||
| IR | 102 | uint32 ABCD | R | W | ×0.1 | ||
| IR | 104 | uint16 | R | ||||
| IR | 105 | uint16 | R | ||||
| IR | 107 | uint16 | R | ||||
| IR | 110 | uint16 | R | ||||
| IR | 111 | uint16 | R | ||||
| IR | 112 | uint16 | R | ||||
| IR | 118 | uint16 | R | Storage models (MIX/SPA/SPH) only | |||
| IR | 119 | uint16 | R | Storage models (MIX/SPA/SPH) only | |||
| HR | 0 | uint16 | RW | ||||
| HR | 2 | uint16 | RW | Whether registers 3, 4, 5 and 99 keep their value after a restart | |||
| HR | 3 | uint16 | RW | % | 0-100, or 255 for no limit | ||
| HR | 4 | int16 | RW | % | -100 to 100, or 255 for no limit | ||
| HR | 5 | uint16 | RW | PF x 10000; 0-10000 under-excited, above over-excited | |||
| HR | 6 | uint32 ABCD | R | VA | ×0.1 | ||
| HR | 8 | uint16 | R | V | ×0.1 | ||
| HR | 9 | string[3] | R | ||||
| HR | 12 | string[3] | R | ||||
| HR | 15 | uint16 | RW | ||||
| HR | 17 | uint16 | RW | V | ×0.1 | ||
| HR | 18 | uint16 | RW | s | |||
| HR | 19 | uint16 | RW | s | |||
| HR | 20 | uint16 | RW | % | ×0.1 | ||
| HR | 21 | uint16 | RW | % | ×0.1 | ||
| HR | 22 | uint16 | RW | ||||
| HR | 23 | string[5] | R | ||||
| HR | 28 | uint32 ABCD | R | ||||
| HR | 30 | uint16 | RW | ||||
| HR | 34 | string[8] | R | ||||
| HR | 43 | uint16 | R | ||||
| HR | 44 | uint16 | R | High byte: number of MPPT trackers; low byte: output phases (0x0203 = 2 MPPT, 3 phases) | |||
| HR | 45 | uint16 | RW |
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).