
Fenecon COMMERCIAL40 CHARGER
The Fenecon COMMERCIAL 40 CHARGER is the dual-string DC-DC charger subsystem inside the Fenecon COMMERCIAL 40 commercial battery storage system, managed by the FEMS energy management platform over Modbus TCP. This template reads per-string voltage, current, power, IGBT and reactor temperatures, and cumulative charge and discharge energy for both the BMS-side DC-DC converters and the PV-side DC-DC converters across strings A and B. The single write register allows you to cap PV input power. Together, these registers give installers and asset managers full visibility into DC power conversion health and energy throughput for each string independently.
- Protocol
- Modbus TCP
- Connection
- Ethernet, Modbus TCP
- Registers
- 57, read and write
- Brand
- Fenecon
- Last updated
Registers (57)
56 read, 1 write
| Name | Unit | Access | Address (Hidden until you enter your email) | Function (hidden) | Type (hidden) |
|---|---|---|---|---|---|
| set_pv_power_limit | W | Write | |||
| bms_dcdc_output_voltage_a | V | Read | |||
| bms_dcdc_output_current_a | A | Read | |||
| bms_dcdc_output_power_a | W | Read | |||
| bms_dcdc_input_voltage_a | V | Read | |||
| bms_dcdc_input_current_a | A | Read | |||
| bms_dcdc_input_power_a | W | Read | |||
| bms_dcdc_input_energy_a | Wh | Read | |||
| bms_dcdc_output_energy_a | Wh | Read | |||
| bms_dcdc_reactor_temperature_a | °C | Read | |||
| bms_dcdc_igbt_temperature_a | °C | Read | |||
| bms_dcdc_input_charge_energy_a | Wh | Read | |||
| bms_dcdc_input_discharge_energy_a | Wh | Read | |||
| bms_dcdc_output_charge_energy_a | Wh | Read | |||
| bms_dcdc_output_discharge_energy_a | Wh | Read | |||
| pv_dcdc_output_voltage_a | V | Read | |||
| pv_dcdc_output_current_a | A | Read | |||
| pv_dcdc_output_power_a | W | Read | |||
| pv_dcdc_input_voltage_a | V | Read | |||
| pv_dcdc_input_current_a | A | Read | |||
| actual_power_a | W | Read | |||
| pv_dcdc_input_energy_a | Wh | Read | |||
| pv_dcdc_output_energy_a | Wh | Read | |||
| pv_dcdc_reactor_temperature_a | °C | Read | |||
| pv_dcdc_igbt_temperature_a | °C | Read | |||
| pv_dcdc_input_charge_energy_a | Wh | Read | |||
| pv_dcdc_input_discharge_energy_a | Wh | Read | |||
| pv_dcdc_output_charge_energy_a | Wh | Read | |||
| pv_dcdc_output_discharge_energy_a | Wh | Read | |||
| pv_dcdc_output_voltage_b | V | Read | |||
| pv_dcdc_output_current_b | A | Read | |||
| pv_dcdc_output_power_b | W | Read | |||
| pv_dcdc_input_voltage_b | V | Read | |||
| pv_dcdc_input_current_b | A | Read | |||
| actual_power_b | W | Read | |||
| pv_dcdc_input_energy_b | Wh | Read | |||
| pv_dcdc_output_energy_b | Wh | Read | |||
| pv_dcdc_reactor_temperature_b | °C | Read | |||
| pv_dcdc_igbt_temperature_b | °C | Read | |||
| pv_dcdc_input_charge_energy_b | Wh | Read | |||
| pv_dcdc_input_discharge_energy_b | Wh | Read | |||
| pv_dcdc_output_charge_energy_b | Wh | Read | |||
| pv_dcdc_output_discharge_energy_b | Wh | Read | |||
| bms_dcdc_output_voltage_b | V | Read | |||
| bms_dcdc_output_current_b | A | Read | |||
| bms_dcdc_output_power_b | W | Read | |||
| bms_dcdc_input_voltage_b | V | Read | |||
| bms_dcdc_input_current_b | A | Read | |||
| bms_dcdc_input_power_b | W | Read | |||
| bms_dcdc_input_energy_b | Wh | Read | |||
| bms_dcdc_output_energy_b | Wh | Read | |||
| bms_dcdc_reactor_temperature_b | °C | Read | |||
| bms_dcdc_igbt_temperature_b | °C | Read | |||
| bms_dcdc_input_charge_energy_b | Wh | Read | |||
| bms_dcdc_input_discharge_energy_b | Wh | Read | |||
| bms_dcdc_output_charge_energy_b | Wh | Read | |||
| bms_dcdc_output_discharge_energy_b | Wh | Read |
Loading registers…
Send your device list
If a device is not in the library yet, we build the template for free as soon as we have the register data.
Use cases
- Monitor IGBT and reactor temperatures on both PV and BMS DC-DC strings to detect thermal stress before a fault occurs.
- Compare cumulative charge and discharge energy across strings A and B to identify imbalances in DC-DC converter utilisation.
- Track actual PV input power per string to verify that the PV array is delivering expected yield under real conditions.
- Alert on unexpected voltage or current deviation between input and output sides of a DC-DC converter string.
- Verify that a written PV power limit is being respected by comparing set_pv_power_limit against actual_power_a and actual_power_b.
Installation
Enable the FEMS App Modbus/TCP in the FEMS App Center on the COMMERCIAL 40 controller; note the assigned IP address and confirm TCP port 502 is reachable on the local network.
Connect the ModbusCloud Gateway to the same LAN segment as the FEMS controller, ensuring no firewall rules block port 502 between the Gateway and the COMMERCIAL 40.
In the ModbusCloud portal, add a new device, import the Fenecon COMMERCIAL 40 CHARGER template, and set the Modbus unit ID to 255, which is the default unit ID used by FEMS Modbus TCP.
Spot-check register 41264 (bms_dcdc_output_voltage_a) in the portal live view and compare the reading against the FEMS Online Monitoring dashboard to confirm correct polling.
Things to watch for
All registers return zero or no data after connecting. Why?
The FEMS Modbus TCP App must be explicitly installed and activated in the FEMS App Center. If the app is not running, the TCP port is closed and all reads return nothing. Confirm the app status in the FEMS UI under App Center, then retry the connection.
Register values look correct but the base address seems shifted by one.
FEMS Modbus TCP uses zero-based register addressing. Some Modbus tools default to a base address of 1, which shifts every address by one. In your client or in the ModbusCloud portal configuration, set the base address offset to 0 to align with the register map.
PV power limit written to set_pv_power_limit stops being applied after about a minute.
The FEMS write-access app includes a built-in watchdog with a default timeout of 60 seconds. If no new write is received within that window, the setpoint is cleared and the system reverts to autonomous control. Keeping the limit active needs a refreshed value well within that window, typically every 30 seconds. ModbusCloud writes registers at most once per minute, so keeping this 60-second window is borderline and not guaranteed.
Should I write to set_pv_power_limit during normal operation without a specific reason?
Exercise caution. Writing an incorrect or zero value to set_pv_power_limit will curtail PV generation immediately across the system. Only write this register when deliberate curtailment is required, and always validate the intended value before sending. Incorrect setpoints can reduce yield and may interact with FEMS protection thresholds.
Want to see how it works?









