Understanding behavior of Controller Ess Fix Active Power


I have a system with a grid, an ESS and a PV plant. The ESS has a Controller Ess Fix Active Power, acting on it. The limit on the Controller is 10 kW. I am getting certain values in the UI and need some help in understanding certain behaviors.

When the battery is in charging state, when the PV provides power, it is fed into the battery and remaining goes into the grid. (See image)

However when the battery is in discharge mode, I had expected that the battery would provide 10kW, the PV 25 kW and both would feed into the grid. Instead, in addition to the PV and ESS, the grid also provides ~30kW and it is seen as consumption. (See Image 2)

My grid reads a value of ~30.6kW in the UI but when we measure it, it reads 35 kW. The 35kW can be taken as a reliable value. Could there be a reason why the OpenEMS meter reads a smaller value?

How do you set the MaxActivePower value? The channel is RO and value is set at 31kW.

Any advice would be very welcome.
Thank you! :slight_smile:

Hi dsen,


Can you list which exact components you configured (or maybe just take a screenshot of the “Anlagenprofil”). It appears that some parts of your system are simulated, and it would be important to know if you are using DC- or AC-connected PV (i.e. in a Hybrid-ESS).

There have been changes to Fix-Active-Power Controller 9 months ago. Since then it is possible to configure if the Set-Point should reflect the AC- or the DC-side of a Hybrid-ESS.


Which meter are you using? Grid meter values should be directly reflected in the UI (as long as you only have one Grid-Meter, no other simulations, etc.).

Consumption is always calculated (see → https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.core/src/io/openems/edge/core/sum/SumImpl.java#L375-L377), so if your grid-meter values are wrong, it is not surprising that Consumption is also wrong.


In which Component do you have a MaxActivePower channel? In your meter? Than this Channel has been dropped recently in Core.Sum: persist maximum ever values by sfeilmeier · Pull Request #2476 · OpenEMS/openems · GitHub. It was supposed to be the maximum ever measured value; this logic has been moved to “_sum” only.