KEBA · EV charger
KeContact P30 (c-series / x-series) Modbus register map
Default configuration
- Protocol
- Modbus TCP
- Port
- 502
- Unit ID
- 255
- Addressing
- 0-based
- Byte order
- Big endian
- Word order
- High word first
Register map
| Address | Count | Name | Type | Unit | Scale | Access |
|---|---|---|---|---|---|---|
| 1000 | 2 | Charging state 0 = start-up, 1 = not ready for charging, 2 = ready and waiting for the vehicle, 3 = charging, 4 = error, 5 = interrupted because of overtemperature or suspended mode. | UInt32 | - | 1 | R |
| 1004 | 2 | Cable state 0 = no cable, 1 = cable connected to the station only, 3 = connected and locked at the station, 5 = connected to station and vehicle, 7 = connected to station and vehicle and locked (charging). | UInt32 | - | 1 | R |
| 1006 | 2 | Error code 0 = no error, other values are error codes: convert to hex, the leading group is the error group. | UInt32 | - | 1 | R |
| 1008 | 2 | Charging current L1 | UInt32 | A | 0.001 | R |
| 1010 | 2 | Charging current L2 | UInt32 | A | 0.001 | R |
| 1012 | 2 | Charging current L3 | UInt32 | A | 0.001 | R |
| 1014 | 2 | Serial number | UInt32 | - | 1 | R |
| 1016 | 2 | Product type and features Packed type code: product, cable/socket, supported current (1 = 13 A, 2 = 16 A, 3 = 20 A, 4 = 32 A), device series (1 = c-series, 0 = x-series), energy meter class, RFID support. | UInt32 | - | 1 | R |
| 1018 | 2 | Firmware version Convert to hex, e.g. 0x30A0D00 = firmware 3.10.14. In P30 Modbus TCP version 1.11 this register is at 1013. | UInt32 | - | 1 | R |
| 1020 | 2 | Active power | UInt32 | W | 0.001 | R |
| 1036 | 2 | Total energy Persistent device lifetime energy meter. | UInt32 | Wh | 1 | R |
| 1040 | 2 | Voltage L1 | UInt32 | V | 1 | R |
| 1042 | 2 | Voltage L2 | UInt32 | V | 1 | R |
| 1044 | 2 | Voltage L3 | UInt32 | V | 1 | R |
| 1046 | 2 | Power factor cos phi in 0.1 %: raw 928 = 92.8 %. | UInt32 | % | 0.1 | R |
| 1100 | 2 | Max charging current Maximum charging current currently configured on the station. | UInt32 | A | 0.001 | R |
| 1110 | 2 | Max supported current Minimum of DIP switch setting, cable coding and temperature monitoring. Socket variants report 6 A while no cable is plugged in. | UInt32 | A | 0.001 | R |
| 1500 | 2 | RFID card First four bytes of the UID of the RFID card that authorised the session, as a decimal number; convert to hex for the UID. | UInt32 | - | 1 | R |
| 1502 | 2 | Charged energy Energy transferred in the current charging session. | UInt32 | Wh | 1 | R |
| 1550 | 2 | Phase switching source Communication channel currently allowed to switch contact x2. | UInt32 | - | 1 | R |
| 1552 | 2 | Phase switching state 1 = one phase, 3 = three phases. | UInt32 | - | 1 | R |
| 1600 | 2 | Failsafe current setting Failsafe current set by the last failsafe command (may differ from the persisted setting). | UInt32 | A | 0.001 | R |
| 1602 | 2 | Failsafe timeout setting | UInt32 | s | 1 | R |
| 5004 | 1 | Set charging current Charging current setpoint, 6000-63000 mA; valid until the station reboots. | UInt16 | A | 0.001 | W |
| 5010 | 1 | Set energy Energy to transfer in the current or next session, in units of 10 Wh; the session ends when the value is reached. | UInt16 | Wh | 10 | W |
| 5012 | 1 | Unlock plug Write 0 to unlock the plug; only possible while the station is in suspended state. | UInt16 | - | 1 | W |
| 5014 | 1 | Enable / disable charging station 0 = disable charging station, 1 = enable charging station. An active session is stopped. | UInt16 | - | 1 | W |
| 5016 | 1 | Failsafe current 0 deactivates charging on communication loss, 6000-32000 sets the failsafe current in mA. | UInt16 | A | 0.001 | W |
| 5018 | 1 | Failsafe timeout Activates the failsafe: 0 deactivates it (charging continues at the highest possible value), 10-600 sets the timeout in seconds. | UInt16 | s | 1 | W |
| 5020 | 1 | Failsafe persist Write 1 to persist the current failsafe settings to the PDC. | UInt16 | - | 1 | W |
| 5050 | 1 | Set phase switch toggle Communication channel allowed to switch contact x2: 0 = none, 1 = OCPP, 2 = REST API, 3 = Modbus, 4 = UDP. | UInt16 | - | 1 | W |
| 5052 | 1 | Trigger phase switch 0 = one phase (default state), 1 = three phases. | UInt16 | - | 1 | W |
Notes
Source: KEBA, "KeContact P30 Charging Station - Modbus TCP Programmers Guide", V1.04 (2022). The station is the Modbus TCP server on port 502 with unit ID 255, and only the holding-register area is used, with function codes 03 (read) and 06 (write). All readable values are UINT32 and therefore occupy two registers; the guide states that a single register cannot be read on its own, so the maximum read length per request is two words -- read each two-register value as one request. Register numbering starts at 0; some third-party tools need +1. The guide's failsafe section shows index 5016 three times (for 5016, 5018 and 5020); the register names and the description order imply 5016 = failsafe current, 5018 = failsafe timeout, 5020 = failsafe persist, which is also what the evcc KEBA implementation writes. Phase switching additionally needs the KeContact S10 phase switch and register 5050 set to 3.