mirror of https://github.com/rusefi/rusefi-1.git
consume
This commit is contained in:
parent
1d0a244fa4
commit
1f64754b57
|
@ -290,7 +290,6 @@ static void showFuelInfo2(float rpm, float engineLoad) {
|
||||||
|
|
||||||
float magicAir = SpeedDensityBase::getAirmassImpl(1, 100, convertCelsiusToKelvin(20) PASS_ENGINE_PARAMETER_SUFFIX);
|
float magicAir = SpeedDensityBase::getAirmassImpl(1, 100, convertCelsiusToKelvin(20) PASS_ENGINE_PARAMETER_SUFFIX);
|
||||||
|
|
||||||
scheduleMsg(&logger, "SD magic fuel %.2f", getInjectionDurationForAirmass(magicAir, 14.7 PASS_ENGINE_PARAMETER_SUFFIX));
|
|
||||||
scheduleMsg(&logger, "inj flow %.2fcc/min displacement %.2fL", engineConfiguration->injector.flow,
|
scheduleMsg(&logger, "inj flow %.2fcc/min displacement %.2fL", engineConfiguration->injector.flow,
|
||||||
engineConfiguration->specs.displacement);
|
engineConfiguration->specs.displacement);
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "maf_airmass.h"
|
#include "maf_airmass.h"
|
||||||
#include "speed_density_airmass.h"
|
#include "speed_density_airmass.h"
|
||||||
#include "fuel_math.h"
|
#include "fuel_math.h"
|
||||||
|
#include "fuel_computer.h"
|
||||||
#include "interpolation.h"
|
#include "interpolation.h"
|
||||||
#include "engine_configuration.h"
|
#include "engine_configuration.h"
|
||||||
#include "allsensors.h"
|
#include "allsensors.h"
|
||||||
|
@ -163,10 +164,10 @@ constexpr float convertToGramsPerSecond(float ccPerMinute) {
|
||||||
/**
|
/**
|
||||||
* @return per cylinder injection time, in seconds
|
* @return per cylinder injection time, in seconds
|
||||||
*/
|
*/
|
||||||
float getInjectionDurationForAirmass(float airMass, float afr DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
static float getInjectionDurationForFuelMass(float fuelMass DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
float gPerSec = convertToGramsPerSecond(CONFIG(injector.flow));
|
float gPerSec = convertToGramsPerSecond(CONFIG(injector.flow));
|
||||||
|
|
||||||
return airMass / (afr * gPerSec);
|
return fuelMass / gPerSec;
|
||||||
}
|
}
|
||||||
|
|
||||||
static SpeedDensityAirmass sdAirmass(veMap);
|
static SpeedDensityAirmass sdAirmass(veMap);
|
||||||
|
@ -185,6 +186,8 @@ AirmassModelBase* getAirmassModel(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static FuelComputer fuelComputer(afrMap);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* per-cylinder fuel amount
|
* per-cylinder fuel amount
|
||||||
* todo: rename this method since it's now base+TPSaccel
|
* todo: rename this method since it's now base+TPSaccel
|
||||||
|
@ -202,17 +205,14 @@ floatms_t getBaseFuel(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
|
|
||||||
auto airmass = model->getAirmass(rpm);
|
auto airmass = model->getAirmass(rpm);
|
||||||
|
|
||||||
// The airmass mode will tell us how to look up AFR - use the provided Y axis value
|
|
||||||
float targetAfr = afrMap.getValue(rpm, airmass.EngineLoadPercent);
|
|
||||||
|
|
||||||
// Plop some state for others to read
|
// Plop some state for others to read
|
||||||
ENGINE(engineState.targetAFR) = targetAfr;
|
|
||||||
ENGINE(engineState.sd.airMassInOneCylinder) = airmass.CylinderAirmass;
|
ENGINE(engineState.sd.airMassInOneCylinder) = airmass.CylinderAirmass;
|
||||||
ENGINE(engineState.fuelingLoad) = airmass.EngineLoadPercent;
|
ENGINE(engineState.fuelingLoad) = airmass.EngineLoadPercent;
|
||||||
// TODO: independently selectable ignition load mode
|
// TODO: independently selectable ignition load mode
|
||||||
ENGINE(engineState.ignitionLoad) = airmass.EngineLoadPercent;
|
ENGINE(engineState.ignitionLoad) = airmass.EngineLoadPercent;
|
||||||
|
|
||||||
float baseFuel = getInjectionDurationForAirmass(airmass.CylinderAirmass, targetAfr PASS_ENGINE_PARAMETER_SUFFIX) * 1000;
|
float baseFuelMass = fuelComputer.getCycleFuel(airmass.CylinderAirmass, rpm, airmass.EngineLoadPercent);
|
||||||
|
float baseFuel = getInjectionDurationForFuelMass(baseFuelMass PASS_ENGINE_PARAMETER_SUFFIX) * 1000;
|
||||||
efiAssert(CUSTOM_ERR_ASSERT, !cisnan(baseFuel), "NaN baseFuel", 0);
|
efiAssert(CUSTOM_ERR_ASSERT, !cisnan(baseFuel), "NaN baseFuel", 0);
|
||||||
|
|
||||||
engine->engineState.baseFuel = baseFuel;
|
engine->engineState.baseFuel = baseFuel;
|
||||||
|
|
|
@ -39,4 +39,3 @@ float getStandardAirCharge(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
||||||
|
|
||||||
// convert injection duration (Ms/Nt) to fuel rate (L/h)
|
// convert injection duration (Ms/Nt) to fuel rate (L/h)
|
||||||
float getFuelRate(floatms_t totalInjDuration, efitick_t timePeriod DECLARE_ENGINE_PARAMETER_SUFFIX);
|
float getFuelRate(floatms_t totalInjDuration, efitick_t timePeriod DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||||
float getInjectionDurationForAirmass(float airMass, float afr DECLARE_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
/**
|
|
||||||
* @file test_speed_density.cpp
|
|
||||||
*
|
|
||||||
* @date Jun 26, 2014
|
|
||||||
* @author Andrey Belomutskiy, (c) 2012-2020
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "engine_test_helper.h"
|
|
||||||
#include "speed_density.h"
|
|
||||||
#include "fuel_math.h"
|
|
||||||
|
|
||||||
TEST(big, testSpeedDensity) {
|
|
||||||
printf("*************************************************** testSpeedDensity\r\n");
|
|
||||||
WITH_ENGINE_TEST_HELPER(FORD_INLINE_6_1995);
|
|
||||||
|
|
||||||
engineConfiguration->trigger.customTotalToothCount = 8;
|
|
||||||
eth.applyTriggerWaveform();
|
|
||||||
|
|
||||||
eth.fireTriggerEvents(36);
|
|
||||||
ASSERT_EQ( 1500, GET_RPM()) << "RPM";
|
|
||||||
|
|
||||||
// 427 cubic inches, that's a LOT of engine
|
|
||||||
engineConfiguration->specs.displacement = 6.99728;
|
|
||||||
engineConfiguration->specs.cylindersCount = 8;
|
|
||||||
|
|
||||||
engineConfiguration->injector.flow = gramm_second_to_cc_minute(5.303);
|
|
||||||
|
|
||||||
float airMass = SpeedDensityBase::getAirmassImpl(0.92, 98, 293.16 PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
|
|
||||||
ASSERT_FLOAT_EQ(0.9371106624, airMass);
|
|
||||||
|
|
||||||
// 0.01414 sec or 14.14 ms
|
|
||||||
EXPECT_NEAR(0.014137, getInjectionDurationForAirmass(airMass, 12.5 PASS_ENGINE_PARAMETER_SUFFIX), EPS4D);
|
|
||||||
}
|
|
|
@ -29,7 +29,6 @@ TESTS_SRC_CPP = \
|
||||||
tests/test_one_cylinder_logic.cpp \
|
tests/test_one_cylinder_logic.cpp \
|
||||||
tests/test_pwm_generator.cpp \
|
tests/test_pwm_generator.cpp \
|
||||||
tests/test_logic_expression.cpp \
|
tests/test_logic_expression.cpp \
|
||||||
tests/test_speed_density.cpp \
|
|
||||||
tests/test_signal_executor.cpp \
|
tests/test_signal_executor.cpp \
|
||||||
tests/test_cpp_memory_layout.cpp \
|
tests/test_cpp_memory_layout.cpp \
|
||||||
tests/test_sensors.cpp \
|
tests/test_sensors.cpp \
|
||||||
|
|
Loading…
Reference in New Issue