Documentation

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

We distinguish four devices:
2 S0 meters, 1 charging station and 1 attached (Modbus) meter, which are distinguished by the Modbus slave ID and (for Modbus TCP) the TCP port.

Note: Write 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: charging_cur_limit, fixed_current, charging_enable, disconnect_cp, relay_select, relay2. All other registers are written to flash when they are changed, 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
pinned counterSlave Id 1TCP port 4701 (via Wallbox Register)

Depending on which device it is and whether, for example, a meter is attached to the EVSE, the following registers apply:

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
meter_flags80571 rbit 0: 1=has individual phases
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]

Register for pinned counters

Registers 8057 to 8068 are available (see S0 counter)

Registers for the EVSE

Default values after reboot:

NameAddressRegistersDescription
def_fixed_current80801 rwDefault value 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 during inactivity, 0 = disable charging
disconnect_cp80861 rwWrite: Number of seconds of switch-off CP, Read: Seconds remaining
relay_select80871 rwWrite: 0=3-phase contactor, 1=1-phase contactor, for wallboxes that support this (at least controller Rev. F)
relay280881 rwWrite: 0=relay 2 off, 1=relay 2 on (only if relay 1 is off), for wallboxes that support this (at least controller Rev. F)
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 (waiting),
1 = B (vehicle detected),
2 = C (charging),
3 = D (charging with ventilation),
4 = E (no current),
5 = F (error), 9 = DC sensor error. All other values: 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 inputs
has_meter81121 r1, if a counter is attached (then registers 8057-8068 are readable), otherwise 0
s0_inputs81131 rBit 0=Status of S0 input 1
bit 1=Status of S0 input 2
bit 8=Is switching to 1/3-phase permitted when plugged in? (1=yes)
bit 9=bit 10 is valid
bit 10=2nd relay present (1=yes, if bit 9=1)
bit 11=relay 2 is controlled externally (see reg. 8088)
count_restart81202 rwNumber of restarts of the hardware