cFos Charging Controller - Modbus Registers

These registers are available for Modbus RTU and Modbus TCP. The cFos Power Brain controller supports the Modbus functions

  • 03 read multiple holding registers
  • 06 write single holding register
  • 16 write multiple holding registers

There are three devices:
2 S0-Meters and 1 EVSE, they are distinguished by Modbus Slave ID and (for Modbus TCP) by TCP port.

Note: Writing access to the Modbus registers causes writing to the flash memory of the cFos Power Brain and should therefore not take place regularly. The following registers are not saved permanently and can therefore be changed regularly: reg_charging_cur_limit, reg_fixed_current, reg_charging_enable, reg_disconnect_cp. For all other registers, a change is written to the flash, so the number of write operations should be limited!

Default Slave IDs

EVSESlave Id 1TCP port 4701
S0 Meter 1Slave Id 2TCP port 4702
S0 Meter 2Slave Id 3TCP port 4703

The following registers apply depending on which device is involved and whether a meter is attached to the EVSE, for example:

Registers (r = read-only, w = write-only, rw = read/write)

Registers for S0 Meters and the EVSE

NameAddressRegistersDescription
vendor_id80002 rUnique vendor id, 0xcf05
product_id80021 rProduct id, 1
device_id80031 rDevice id inside the product, 0x100
product_version80042 rProduct version, major.minor
product_build80051 rProduct build number
mapping_version80061 rmajor.minor version of this register mapping
padding_180071 rReserved
serial_no80088 rSerial number string
name801616 rProduct name, "cFos Power Brain controller"
slave_id80401 rwModbus slave ID

Registers for S0 Meters

NameAddressRegistersDescription
input80411 rReserved
pulsesperkwh80422 rwImpulses per kWh for input S0
phases80441 rwBitmask of simulated phases, bit 0 = L1, bit 1 = L2, bit 2 = L3
voltage_l180451 rwNominal Voltage L1 [V]
voltage_l280461 rwNominal Voltage L2 [V]
voltage_l380471 rwNominal Voltage L3 [V]
pulses80504 rwAbsolute number of pulses on S0 input
timeperpulse80542 rTime between last two pulses on S0 input [ms]
level80561 rCurrent input level of S0 input
0 = current flows, 1 = current does not flow
padding_280571 rReserved
energy80584 rwActive import [Wh]
power80622 rActive power [W]
current_l180642 rPresent current L1 [0.1 A]
current_l280662 rPresent current L2 [0.1 A]
current_l380682 rPresent current L3 [0.1 A]
reset_pulses80701 wReset pulse counter [1]
reset_energy80711 wReset energy [1]

Registers for the EVSE

Default values after reboot:

NameAddressRegistersDescription
def_fixed_current80801 rwDefault reg_cable_current [0.1 A] (*)
def_charg_cur_limit80811 rwDefault charging current limit [0.1 A] 6-63 (*)
def_charging_enable80821 rwDefault charging enabled [0/1] (*)
(*) This value will be set accordingly after a reboot.
fail_safe_duration80832 rwNumber of seconds without reading/writing before charging_cur_limit and charging_enable are restored. Default value is 300 (5 minutes)
fail_safe_current80851 rwPower when inactive, 0 = deactivate charging
disconnect_cp80861 rwWrite: Number of seconds of switching off CP, Read: Remaining seconds
cable_current80901 rPP: Cable max current [0.1 A], 0: no cable
fixed_current80911 rwOverwrite cable_current [0.1 A]
charge_pilot_state80921 rCP: 0 = A (wait),
1 = B (vehicle detected),
2 = C (load),
3 = D (loading with ventilation),
4 = E (no power),
5 = F (error)
charging_cur_limit80931 rwCharging current limit [0.1 A] 6-63A, may be limited due to model limitations (e.g. for cFos Power Brain wallbox 11kW, it's limited to 16A)
charging_enable80941 rwCharging enabled [0/1] 0 = disable, 1 = enable
charging_current80951 rCharging current [0.1 A] 6-63
last_rfid809615 rLast seen rfid (hex-string)
detected_rfids81111 rNumber of RFID entries
has_meter81121 r1 if a counter is attached (then registers 8058-8068 can be read), otherwise 0
count_restart81202 rwNumber of restarts of the hardware