Add I-term bounds for Alternator Control fix #6988

This commit is contained in:
rusefillc 2024-10-20 00:24:23 -04:00
parent f92c4e05cb
commit d26b6e662d
3 changed files with 11 additions and 0 deletions

View File

@ -32,6 +32,7 @@ Release template (copy/paste this for new release):
- Support wasted spark on odd cylinder count 4-stroke engines. Improves startup and allows running without a cam sensor!
- CLT/IAT boost duty/target compensation #6424
- DFCO MAP condition hysteresis #6915
- Add I-term bounds for Alternator Control #6988
### Fixed
- Removed questionable MAP sampling trigger index option

View File

@ -60,6 +60,9 @@ expected<percent_t> AlternatorController::getOpenLoop(float target) {
}
expected<percent_t> AlternatorController::getClosedLoop(float targetVoltage, float vBattVoltage) {
alternatorPid.iTermMin = engineConfiguration->alternator_iTermMin;
alternatorPid.iTermMax = engineConfiguration->alternator_iTermMax;
percent_t altDuty = alternatorPid.getOutput(targetVoltage, vBattVoltage, FAST_CALLBACK_PERIOD_MS / 1000.0f);
// this block could be executed even in on/off alternator control mode

View File

@ -533,6 +533,13 @@ bool validateConfigOnStartUpOrBurn() {
engineConfiguration->mapExpAverageAlpha = 1;
}
if (engineConfiguration->alternator_iTermMin == 0) {
engineConfiguration->alternator_iTermMin = -1000;
}
if (engineConfiguration->alternator_iTermMax == 0) {
engineConfiguration->alternator_iTermMax = 1000;
}
ensureArrayIsAscending("Injector deadtime", engineConfiguration->injector.battLagCorrBins);
#if EFI_ENGINE_CONTROL