KOSTAL PIKO IQ / PLENTICORE plus Modbus register map
KOSTAL Modbus TCP interface of PIKO IQ and PLENTICORE inverters, covering the native register table with live AC, DC, battery and power meter values, yields, setpoints for active and reactive power, external battery management, battery limitation and plant (Multi Device Control) registers. The document also describes a SunSpec interface (models 1, 103, 113, 120, 123, 160, 203, 802); its model contents are not tabulated there, so no SunSpec rows are included. Availability of individual registers depends on the model and software version, see the notes.
- Protocol
- Modbus TCP
- Defaults
- TCP port 1502 and unit ID 71 (modifiable) by default. Function codes 0x03, 0x06 and 0x10 (1 to 2 registers per write) are supported. KOSTAL recommends a polling time of more than 1 s (p. 9, 10, 18).
- Addresses in the manual
- 0-based protocol addresses, as sent on the wire
- 32 and 64-bit values
- Low word first (CD AB)
- Registers listed
- 171
- Checked against
- Revision version 2.9, release date 17.07.2026 (document DOC02308910-0020), hosted by KOSTAL. Valid from PIKO/PLENTICORE G1 UI 01.30.12092, PLENTICORE G2 SW 02.15.xxxxx, PLENTICORE G3 and MP G3 SW 3.07.00.xxxxx
Address base. The tables print each address in hex and decimal (for example 0x06 = 6, 0x9DEC = 40428). The document states that registers in the PDU are addressed starting at zero, so registers numbered 1 to 16 are addressed 0 to 15 (p. 10), and its register tables give the hex address range 0x0000 to 0xFFFF for requests. It gives no worked example that ties a table row to a request, so confirm with a known register, for example the serial number at 14. This file lists the decimal address from the table. Address 2 in the manual is address 2 on the wire.
Word order. The default is little-endian (CDAB) standard Modbus; register 5 (Modbus Byte Order) or the inverter setting Settings, Modbus/SunSpec (TCP) switches to big-endian (ABCD) SunSpec. It applies to float-formatted registers (p. 9, 23). The document does not say separately whether it also applies to 32-bit integer registers; check a known value.
Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.
Downloads
The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.
Registers
| Manual | Wire | Register | Type | Regs | Unit | Scale | Access | Area |
|---|---|---|---|---|---|---|---|---|
| 2 | 2 | Modbus enableModbus_Enable |
bool | 1 | 1 | RW | Holding (FC03) | |
| 4 | 4 | Modbus unit IDModbus_Unit_ID · Default unit ID is 71; the manual says it is modifiable. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 5 | 5 | Modbus byte order for float registersModbus_Byte_Order · 0x00 = little-endian (CDAB), 0x01 = big-endian (ABCD). Applies to float-formatted registers (note 7). The setting is also under Settings, Modbus/SunSpec (TCP) (p. 9). |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 6 | 6 | Inverter article numberInverter_Article_Number |
string | 8 | 1 | R | Holding (FC03) | |
| 14 | 14 | Inverter serial numberInverter_Serial_Number |
string | 8 | 1 | R | Holding (FC03) | |
| 30 | 30 | Number of bidirectional convertersNumber_Of_Bidirectional_Converters |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 32 | 32 | Number of AC phasesNumber_Of_AC_Phases |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 34 | 34 | Number of PV stringsNumber_Of_PV_Strings |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 38 | 38 | Software version of main controller (MC)Software_Version_Maincontroller |
string | 8 | 1 | R | Holding (FC03) | |
| 46 | 46 | Software version of IO controller (IOC)Software_Version_IO_Controller |
string | 8 | 1 | R | Holding (FC03) | |
| 54 | 54 | Power IDPower_ID |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 56 | 56 | Inverter stateInverter_State · Inverter state (note 2): 0 Off, 1 Init, 2 IsoMeas, 3 GridCheck, 4 StartUp, 5 not named, 6 FeedIn, 7 Throttled, 8 ExtSwitchOff, 9 Update, 10 Standby, 11 GridSync, 12 GridPreCheck, 13 GridSwitchOff, 14 Overheating, 15 Shutdown, 16 ImproperDcVoltage, 17 ESB, 18 Unknown. |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 58 | 58 | Overall software version (UI / SW)Overall_Software_Version · Only PLENTICORE plus G2 and PLENTICORE (MP, BI) G3 (note 11). |
string | 13 | 1 | R | Holding (FC03) | |
| 98 | 98 | Temperature of controller PCBController_PCB_Temperature |
float32 | 2 | degC | 1 | R | Holding (FC03) |
| 100 | 100 | Total DC powerTotal_DC_Power |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 104 | 104 | State of energy managerEnergy_Manager_State · Internal energy flow state (note 3): 0x00 Idle, 0x02 Emergency Battery Charge, 0x08 Winter Mode Step 1, 0x10 Winter Mode Step 2; 0x01 and 0x04 are listed as n/a. |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 106 | 106 | Home own consumption from batteryHome_Consumption_From_Battery · Actual power consumed by the home and provided from the battery (note 8). |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 108 | 108 | Home own consumption from gridHome_Consumption_From_Grid · Actual power consumed by the home and provided from the grid (note 8). |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 110 | 110 | Total home consumption from batteryTotal_Home_Consumption_Battery · Total energy consumed by the home and provided from the battery (note 8). |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 112 | 112 | Total home consumption from gridTotal_Home_Consumption_Grid · Total energy consumed by the home and provided from the grid (note 8). |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 114 | 114 | Total home consumption from PVTotal_Home_Consumption_PV · Total energy consumed by the home and provided from PV (note 8). |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 116 | 116 | Home own consumption from PVHome_Consumption_From_PV · Actual power consumed by the home and provided from PV (note 8). |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 118 | 118 | Total home consumptionTotal_Home_Consumption · Sum of all energy consumed by the home from battery, grid and PV (note 8). |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 120 | 120 | Isolation resistanceIsolation_Resistance |
float32 | 2 | Ohm | 1 | R | Holding (FC03) |
| 122 | 122 | Power limit from EVUPower_Limit_From_EVU |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 124 | 124 | Total home consumption rateTotal_Home_Consumption_Rate |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 144 | 144 | WorktimeWorktime |
float32 | 2 | s | 1 | R | Holding (FC03) |
| 150 | 150 | Actual cos phiActual_Cos_Phi |
float32 | 2 | 1 | R | Holding (FC03) | |
| 152 | 152 | Grid frequencyGrid_Frequency |
float32 | 2 | Hz | 1 | R | Holding (FC03) |
| 154 | 154 | Current phase 1Current_Phase_1 |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 156 | 156 | Active power phase 1Active_Power_Phase_1 |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 158 | 158 | Voltage phase 1Voltage_Phase_1 |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 160 | 160 | Current phase 2Current_Phase_2 |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 162 | 162 | Active power phase 2Active_Power_Phase_2 |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 164 | 164 | Voltage phase 2Voltage_Phase_2 |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 166 | 166 | Current phase 3Current_Phase_3 |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 168 | 168 | Active power phase 3Active_Power_Phase_3 |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 170 | 170 | Voltage phase 3Voltage_Phase_3 |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 172 | 172 | Total AC active powerTotal_AC_Active_Power |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 174 | 174 | Total AC reactive powerTotal_AC_Reactive_Power |
float32 | 2 | Var | 1 | R | Holding (FC03) |
| 178 | 178 | Total AC apparent powerTotal_AC_Apparent_Power |
float32 | 2 | VA | 1 | R | Holding (FC03) |
| 190 | 190 | Battery charge currentBattery_Charge_Current |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 194 | 194 | Number of battery cyclesBattery_Cycles |
float32 | 2 | 1 | R | Holding (FC03) | |
| 200 | 200 | Actual battery charge (-) / discharge (+) currentBattery_Current_Actual |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 202 | 202 | PSSB fuse statePSSB_Fuse_State · Listed as Float format (note 5): 0x00 Fuse fail, 0x01 Fuse ok, 0xFF Unchecked. |
float32 | 2 | 1 | R | Holding (FC03) | |
| 208 | 208 | Battery ready flagBattery_Ready_Flag · Listed as Float format. |
float32 | 2 | 1 | R | Holding (FC03) | |
| 210 | 210 | Actual state of charge (SoC)Battery_State_Of_Charge |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 214 | 214 | Battery temperatureBattery_Temperature |
float32 | 2 | degC | 1 | R | Holding (FC03) |
| 216 | 216 | Battery voltageBattery_Voltage |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 218 | 218 | Cos phi (powermeter)Powermeter_Cos_Phi |
float32 | 2 | 1 | R | Holding (FC03) | |
| 220 | 220 | Frequency (powermeter)Powermeter_Frequency |
float32 | 2 | Hz | 1 | R | Holding (FC03) |
| 222 | 222 | Current phase 1 (powermeter)Powermeter_Current_Phase_1 |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 224 | 224 | Active power phase 1 (powermeter)Powermeter_Active_Power_Phase_1 |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 226 | 226 | Reactive power phase 1 (powermeter)Powermeter_Reactive_Power_Phase_1 |
float32 | 2 | Var | 1 | R | Holding (FC03) |
| 228 | 228 | Apparent power phase 1 (powermeter)Powermeter_Apparent_Power_Phase_1 |
float32 | 2 | VA | 1 | R | Holding (FC03) |
| 230 | 230 | Voltage phase 1 (powermeter)Powermeter_Voltage_Phase_1 |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 232 | 232 | Current phase 2 (powermeter)Powermeter_Current_Phase_2 |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 234 | 234 | Active power phase 2 (powermeter)Powermeter_Active_Power_Phase_2 |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 236 | 236 | Reactive power phase 2 (powermeter)Powermeter_Reactive_Power_Phase_2 |
float32 | 2 | Var | 1 | R | Holding (FC03) |
| 238 | 238 | Apparent power phase 2 (powermeter)Powermeter_Apparent_Power_Phase_2 |
float32 | 2 | VA | 1 | R | Holding (FC03) |
| 240 | 240 | Voltage phase 2 (powermeter)Powermeter_Voltage_Phase_2 |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 242 | 242 | Current phase 3 (powermeter)Powermeter_Current_Phase_3 |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 244 | 244 | Active power phase 3 (powermeter)Powermeter_Active_Power_Phase_3 |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 246 | 246 | Reactive power phase 3 (powermeter)Powermeter_Reactive_Power_Phase_3 |
float32 | 2 | Var | 1 | R | Holding (FC03) |
| 248 | 248 | Apparent power phase 3 (powermeter)Powermeter_Apparent_Power_Phase_3 |
float32 | 2 | VA | 1 | R | Holding (FC03) |
| 250 | 250 | Voltage phase 3 (powermeter)Powermeter_Voltage_Phase_3 |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 252 | 252 | Total active power (powermeter)Powermeter_Total_Active_Power · Sensor position 1 (home consumption): (+) house consumption, (-) generation. Sensor position 2 (grid connection): (+) power supply, (-) feed-in. |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 254 | 254 | Total reactive power (powermeter)Powermeter_Total_Reactive_Power · Sensor position 2 (grid connection): (+) power supply, (-) feed-in. Sensor position 1 (home consumption): (+) house consumption, (-) generation. |
float32 | 2 | Var | 1 | R | Holding (FC03) |
| 256 | 256 | Total apparent power (powermeter)Powermeter_Total_Apparent_Power · Sensor position 2 (grid connection): (+) power supply, (-) feed-in. Sensor position 1 (home consumption): (+) house consumption, (-) generation. |
float32 | 2 | VA | 1 | R | Holding (FC03) |
| 258 | 258 | Current DC1DC1_Current |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 260 | 260 | Power DC1DC1_Power |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 266 | 266 | Voltage DC1DC1_Voltage |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 268 | 268 | Current DC2DC2_Current |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 270 | 270 | Power DC2DC2_Power |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 276 | 276 | Voltage DC2DC2_Voltage |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 278 | 278 | Current DC3DC3_Current |
float32 | 2 | A | 1 | R | Holding (FC03) |
| 280 | 280 | Power DC3DC3_Power |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 286 | 286 | Voltage DC3DC3_Voltage |
float32 | 2 | V | 1 | R | Holding (FC03) |
| 320 | 320 | Total yieldTotal_Yield |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 322 | 322 | Daily yieldDaily_Yield |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 324 | 324 | Yearly yieldYearly_Yield |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 326 | 326 | Monthly yieldMonthly_Yield |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 384 | 384 | Inverter network nameInverter_Network_Name |
string | 32 | 1 | R | Holding (FC03) | |
| 416 | 416 | IP enableIP_Enable |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 418 | 418 | Manual IP / Auto-IPManual_IP_Auto_IP |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 420 | 420 | IP addressIP_Address |
string | 8 | 1 | R | Holding (FC03) | |
| 428 | 428 | IP subnet maskIP_Subnetmask |
string | 8 | 1 | R | Holding (FC03) | |
| 436 | 436 | IP gatewayIP_Gateway |
string | 8 | 1 | R | Holding (FC03) | |
| 444 | 444 | IP auto DNSIP_Auto_DNS |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 446 | 446 | IP DNS 1IP_DNS1 |
string | 8 | 1 | R | Holding (FC03) | |
| 454 | 454 | IP DNS 2IP_DNS2 |
string | 8 | 1 | R | Holding (FC03) | |
| 512 | 512 | Battery gross capacityBattery_Gross_Capacity |
uint32 | 2 | Ah | 1 | R | Holding (FC03) |
| 514 | 514 | Battery actual SOCBattery_Actual_SOC |
uint16 | 1 | % | 1 | R | Holding (FC03) |
| 515 | 515 | Firmware version of main controller (MC)Firmware_Maincontroller |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 517 | 517 | Battery manufacturerBattery_Manufacturer |
string | 8 | 1 | R | Holding (FC03) | |
| 527 | 527 | Battery serial numberBattery_Serial_Number |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 529 | 529 | Work capacityBattery_Work_Capacity |
uint32 | 2 | Wh | 1 | R | Holding (FC03) |
| 531 | 531 | Inverter max powerInverter_Max_Power · Apply the scale factor in register 532 (note 4). |
uint16 | 1 | W | 1 | R | Holding (FC03) |
| 532 | 532 | Inverter max power scale factorInverter_Max_Power_Scale_Factor · Format is not given in the table row; note 4 describes scale factors as 16-bit two's complement integers in the range -10 to 10. |
int16 | 1 | 1 | R | Holding (FC03) | |
| 533 | 533 | Active power setpointActive_Power_Setpoint · Section 3.3 gives range 1 to 100 and function code 0x06 only, and says the value is not stored and is discarded when the inverter powers on or resets (p. 24). |
uint16 | 1 | % | 1 | RW | Holding (FC03) |
| 535 | 535 | Inverter manufacturerInverter_Manufacturer |
string | 16 | 1 | R | Holding (FC03) | |
| 559 | 559 | Inverter serial number (16 registers)Inverter_Serial_Number_2 |
string | 16 | 1 | R | Holding (FC03) | |
| 575 | 575 | Inverter generation power (actual)Inverter_Generation_Power · Apply the power scale factor in register 576 (note 4). |
int16 | 1 | W | 1 | R | Holding (FC03) |
| 576 | 576 | Power scale factorPower_Scale_Factor · Format is not given in the table row; note 4 describes scale factors as 16-bit two's complement integers in the range -10 to 10. |
int16 | 1 | 1 | R | Holding (FC03) | |
| 577 | 577 | Generation energyGeneration_Energy · Apply the energy scale factor in register 579 (note 4). |
uint32 | 2 | Wh | 1 | R | Holding (FC03) |
| 579 | 579 | Energy scale factorEnergy_Scale_Factor · Format is not given in the table row; note 4 describes scale factors as 16-bit two's complement integers in the range -10 to 10. |
int16 | 1 | 1 | R | Holding (FC03) | |
| 582 | 582 | Actual battery charge/discharge powerBattery_Charge_Discharge_Power_Actual |
int16 | 1 | W | 1 | R | Holding (FC03) |
| 583 | 583 | Reactive power setpointReactive_Power_Setpoint · Section 3.3 gives range -100 to 100 and function code 0x06 only, and says the value is not stored and is discarded when the inverter powers on or resets (p. 24). |
int16 | 1 | % | 1 | RW | Holding (FC03) |
| 585 | 585 | Delta cos phi setpointDelta_Cos_Phi_Setpoint · Range -32768 to 32767 maps to -1.0 to +1.0. A negative value is underexcited, a positive value is overexcited. Example: -1638 gives cos phi 0.95 underexcited, +3276 gives 0.90 overexcited; the maximum setting range is -26214 to 26214 (cos phi 0.80). Section 3.3 lists function code 0x06 only and says the value is not stored (p. 24). |
int16 | 1 | 1 | RW | Holding (FC03) | |
| 586 | 586 | Battery firmwareBattery_Firmware |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 588 | 588 | Battery typeBattery_Type · Note 6: 0x0000 no battery (PV functionality), 0x0002 PIKO Battery Li, 0x0004 BYD, 0x0008 BMZ, 0x0010 AXIstorage Li SH, 0x0040 LG, 0x0200 Pylontech, 0x0400 AXIstorage Li SV, 0x1000 Dyness, 0x2000 VARTA, 0x4000 ZYC, 0x8000 HELIVOR, 0x10000 M-TEC (only PLENTICORE G3). The last value does not fit in 16 bits as printed. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 608 | 608 | I/O board switched output 1IO_Board_Switched_Output_1 |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 609 | 609 | I/O board switched output 2IO_Board_Switched_Output_2 |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 610 | 610 | I/O board switched output 3IO_Board_Switched_Output_3 |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 611 | 611 | I/O board switched output 4IO_Board_Switched_Output_4 |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 768 | 768 | Product name (for example PLENTICORE plus)Product_Name |
string | 32 | 1 | R | Holding (FC03) | |
| 800 | 800 | Power class (for example 10)Power_Class |
string | 32 | 1 | R | Holding (FC03) | |
| 832 | 832 | Low-priority active power setpointLow_Priority_Active_Power_Setpoint · Range 0 to 65535; supported with software version 1.30 or greater. Setpoint [W] = register 832 x 10^(register 833). Function code 0x06 only. Not stored over a power cycle (section 3.3). |
uint16 | 1 | W | 1 | W | Holding (FC03) |
| 833 | 833 | Low-priority active power setpoint scale factorLow_Priority_Active_Power_Setpoint_Scale_Factor · Table format is S8 in one register; note 3 says scale factors are 8-bit two's complement integers in the range -10 to 10. Read it first. |
int16 | 1 | 1 | R | Holding (FC03) | |
| 1024 | 1024 | Battery charge power (AC) setpointBattery_Charge_Power_AC_Setpoint · Negative values charge the battery, positive values discharge it. Setpoint [W] = register 1024 x 10^(register 1025). Only PLENTICORE BI and PLENTICORE (MP) G3. |
int16 | 1 | W | 1 | W | Holding (FC03) |
| 1025 | 1025 | Power scale factor for battery charge power setpointBattery_Power_Scale_Factor · Table format is S16; note 2 says scale factors are 8-bit two's complement integers in the range -10 to 10. Read it first. Only PLENTICORE BI and PLENTICORE (MP) G3. |
int16 | 1 | 1 | R | Holding (FC03) | |
| 1026 | 1026 | Battery charge power (AC) setpoint, absoluteBattery_Charge_Power_AC_Setpoint_Absolute · Negative values charge the battery, positive values discharge it. Only PLENTICORE BI and PLENTICORE (MP) G3. |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1028 | 1028 | Battery charge current (DC) setpoint, relativeBattery_Charge_Current_DC_Setpoint_Relative · Relative to the nominal value. Negative values charge the battery, positive values discharge it. Access can be unavailable in Denmark and, for the gradient case (10 minutes), in Austria (note 7). |
float32 | 2 | % | 1 | RW | Holding (FC03) |
| 1030 | 1030 | Battery charge power (AC) setpoint, relativeBattery_Charge_Power_AC_Setpoint_Relative · Relative to the nominal value. Negative values charge the battery, positive values discharge it. Only PLENTICORE BI and PLENTICORE (MP) G3. |
float32 | 2 | % | 1 | RW | Holding (FC03) |
| 1032 | 1032 | Battery charge current (DC) setpoint, absoluteBattery_Charge_Current_DC_Setpoint_Absolute · Negative values charge the battery, positive values discharge it. Access can be unavailable in Denmark and, for the gradient case (10 minutes), in Austria (note 7). |
float32 | 2 | A | 1 | RW | Holding (FC03) |
| 1034 | 1034 | Battery charge power (DC) setpoint, absoluteBattery_Charge_Power_DC_Setpoint_Absolute · Negative values charge the battery, positive values discharge it. Access can be unavailable in Denmark and, for the gradient case (10 minutes), in Austria (note 7). |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1036 | 1036 | Battery charge power (DC) setpoint, relativeBattery_Charge_Power_DC_Setpoint_Relative · Relative to the nominal value. Negative values charge the battery, positive values discharge it. Access can be unavailable in Denmark and, for the gradient case (10 minutes), in Austria (note 7). |
float32 | 2 | % | 1 | RW | Holding (FC03) |
| 1038 | 1038 | Battery max. charge power limit, absoluteBattery_Max_Charge_Power_Limit_Absolute |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1040 | 1040 | Battery max. discharge power limit, absoluteBattery_Max_Discharge_Power_Limit_Absolute |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1042 | 1042 | Minimum SOCMinimum_SOC |
float32 | 2 | % | 1 | RW | Holding (FC03) |
| 1044 | 1044 | Maximum SOCMaximum_SOC |
float32 | 2 | % | 1 | RW | Holding (FC03) |
| 1046 | 1046 | Total DC charge energy (DC side to battery)Total_DC_Charge_Energy |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1048 | 1048 | Total DC discharge energy (DC side from battery)Total_DC_Discharge_Energy |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1050 | 1050 | Total AC charge energy (AC side to battery)Total_AC_Charge_Energy_AC_Side |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1052 | 1052 | Total AC discharge energy (battery to grid)Total_AC_Discharge_Energy |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1054 | 1054 | Total AC charge energy (grid to battery)Total_AC_Charge_Energy_Grid |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1056 | 1056 | Total DC PV energy (sum of all PV inputs)Total_DC_PV_Energy |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1058 | 1058 | Total DC energy from PV1Total_DC_Energy_From_PV1 |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1060 | 1060 | Total DC energy from PV2Total_DC_Energy_From_PV2 |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1062 | 1062 | Total DC energy from PV3Total_DC_Energy_From_PV3 |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1064 | 1064 | Total energy AC side to gridTotal_Energy_AC_Side_To_Grid |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1066 | 1066 | Total DC power (sum of all PV inputs)Total_DC_Power_Sum_PV |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 1068 | 1068 | Battery work capacityBattery_Work_Capacity_Float |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1070 | 1070 | Battery serial numberBattery_Serial_Number_2 |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 1076 | 1076 | Maximum charge power limit (read out from battery)Battery_Max_Charge_Power_Limit_From_Battery |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 1078 | 1078 | Maximum discharge power limit (read out from battery)Battery_Max_Discharge_Power_Limit_From_Battery |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 1080 | 1080 | Battery management modeBattery_Management_Mode · Table format is U8 in one register. Note 4: 0x00 no external battery management, 0x01 external battery management via digital I/O, 0x02 external battery management via MODBUS. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 1082 | 1082 | Installed sensor typeInstalled_Sensor_Type · Table format is U8 in one register. Note 5: 0x00 SDM 630, 0x01 B-Control EM-300 LR, 0x03 KSEM, 0x04 KEM-C, 0x05 KEM-P, 0x06 KEM MP-P, 0xFF no sensor; 0x02 is reserved. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 1280 | 1280 | Max battery charge powerMax_Battery_Charge_Power · Only PLENTICORE G3 from software version 03.05.xxxxx. Once written it must be rewritten cyclically; otherwise the fallback limits in registers 1284 and 1286 become active after the fallback time in register 1288. |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1282 | 1282 | Max battery discharge powerMax_Battery_Discharge_Power · Only PLENTICORE G3 from software version 03.05.xxxxx. Once written it must be rewritten cyclically; otherwise the fallback limits in registers 1284 and 1286 become active after the fallback time in register 1288. |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1284 | 1284 | Max battery charge power (fallback case)Max_Battery_Charge_Power_Fallback · Only PLENTICORE G3 from software version 03.05.xxxxx. |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1286 | 1286 | Max battery discharge power (fallback case)Max_Battery_Discharge_Power_Fallback · Only PLENTICORE G3 from software version 03.05.xxxxx. |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1288 | 1288 | Time until fallbackTime_Until_Fallback · Value range 30 to 10800 seconds. Only PLENTICORE G3 from software version 03.05.xxxxx. |
uint32 | 2 | s | 1 | RW | Holding (FC03) |
| 1545 | 1545 | MDC roleMDC_Role · Values: 0 = off, 1 = client, 2 = host, -1 = MDC not available. Plant registers are available in PLENTICORE G3 inverters with a HOST role from software version 3.06.10. |
int16 | 1 | 1 | R | Holding (FC03) | |
| 1547 | 1547 | Plant state of charge (SoC), capacity-weightedPlant_State_Of_Charge |
float32 | 2 | % | 1 | R | Holding (FC03) |
| 1549 | 1549 | Plant total battery power (sum)Plant_Total_Battery_Power · Negative values indicate battery charging; positive values indicate battery discharging. |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 1551 | 1551 | Plant total PV power (sum)Plant_Total_PV_Power |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 1553 | 1553 | Plant total inverter AC active power (sum)Plant_Total_Inverter_AC_Active_Power |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 1555 | 1555 | Plant total external produced power (sum)Plant_Total_External_Produced_Power · The table prints the unit as Wh for a power-named register. |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1557 | 1557 | Min. limit of plant SoCPlant_Min_SoC_Limit · Plant control needs software version 3.07.00 or greater; commands go to the MDC host inverter only. |
float32 | 2 | % | 1 | RW | Holding (FC03) |
| 1559 | 1559 | Max. limit of plant SoCPlant_Max_SoC_Limit · Plant control needs software version 3.07.00 or greater; commands go to the MDC host inverter only. |
float32 | 2 | % | 1 | RW | Holding (FC03) |
| 1561 | 1561 | Battery charge/discharge DC power setpointPlant_Battery_DC_Power_Setpoint · Plant control needs software version 3.07.00 or greater; commands go to the MDC host inverter only. |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1563 | 1563 | Battery work capacity sum of all present batteriesPlant_Battery_Work_Capacity_Sum |
float32 | 2 | Wh | 1 | R | Holding (FC03) |
| 1565 | 1565 | Overall usable battery maximum usable DC-charge powerPlant_Max_Usable_DC_Charge_Power |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 1567 | 1567 | Overall usable battery maximum usable DC-discharge powerPlant_Max_Usable_DC_Discharge_Power |
float32 | 2 | W | 1 | R | Holding (FC03) |
| 1569 | 1569 | Maximum battery DC-charge powerPlant_Max_Battery_DC_Charge_Power · Plant control needs software version 3.07.00 or greater; commands go to the MDC host inverter only. |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1571 | 1571 | Maximum battery DC-discharge powerPlant_Max_Battery_DC_Discharge_Power · Plant control needs software version 3.07.00 or greater; commands go to the MDC host inverter only. |
float32 | 2 | W | 1 | RW | Holding (FC03) |
| 1573 | 1573 | Battery control timeout until fallbackPlant_Battery_Control_Timeout · Default value is 30 s. Plant control needs software version 3.07.00 or greater. |
uint32 | 2 | s | 1 | RW | Holding (FC03) |
| 40346 | 40346 | Total real energy exportedTotal_Real_Energy_Exported · Valid from PLENTICORE G2 SW 02.12.xxxxx, PLENTICORE G3 SW 3.04.01.xxxxx, PLENTICORE MP G3 SW 3.05.00.xxxxx (note 9). |
uint32 | 2 | Wh | 1 | R | Holding (FC03) |
| 40354 | 40354 | Total real energy importedTotal_Real_Energy_Imported · Valid from PLENTICORE G2 SW 02.12.xxxxx, PLENTICORE G3 SW 3.04.01.xxxxx, PLENTICORE MP G3 SW 3.05.00.xxxxx (note 9). |
uint32 | 2 | Wh | 1 | R | Holding (FC03) |
| 40428 | 40428 | Actual state of health (SoH)Battery_State_Of_Health · Only available if the connected battery system provides this value (note 10). The manual prints this address as 0x9DEC (40428). |
uint16 | 1 | % | 1 | R | Holding (FC03) |
Scale is the number to multiply the raw value by to get the unit. Types with more than one register (32 and 64-bit) follow the word order above.
Open in Modbus Poll
- Download the Modbus Poll blocks file.
- Open Modbus Poll, connect to the device and set its unit ID. In Modbus Poll set Word order to CD AB.
- In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
- The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.
Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.
Source and accuracy
Manufacturer document: KOSTAL Interface description MODBUS (TCP) & SunSpec with control information, PIKO IQ/PLENTICORE (www.kostal-solar-electric.com)
Revision version 2.9, release date 17.07.2026 (document DOC02308910-0020), hosted by KOSTAL. Valid from PIKO/PLENTICORE G1 UI 01.30.12092, PLENTICORE G2 SW 02.15.xxxxx, PLENTICORE G3 and MP G3 SW 3.07.00.xxxxx, p. 6-10, 18-30. Read on 2026-10-24.
Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.
Found a mistake? Report it by email with the register address and the manual page.