refactored use solar power code
This commit is contained in:
parent
322f532ac0
commit
0a0488f73a
@ -172,21 +172,23 @@ int32_t PowerLimiterClass::calcPowerLimit(std::shared_ptr<InverterAbstract> inve
|
|||||||
return _lastRequestedPowerLimit;
|
return _lastRequestedPowerLimit;
|
||||||
}
|
}
|
||||||
|
|
||||||
float efficency = inverter->Statistics()->getChannelFieldValue(TYPE_AC, (ChannelNum_t) config.PowerLimiter_InverterChannelId, FLD_EFF);
|
// We should use Victron solar power only (corrected by efficiency factor)
|
||||||
int32_t victronChargePower = this->getDirectSolarPower();
|
if (consumeSolarPowerOnly) {
|
||||||
int32_t adjustedVictronChargePower = victronChargePower * (efficency > 0.0 ? (efficency / 100.0) : 1.0); // if inverter is off, use 1.0
|
float efficiency = inverter->Statistics()->getChannelFieldValue(TYPE_AC, (ChannelNum_t) config.PowerLimiter_InverterChannelId, FLD_EFF);
|
||||||
|
int32_t victronChargePower = this->getDirectSolarPower();
|
||||||
|
int32_t adjustedVictronChargePower = victronChargePower * (efficiency > 0.0 ? (efficiency / 100.0) : 1.0); // if inverter is off, use 1.0
|
||||||
|
|
||||||
MessageOutput.printf("[PowerLimiterClass::loop] victronChargePower: %d, efficiency: %.2f, consumeSolarPowerOnly: %s, powerConsumption: %d \r\n",
|
MessageOutput.printf("[PowerLimiterClass::loop] Consuming Solar Power Only -> victronChargePower: %d, efficiency: %.2f, powerConsumption: %d \r\n",
|
||||||
victronChargePower, efficency, consumeSolarPowerOnly ? "true" : "false", newPowerLimit);
|
victronChargePower, efficiency, newPowerLimit);
|
||||||
|
|
||||||
int32_t upperPowerLimit = config.PowerLimiter_UpperPowerLimit;
|
// Limit power to solar power only
|
||||||
if (consumeSolarPowerOnly && (upperPowerLimit > adjustedVictronChargePower)) {
|
if (adjustedVictronChargePower < newPowerLimit)
|
||||||
// Battery voltage too low, use Victron solar power (corrected by efficiency factor) only
|
newPowerLimit = adjustedVictronChargePower;
|
||||||
upperPowerLimit = adjustedVictronChargePower;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newPowerLimit > upperPowerLimit)
|
// Respect power limit
|
||||||
newPowerLimit = upperPowerLimit;
|
if (newPowerLimit > config.PowerLimiter_UpperPowerLimit)
|
||||||
|
newPowerLimit = config.PowerLimiter_UpperPowerLimit;
|
||||||
|
|
||||||
MessageOutput.printf("[PowerLimiterClass::loop] newPowerLimit: %d\r\n", newPowerLimit);
|
MessageOutput.printf("[PowerLimiterClass::loop] newPowerLimit: %d\r\n", newPowerLimit);
|
||||||
return newPowerLimit;
|
return newPowerLimit;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user