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.

1 Like

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.