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.