limiting the artificialy increased power limit to inverter maximum power
This commit is contained in:
parent
bd57d0f19a
commit
cd4a327671
@ -226,13 +226,16 @@ void PowerLimiterClass::setNewPowerLimit(std::shared_ptr<InverterAbstract> inver
|
|||||||
|
|
||||||
std::list<ChannelNum_t> dcChnls = inverter->Statistics()->getChannelsByType(TYPE_DC);
|
std::list<ChannelNum_t> dcChnls = inverter->Statistics()->getChannelsByType(TYPE_DC);
|
||||||
int dcProdChnls = 0, dcTotalChnls = dcChnls.size();
|
int dcProdChnls = 0, dcTotalChnls = dcChnls.size();
|
||||||
for (auto& c : dcChnls){
|
for (auto& c : dcChnls) {
|
||||||
if (inverter->Statistics()->getChannelFieldValue(TYPE_DC, c, FLD_PDC) > 0)
|
if (inverter->Statistics()->getChannelFieldValue(TYPE_DC, c, FLD_PDC) > 0) {
|
||||||
dcProdChnls++;
|
dcProdChnls++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
int32_t effPowerLimit = round(newPowerLimit * static_cast<float>(dcTotalChnls) / dcProdChnls);
|
int32_t effPowerLimit = round(newPowerLimit * static_cast<float>(dcTotalChnls) / dcProdChnls);
|
||||||
if (effPowerLimit > config.PowerLimiter_UpperPowerLimit)
|
uint16_t inverterMaxPower = inverter->DevInfo()->getMaxPower();
|
||||||
effPowerLimit = config.PowerLimiter_UpperPowerLimit;
|
if (effPowerLimit > inverterMaxPower) {
|
||||||
|
effPowerLimit = inverterMaxPower;
|
||||||
|
}
|
||||||
|
|
||||||
inverter->sendActivePowerControlRequest(Hoymiles.getRadio(), effPowerLimit, PowerLimitControlType::AbsolutNonPersistent);
|
inverter->sendActivePowerControlRequest(Hoymiles.getRadio(), effPowerLimit, PowerLimitControlType::AbsolutNonPersistent);
|
||||||
_lastRequestedPowerLimit = newPowerLimit;
|
_lastRequestedPowerLimit = newPowerLimit;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user