ManagedAsymmetricEss Coefficient for [ess0,L1,ACTIVE] was not found

Hello Everybody,

I am trying to develop a ManagedAsymmetricEss component for a storage system and have mapped the SET_ACTIVE_POWER_L1_EQUALS, SET_ACTIVE_POWER_L2_EQUALS and SET_ACTIVE_POWER_L3_EQUALS channels to corresponding Modbus (SunSpec) registers.

It compiles and to test the functionality, I try to use the component Controller Fix Active Power Asymmetric in the Felix console. I see the following error in the edge cli:

2023-04-03T14:22:03,036 [re.Cycle] ERROR [r.solver.CalculatePowerExtrema] Coefficient for [ess0,L1,ACTIVE] was not found. Ess-Power is not (yet) fully initialized.
2023-04-03T14:22:03,036 [re.Cycle] INFO  [enems.edge.ess.power.api.Power] [ctrlFixActivePower0] reducing requested [100 W] to maximum power [0 W] for [ess0PL1]
2023-04-03T14:22:03,037 [re.Cycle] ERROR [r.solver.CalculatePowerExtrema] Coefficient for [ess0,L1,ACTIVE] was not found. Ess-Power is not (yet) fully initialized.
2023-04-03T14:22:03,037 [re.Cycle] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] Error in Controller [ctrlFixActivePower0]: Coefficient for [ess0,L1,ACTIVE] was not found. Ess-Power is not (yet) fully initialized.

Can someone here guide me in the right direction?

Thanks.
Best regards,
Waqar Rashid

Hi Waqar,

You do not write into the SET_ACTIVE_POWER_L1_EQUALS,… channels directly if you implement an Ess. They are write only and used only by controllers. What you have to do is to implement the applyPower()-method. See this post: ESS that can talk with OpenEMS using Modbus TCP - #4 by stefan.feilmeier.

Best regards,
Thomas

2 Likes

Thanks for this correction.

I still see the following error:

2023-04-04T12:53:19,578 [re.Cycle] ERROR [r.solver.CalculatePowerExtrema] Coefficient for [ess0,L1,REACTIVE] was not found. Ess-Power is not (yet) fully initialized.
2023-04-04T12:53:19,578 [re.Cycle] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] Error in Controller [ctrlFixReactivePower0]: Coefficient for [ess0,L1,REACTIVE] was not found. Ess-Power is not (yet) fully initialized.

By going through the code its something related to Power but I do have a power field defined and getPower method return it. May be there is something missing in the component but I can’t seem to find it.

   @Reference
    private Power power;

    @Override
    public Power getPower() {
        return this.power;
    }

Hi Waqar,

I have to guess, because I have not implemented a true AsymmetricEss in a long time, but I believe it should be sufficient to create an explicit ESS Power Component instance using Apache Felix with symmetricMode = false:

Sorry I know, this behaviour is not very obvious. The Power solver internally uses a linear equation system and creates coefficients for each inverter active/reactive power. The coefficients for each phase are only generated, when symmetricMode is deactivated:

Code sources:

Regards,
Stefan

1 Like

Thanks Stefan. After disabling the symmetric mode in ESS Power, I was also getting a similar error and the reason was that I had somehow forgotten to add ManagedSymmetricEss in implementation. It was like shown below.

public class CommercialEssImpl extends AbstractOpenemsModbusComponent implements CommercialEss, ManagedAsymmetricEss, AsymmetricEss, SymmetricEss, ModbusComponent, OpenemsComponent.

Hmm… thanks for the info and I am glad it finally worked. There is clearly too much magic happening in the code and the existing error messages do not help at all. We will have to tackle that.