better constraint validation

This commit is contained in:
rusefi 2017-04-12 18:38:18 -04:00
parent 58b943d3b3
commit d3a5f9b98f
2 changed files with 13 additions and 6 deletions

View File

@ -75,7 +75,9 @@ void Engine::updateSlowSensors(DECLARE_ENGINE_PARAMETER_F) {
}
sensors.vBatt = hasVBatt(PASS_ENGINE_PARAMETER_F) ? getVBatt(PASS_ENGINE_PARAMETER_F) : 12;
engineState.injectorLag = getInjectorLag(sensors.vBatt PASS_ENGINE_PARAMETER);
floatms_t injectorLag = getInjectorLag(sensors.vBatt PASS_ENGINE_PARAMETER);
efiAssertVoid(!cisnan(injectorLag), "NaN injectorLag");
engineState.injectorLag = injectorLag;
}
void Engine::onTriggerEvent(efitick_t nowNt) {

View File

@ -72,7 +72,9 @@ float getRealMafFuel(float airSpeed, int rpm DECLARE_ENGINE_PARAMETER_S) {
// todo: rename this method since it's now base+TPSaccel
floatms_t getBaseFuel(int rpm DECLARE_ENGINE_PARAMETER_S) {
ENGINE(engineState.tpsAccelEnrich) = ENGINE(tpsAccelEnrichment.getTpsEnrichment(PASS_ENGINE_PARAMETER_F));
floatms_t tpsAccelEnrich = ENGINE(tpsAccelEnrichment.getTpsEnrichment(PASS_ENGINE_PARAMETER_F));
efiAssert(!cisnan(tpsAccelEnrich), "NaN tpsAccelEnrich", 0);
ENGINE(engineState.tpsAccelEnrich) = tpsAccelEnrich;
if (CONFIG(fuelAlgorithm) == LM_SPEED_DENSITY) {
engine->engineState.baseFuel = getSpeedDensityFuel(PASS_ENGINE_PARAMETER_F);
@ -83,7 +85,7 @@ floatms_t getBaseFuel(int rpm DECLARE_ENGINE_PARAMETER_S) {
engine->engineState.baseFuel = engine->engineState.baseTableFuel;
}
return ENGINE(engineState.tpsAccelEnrich) + ENGINE(engineState.baseFuel);
return tpsAccelEnrich + ENGINE(engineState.baseFuel);
}
angle_t getinjectionOffset(float rpm DECLARE_ENGINE_PARAMETER_S) {
@ -126,13 +128,16 @@ percent_t getInjectorDutyCycle(int rpm DECLARE_ENGINE_PARAMETER_S) {
floatms_t getInjectionDuration(int rpm DECLARE_ENGINE_PARAMETER_S) {
float theoreticalInjectionLength;
if (isCrankingR(rpm)) {
int numberOfCylinders = getNumberOfInjections(engineConfiguration->crankingInjectionMode PASS_ENGINE_PARAMETER);
efiAssert(numberOfCylinders > 0, "cranking numberOfCylinders", 0);
theoreticalInjectionLength = getCrankingFuel(PASS_ENGINE_PARAMETER_F)
/ getNumberOfInjections(engineConfiguration->crankingInjectionMode PASS_ENGINE_PARAMETER);
/ numberOfCylinders;
} else {
floatms_t baseFuel = getBaseFuel(rpm PASS_ENGINE_PARAMETER);
floatms_t fuelPerCycle = getRunningFuel(baseFuel, rpm PASS_ENGINE_PARAMETER);
theoreticalInjectionLength = fuelPerCycle
/ getNumberOfInjections(engineConfiguration->injectionMode PASS_ENGINE_PARAMETER);
int numberOfCylinders = getNumberOfInjections(engineConfiguration->injectionMode PASS_ENGINE_PARAMETER);
efiAssert(numberOfCylinders > 0, "running numberOfCylinders", 0);
theoreticalInjectionLength = fuelPerCycle / numberOfCylinders;
#if EFI_PRINTF_FUEL_DETAILS || defined(__DOXYGEN__)
printf("baseFuel=%f fuelPerCycle=%f theoreticalInjectionLength=%f\t\n",
baseFuel, fuelPerCycle, theoreticalInjectionLength);