Fenecon Fenecon Commercial40 Modbus TCP template

Fenecon Commercial40

The Fenecon Commercial40 is a commercial-scale battery energy storage system managed by the FEMS energy management platform, built on OpenEMS. This Modbus TCP template reads system state, control mode, inverter state, and grid mode, along with battery pack voltage, current, power, state of charge, state of health, and cycle count. It also reads three-phase grid and inverter voltages and currents, BMS DC-DC work state, individual cell voltages for up to 224 cells, and per-cell and per-string temperature extremes. Write registers allow active power, reactive power, and work-state setpoints. Connecting through a ModbusCloud Gateway gives you a full picture of this system across every site.

Protocol
Modbus TCP
Connection
Ethernet, Modbus TCP
Registers
290, read and write
Brand
Fenecon
Last updated

Registers (290)

287 read, 3 write

NameUnitAccessAddress (Hidden until you enter your email)Function (hidden)Type (hidden)
system_stateRead
control_modeRead
battery_maintenance_stateRead
inverter_stateRead
grid_modeRead
protocol_versionRead
system_manufacturerRead
system_typeRead
battery_string_switch_stateRead
battery_voltageVRead
battery_currentARead
battery_powerWRead
original_active_charge_energyWhRead
original_active_discharge_energyWhRead
grid_active_powerWRead
reactive_powervarRead
apparent_powerVARead
current_l1ARead
current_l2ARead
current_l3ARead
voltage_l1VRead
voltage_l2VRead
voltage_l3VRead
frequencyHzRead
inverter_voltage_l1VRead
inverter_voltage_l2VRead
inverter_voltage_l3VRead
inverter_current_l1ARead
inverter_current_l2ARead
inverter_current_l3ARead
active_powerWRead
original_allowed_charge_powerWRead
original_allowed_discharge_powerWRead
max_apparent_powerWRead
ipm_temperature_l1°CRead
ipm_temperature_l2°CRead
ipm_temperature_l3°CRead
transformer_temperature_l2°CRead
set_work_stateWrite
set_active_powerWWrite
set_reactive_powerWWrite
bms_dcdc_work_stateRead
bms_dcdc_work_modeRead
cell_1_voltageVRead
cell_2_voltageVRead
cell_3_voltageVRead
cell_4_voltageVRead
cell_5_voltageVRead
cell_6_voltageVRead
cell_7_voltageVRead
cell_8_voltageVRead
cell_9_voltageVRead
cell_10_voltageVRead
cell_11_voltageVRead
cell_12_voltageVRead
cell_13_voltageVRead
cell_14_voltageVRead
cell_15_voltageVRead
cell_16_voltageVRead
cell_17_voltageVRead
cell_18_voltageVRead
cell_19_voltageVRead
cell_20_voltageVRead
cell_21_voltageVRead
cell_22_voltageVRead
cell_23_voltageVRead
cell_24_voltageVRead
cell_25_voltageVRead
cell_26_voltageVRead
cell_27_voltageVRead
cell_28_voltageVRead
cell_29_voltageVRead
cell_30_voltageVRead
cell_31_voltageVRead
cell_32_voltageVRead
cell_33_voltageVRead
cell_34_voltageVRead
cell_35_voltageVRead
cell_36_voltageVRead
cell_37_voltageVRead
cell_38_voltageVRead
cell_39_voltageVRead
cell_40_voltageVRead
cell_41_voltageVRead
cell_42_voltageVRead
cell_43_voltageVRead
cell_44_voltageVRead
cell_45_voltageVRead
cell_46_voltageVRead
cell_47_voltageVRead
cell_48_voltageVRead
cell_49_voltageVRead
cell_50_voltageVRead
cell_51_voltageVRead
cell_52_voltageVRead
cell_53_voltageVRead
cell_54_voltageVRead
cell_55_voltageVRead
cell_56_voltageVRead
cell_57_voltageVRead
cell_58_voltageVRead
cell_59_voltageVRead
cell_60_voltageVRead
cell_61_voltageVRead
cell_62_voltageVRead
cell_63_voltageVRead
cell_64_voltageVRead
cell_65_voltageVRead
cell_66_voltageVRead
cell_67_voltageVRead
cell_68_voltageVRead
cell_69_voltageVRead
cell_70_voltageVRead
cell_71_voltageVRead
cell_72_voltageVRead
cell_73_voltageVRead
cell_74_voltageVRead
cell_75_voltageVRead
cell_76_voltageVRead
cell_77_voltageVRead
cell_78_voltageVRead
cell_79_voltageVRead
cell_80_voltageVRead
cell_81_voltageVRead
cell_82_voltageVRead
cell_83_voltageVRead
cell_84_voltageVRead
cell_85_voltageVRead
cell_86_voltageVRead
cell_87_voltageVRead
cell_88_voltageVRead
cell_89_voltageVRead
cell_90_voltageVRead
cell_91_voltageVRead
cell_92_voltageVRead
cell_93_voltageVRead
cell_94_voltageVRead
cell_95_voltageVRead
cell_96_voltageVRead
cell_97_voltageVRead
cell_98_voltageVRead
cell_99_voltageVRead
cell_100_voltageVRead
cell_101_voltageVRead
cell_102_voltageVRead
cell_103_voltageVRead
cell_104_voltageVRead
cell_105_voltageVRead
cell_106_voltageVRead
cell_107_voltageVRead
cell_108_voltageVRead
cell_109_voltageVRead
cell_110_voltageVRead
cell_111_voltageVRead
cell_112_voltageVRead
cell_113_voltageVRead
cell_114_voltageVRead
cell_115_voltageVRead
cell_116_voltageVRead
cell_117_voltageVRead
cell_118_voltageVRead
cell_119_voltageVRead
cell_120_voltageVRead
cell_121_voltageVRead
cell_122_voltageVRead
cell_123_voltageVRead
cell_124_voltageVRead
cell_125_voltageVRead
cell_126_voltageVRead
cell_127_voltageVRead
cell_128_voltageVRead
cell_129_voltageVRead
cell_130_voltageVRead
cell_131_voltageVRead
cell_132_voltageVRead
cell_133_voltageVRead
cell_134_voltageVRead
cell_135_voltageVRead
cell_136_voltageVRead
cell_137_voltageVRead
cell_138_voltageVRead
cell_139_voltageVRead
cell_140_voltageVRead
cell_141_voltageVRead
cell_142_voltageVRead
cell_143_voltageVRead
cell_144_voltageVRead
cell_145_voltageVRead
cell_146_voltageVRead
cell_147_voltageVRead
cell_148_voltageVRead
cell_149_voltageVRead
cell_150_voltageVRead
cell_151_voltageVRead
cell_152_voltageVRead
cell_153_voltageVRead
cell_154_voltageVRead
cell_155_voltageVRead
cell_156_voltageVRead
cell_157_voltageVRead
cell_158_voltageVRead
cell_159_voltageVRead
cell_160_voltageVRead
cell_161_voltageVRead
cell_162_voltageVRead
cell_163_voltageVRead
cell_164_voltageVRead
cell_165_voltageVRead
cell_166_voltageVRead
cell_167_voltageVRead
cell_168_voltageVRead
cell_169_voltageVRead
cell_170_voltageVRead
cell_171_voltageVRead
cell_172_voltageVRead
cell_173_voltageVRead
cell_174_voltageVRead
cell_175_voltageVRead
cell_176_voltageVRead
cell_177_voltageVRead
cell_178_voltageVRead
cell_179_voltageVRead
cell_180_voltageVRead
cell_181_voltageVRead
cell_182_voltageVRead
cell_183_voltageVRead
cell_184_voltageVRead
cell_185_voltageVRead
cell_186_voltageVRead
cell_187_voltageVRead
cell_188_voltageVRead
cell_189_voltageVRead
cell_190_voltageVRead
cell_191_voltageVRead
cell_192_voltageVRead
cell_193_voltageVRead
cell_194_voltageVRead
cell_195_voltageVRead
cell_196_voltageVRead
cell_197_voltageVRead
cell_198_voltageVRead
cell_199_voltageVRead
cell_200_voltageVRead
cell_201_voltageVRead
cell_202_voltageVRead
cell_203_voltageVRead
cell_204_voltageVRead
cell_205_voltageVRead
cell_206_voltageVRead
cell_207_voltageVRead
cell_208_voltageVRead
cell_209_voltageVRead
cell_210_voltageVRead
cell_211_voltageVRead
cell_212_voltageVRead
cell_213_voltageVRead
cell_214_voltageVRead
cell_215_voltageVRead
cell_216_voltageVRead
cell_217_voltageVRead
cell_218_voltageVRead
cell_219_voltageVRead
cell_220_voltageVRead
cell_221_voltageVRead
cell_222_voltageVRead
cell_223_voltageVRead
cell_224_voltageVRead
battery_string_total_voltageVRead
battery_string_total_currentARead
soc%Read
battery_string_soh%Read
battery_string_avg_temperature°CRead
battery_string_charge_current_limitARead
battery_string_discharge_current_limitARead
battery_string_cyclescountRead
battery_string_charge_energyWhRead
battery_string_discharge_energyWhRead
battery_string_powerWRead
battery_string_max_cell_voltage_noRead
battery_string_max_cell_voltageVRead
battery_string_max_cell_voltage_temperature°CRead
battery_string_min_cell_voltage_noRead
battery_string_min_cell_voltageVRead
battery_string_min_cell_voltage_temperature°CRead
battery_string_max_cell_temperature_noRead
battery_string_max_cell_temperature°CRead
battery_string_max_cell_temperature_voltageVRead
battery_string_min_cell_temperature_noRead
battery_string_min_cell_temperature°CRead
battery_string_min_cell_temperature_voltageVRead

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.

Number of installations (optional)

Use cases

  • Monitor battery string state of charge and state of health to detect capacity degradation across seasons.
  • Track cumulative charge and discharge energy to verify contractual throughput targets at commercial sites.
  • Alert on individual cell voltage outliers across all 224 cell registers to catch early cell imbalance.
  • Compare three-phase grid currents on L1, L2, and L3 to identify persistent phase imbalance at the connection point.
  • Report inverter temperature and transformer temperature trends to schedule preventive maintenance before thermal shutdowns occur.

Installation

  1. Enable the FEMS Modbus TCP Read Access app on the Fenecon Commercial40 via the FEMS online monitoring portal under Settings, then confirm port 502 is reachable on the local network.

  2. If write control is needed, purchase and activate the FEMS Modbus TCP Write Access app using the license key in the FEMS App Center before attempting any setpoint registers.

  3. Connect the ModbusCloud Gateway to the same Ethernet network as the FEMS box, then add a new device in the ModbusCloud portal, import the Fenecon Commercial40 template, and set the unit ID to 255.

  4. Spot-check the connection by reading register 5122 (soc) and comparing the returned value against the live state of charge shown in the FEMS online monitoring dashboard.

Things to watch for

All registers return zero or no response. What is wrong?

The FEMS Modbus TCP Read Access app must be active on the system. Without it, the FEMS box does not open port 502 and no registers are served. Confirm the app is installed and enabled in the FEMS App Center, then verify the Gateway can reach the FEMS IP address on port 502 from the same network segment.

Register addresses are shifted by one compared to the template. Why?

Some Modbus tools default to a base address of 1 instead of 0. The FEMS Modbus TCP interface uses zero-based addressing. Set the base address or address offset to 0 in your client configuration. The ModbusCloud Gateway already handles this correctly when using the template.

Why do write setpoints stop being applied after about 60 seconds?

The FEMS Modbus TCP Write Access app includes a built-in watchdog. A write setpoint is held for 60 seconds by default. If no new write arrives within that window, the system reverts to autonomous control. To maintain a continuous setpoint, a fresh write command is needed 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. The timeout is configurable in the app settings.

Is it safe to write to set_active_power or set_work_state at any time?

Use write registers with care. Writing set_work_state can start or stop the inverter outside of normal operating sequences, which may trip protection mechanisms or affect warranty conditions. Always verify the current system_state and inverter_state before sending setpoints, and keep power setpoints within the bounds reported by original_allowed_charge_power and original_allowed_discharge_power.

Want to see how it works?

Electrician working in an open distribution board