Kostal PIKO IQ / PLENTICORE Modbus register map
Also covers PLENTICORE plus, PLENTICORE G2, PLENTICORE G3, PLENTICORE MP G3
PIKO IQ / PLENTICORE hybrid and PV inverters over Modbus TCP: operating data, energy manager, power meter, battery, grid management and external battery control
- Official
- 157 registers
- Modbus TCP
- Revision 3 · 2026-10-18
- Identity: 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
- Unit ID
- 71
- TCP port
- 1502
- Byte / word order
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 157 holding registers
- Groups
- 15
- Translation tables
- 6
- Revision
- 3 · 2026-10-18
- Added
- ()
- File
- maps/kostal/piko-iq-plenticore.mbmap.json · 26 KB · history
- SHA-256
- e677a7334819be85c53ecc5176007e6f735b989e012d87e3d9215108db0169f7
- Manufacturer
- kostal-solar-electric.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 | Inverter serial number | holding 14 | string[8] |
Sources and notes
- PIKO IQ/PLENTICORE KOSTAL Interface description MODBUS (TCP) & SunSpec · version 2.7, 2025-11-20 chapter 3, the Modbus register tables (SunSpec models are not part of this map); valid from PIKO/PLENTICORE G1 UI 01.30.12092, G2 SW 02.15, G3 and MP G3 SW 3.06.00
Source: KOSTAL Solar Electric, "PIKO IQ/PLENTICORE KOSTAL Interface description MODBUS (TCP) & SunSpec", revision 2.7 (2025-11-20)
- Modbus TCP is off by default: enable it in the web interface under Settings > Modbus / SunSpec (TCP). The default TCP port is 1502 and the unit ID 71 (both can be changed).
- Function codes 03, 06 and 16. The byte order is set in the web interface: 'little-endian (CDAB) Standard Modbus' (the default, used here) or 'big-endian (ABCD) SunSpec'. Strings use two characters per register.
- Registers marked as scale factors hold a signed power of ten: value = register x 10^factor.
- The active power, reactive power and delta cos φ setpoints are not kept over a restart of the inverter.
- Not in this map: the SunSpec models (1, 103, 113, 120, 123, 160, 203, 802), which start at register 40003; see the SunSpec Alliance map.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 2 | uint16 | RW | ||||
| HR | 4 | uint16 | RW | ||||
| HR | 5 | uint16 | RW | ||||
| HR | 6 | string[8] | R | ||||
| HR | 14 | string[8] | R | ||||
| HR | 30 | uint16 | R | ||||
| HR | 32 | uint16 | R | ||||
| HR | 34 | uint16 | R | ||||
| HR | 36 | uint16 | R | ||||
| HR | 38 | string[8] | R | ||||
| HR | 46 | string[8] | R | ||||
| HR | 54 | uint32 CDAB | R | ||||
| HR | 56 | uint32 CDAB | R | ||||
| HR | 58 | string[13] | R | ||||
| HR | 98 | float32 CDAB | R | °C | |||
| HR | 100 | float32 CDAB | R | W | |||
| HR | 104 | uint32 CDAB | R | ||||
| HR | 106 | float32 CDAB | R | W | |||
| HR | 108 | float32 CDAB | R | W | |||
| HR | 110 | float32 CDAB | R | Wh | |||
| HR | 112 | float32 CDAB | R | Wh | |||
| HR | 114 | float32 CDAB | R | Wh | |||
| HR | 116 | float32 CDAB | R | W | |||
| HR | 118 | float32 CDAB | R | Wh | |||
| HR | 120 | float32 CDAB | R | Ω | |||
| HR | 122 | float32 CDAB | R | % | |||
| HR | 124 | float32 CDAB | R | % | |||
| HR | 144 | float32 CDAB | R | s | |||
| HR | 150 | float32 CDAB | R | ||||
| HR | 152 | float32 CDAB | R | Hz | |||
| HR | 154 | float32 CDAB | R | A | |||
| HR | 156 | float32 CDAB | R | W | |||
| HR | 158 | float32 CDAB | R | V | |||
| HR | 160 | float32 CDAB | R | A | |||
| HR | 162 | float32 CDAB | R | W | |||
| HR | 164 | float32 CDAB | R | V | |||
| HR | 166 | float32 CDAB | R | A | |||
| HR | 168 | float32 CDAB | R | W | |||
| HR | 170 | float32 CDAB | R | V | |||
| HR | 172 | float32 CDAB | R | W | |||
| HR | 174 | float32 CDAB | R | var | |||
| HR | 178 | float32 CDAB | R | VA | |||
| HR | 190 | float32 CDAB | R | A | |||
| HR | 194 | float32 CDAB | R | ||||
| HR | 200 | float32 CDAB | R | A | |||
| HR | 202 | float32 CDAB | R | 0 = fuse fail, 1 = fuse ok, 255 = unchecked | |||
| HR | 208 | float32 CDAB | R | ||||
| HR | 210 | float32 CDAB | R | % | |||
| HR | 214 | float32 CDAB | R | °C | |||
| HR | 216 | float32 CDAB | R | V | |||
| HR | 218 | float32 CDAB | R | ||||
| HR | 220 | float32 CDAB | R | Hz | |||
| HR | 222 | float32 CDAB | R | A | |||
| HR | 224 | float32 CDAB | R | W | |||
| HR | 226 | float32 CDAB | R | var | |||
| HR | 228 | float32 CDAB | R | VA | |||
| HR | 230 | float32 CDAB | R | V | |||
| HR | 232 | float32 CDAB | R | A | |||
| HR | 234 | float32 CDAB | R | W | |||
| HR | 236 | float32 CDAB | R | var | |||
| HR | 238 | float32 CDAB | R | VA | |||
| HR | 240 | float32 CDAB | R | V | |||
| HR | 242 | float32 CDAB | R | A | |||
| HR | 244 | float32 CDAB | R | W | |||
| HR | 246 | float32 CDAB | R | var | |||
| HR | 248 | float32 CDAB | R | VA | |||
| HR | 250 | float32 CDAB | R | V | |||
| HR | 252 | float32 CDAB | R | W | |||
| HR | 254 | float32 CDAB | R | var | |||
| HR | 256 | float32 CDAB | R | VA | |||
| HR | 258 | float32 CDAB | R | A | |||
| HR | 260 | float32 CDAB | R | W | |||
| HR | 266 | float32 CDAB | R | V | |||
| HR | 268 | float32 CDAB | R | A | |||
| HR | 270 | float32 CDAB | R | W | |||
| HR | 276 | float32 CDAB | R | V | |||
| HR | 278 | float32 CDAB | R | A | |||
| HR | 280 | float32 CDAB | R | W | |||
| HR | 286 | float32 CDAB | R | V | |||
| HR | 320 | float32 CDAB | R | Wh | |||
| HR | 322 | float32 CDAB | R | Wh | |||
| HR | 324 | float32 CDAB | R | Wh | |||
| HR | 326 | float32 CDAB | R | Wh | |||
| HR | 384 | string[32] | R | ||||
| HR | 416 | uint16 | R | ||||
| HR | 418 | uint16 | R | ||||
| HR | 420 | string[8] | R | ||||
| HR | 428 | string[8] | R | ||||
| HR | 436 | string[8] | R | ||||
| HR | 444 | uint16 | R | ||||
| HR | 446 | string[8] | R | ||||
| HR | 454 | string[8] | R | ||||
| HR | 512 | uint32 CDAB | R | Ah | |||
| HR | 514 | uint16 | R | % | |||
| HR | 515 | uint32 CDAB | R | ||||
| HR | 517 | string[8] | R | ||||
| HR | 525 | uint32 CDAB | R | ||||
| HR | 527 | uint32 CDAB | R | ||||
| HR | 529 | uint32 CDAB | R | Wh | |||
| HR | 531 | uint16 | R | W | ×10^Inverter max power scale factor |
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).