
Fenecon Pro Ess
The Fenecon Pro Ess is a three-phase commercial battery energy storage system managed by the FEMS energy management platform. This template connects via Modbus TCP and reads system state, control mode, work mode, battery state of charge, voltage, current, power, cumulative charge and discharge energy, per-phase AC voltage, current, active and reactive power, grid frequency, BMS charge and discharge power limits, and per-section cell voltages and temperatures across sixteen sections. Write registers allow remote setpoints for per-phase active and reactive power, work state, PCS mode, setup mode, and real-time clock synchronization. Use it in your ModbusCloud portal to track battery health and dispatch performance across commercial installations.
- Protocol
- Modbus TCP
- Connection
- Ethernet, Modbus TCP
- Registers
- 78, read and write
- Brand
- Fenecon
- Last updated
Registers (78)
63 read, 15 write
| Name | Unit | Access | Address (Hidden until you enter your email) | Function (hidden) | Type (hidden) |
|---|---|---|---|---|---|
| system_state | Read | ||||
| control_mode | Read | ||||
| work_mode | Read | ||||
| active_charge_energy | Wh | Read | |||
| active_discharge_energy | Wh | Read | |||
| battery_group_state | Read | ||||
| soc | % | Read | |||
| battery_voltage | V | Read | |||
| battery_current | A | Read | |||
| battery_power | W | Read | |||
| pcs_operation_state | Read | ||||
| current_l1 | A | Read | |||
| current_l2 | A | Read | |||
| current_l3 | A | Read | |||
| voltage_l1 | V | Read | |||
| voltage_l2 | V | Read | |||
| voltage_l3 | V | Read | |||
| active_power_l1 | W | Read | |||
| active_power_l2 | W | Read | |||
| active_power_l3 | W | Read | |||
| reactive_power_l1 | W | Read | |||
| reactive_power_l2 | W | Read | |||
| reactive_power_l3 | W | Read | |||
| frequency_l1 | Hz | Read | |||
| frequency_l2 | Hz | Read | |||
| frequency_l3 | Hz | Read | |||
| single_phase_allowed_apparent | VA | Read | |||
| allowed_charge_power | W | Read | |||
| allowed_discharge_power | W | Read | |||
| set_work_state | Write | ||||
| set_active_power_l1 | W | Write | |||
| set_reactive_power_l1 | W | Write | |||
| set_active_power_l2 | W | Write | |||
| set_reactive_power_l2 | W | Write | |||
| set_active_power_l3 | W | Write | |||
| set_reactive_power_l3 | W | Write | |||
| battery_voltage_section_1 | V | Read | |||
| battery_voltage_section_2 | V | Read | |||
| battery_voltage_section_3 | V | Read | |||
| battery_voltage_section_4 | V | Read | |||
| battery_voltage_section_5 | V | Read | |||
| battery_voltage_section_6 | V | Read | |||
| battery_voltage_section_7 | V | Read | |||
| battery_voltage_section_8 | V | Read | |||
| battery_voltage_section_9 | V | Read | |||
| battery_voltage_section_10 | V | Read | |||
| battery_voltage_section_11 | V | Read | |||
| battery_voltage_section_12 | V | Read | |||
| battery_voltage_section_13 | V | Read | |||
| battery_voltage_section_14 | V | Read | |||
| battery_voltage_section_15 | V | Read | |||
| battery_voltage_section_16 | V | Read | |||
| battery_temperature_section_1 | °C | Read | |||
| battery_temperature_section_2 | °C | Read | |||
| battery_temperature_section_3 | °C | Read | |||
| battery_temperature_section_4 | °C | Read | |||
| battery_temperature_section_5 | °C | Read | |||
| battery_temperature_section_6 | °C | Read | |||
| battery_temperature_section_7 | °C | Read | |||
| battery_temperature_section_8 | °C | Read | |||
| battery_temperature_section_9 | °C | Read | |||
| battery_temperature_section_10 | °C | Read | |||
| battery_temperature_section_11 | °C | Read | |||
| battery_temperature_section_12 | °C | Read | |||
| battery_temperature_section_13 | °C | Read | |||
| battery_temperature_section_14 | °C | Read | |||
| battery_temperature_section_15 | °C | Read | |||
| battery_temperature_section_16 | °C | Read | |||
| rtc_year | Write | ||||
| rtc_month | Write | ||||
| rtc_day | Write | ||||
| rtc_hour | Write | ||||
| rtc_minute | Write | ||||
| rtc_second | Write | ||||
| setup_mode_a | Write | ||||
| pcs_mode_a | Write | ||||
| setup_mode_b | Read | ||||
| pcs_mode_b | 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 battery state of charge continuously to detect capacity degradation trends across seasons.
- Track cumulative charge and discharge energy to verify round-trip efficiency against commissioning baselines.
- Alert on allowed charge or discharge power dropping unexpectedly, signalling BMS thermal or cell limits.
- Compare per-section cell voltages across all sixteen sections to identify imbalanced or degraded cell groups.
- Verify per-phase active power setpoints are being followed after each remote dispatch command.
Installation
Enable the FEMS App Modbus/TCP Write Access on the Fenecon Pro Ess via the FEMS online monitoring portal under the App Center, and note the system IP address.
Connect the ModbusCloud Gateway to the same LAN segment as the FEMS controller so it can reach the device IP on TCP port 502.
In the ModbusCloud portal, add a new device, import the Fenecon Pro Ess template, set the unit ID to match your FEMS configuration, and assign the correct gateway.
Spot-check register 109 (soc) in the live data view to confirm a plausible state-of-charge value and verify the connection is active.
Things to watch for
All register reads return errors or zero. What is wrong?
The FEMS Modbus/TCP interface requires the dedicated FEMS App to be installed and active. Without it, the TCP port will not respond. Confirm the app is licensed and running in the FEMS App Center, then retry. Also verify the client base address offset is set to 0, not 1: a base address of 1 shifts all register addresses by one and causes systematic read failures.
Cell section voltage registers 3020 to 3035 read as zero.
These registers are mapped at a different address block from the main ESS registers. Some Modbus masters batch all reads into a single range request. Split your polling into two requests: one for addresses 100 to 142 and one for 3020 to 3051. A single contiguous request spanning the gap will return an illegal data address exception.
Write setpoints for active power are accepted but the system ignores them.
The FEMS write interface has a built-in watchdog timeout, set to 60 seconds by default. A setpoint is only active for 60 seconds after it is written. The setpoint registers must be re-written at an interval shorter than the timeout, otherwise the system reverts to its internal control strategy automatically. ModbusCloud writes registers at most once per minute, so keeping this 60-second window is borderline and not guaranteed.
Is it safe to write to set_active_power and set_work_state remotely?
Use write registers with care. Incorrect active power setpoints that exceed the BMS allowed charge or discharge power limits reported in registers 141 and 142 will be clamped by the system, but repeated out-of-range commands may trigger protection responses. Always read allowed_charge_power and allowed_discharge_power before writing power setpoints. Write to set_work_state only when you understand the state enumeration: commanding an incorrect state can suspend normal operation until manually cleared.
Want to see how it works?









