limiting the artificialy increased power limit to inverter maximum power

This commit is contained in:
qubeck 2023-04-04 17:11:59 +02:00
parent bd57d0f19a
commit cd4a327671

View File

@ -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;