moving state into specific class (#4520)

* moving state into specific class

* moving state into specific class
This commit is contained in:
rusefillc 2022-09-02 14:38:03 -04:00 committed by GitHub
parent f6ae78e72c
commit 25f4ebbc01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 15 additions and 24 deletions

View File

@ -517,11 +517,11 @@ static void updateThrottles() {
static void updateLambda() { static void updateLambda() {
float lambdaValue = Sensor::getOrZero(SensorType::Lambda1); float lambdaValue = Sensor::getOrZero(SensorType::Lambda1);
engine->outputChannels.lambdaValue = lambdaValue; engine->outputChannels.lambdaValue = lambdaValue;
engine->outputChannels.AFRValue = lambdaValue * engine->engineState.stoichiometricRatio; engine->outputChannels.AFRValue = lambdaValue * engine->fuelComputer->stoichiometricRatio;
float lambda2Value = Sensor::getOrZero(SensorType::Lambda2); float lambda2Value = Sensor::getOrZero(SensorType::Lambda2);
engine->outputChannels.lambdaValue2 = lambda2Value; engine->outputChannels.lambdaValue2 = lambda2Value;
engine->outputChannels.AFRValue2 = lambda2Value * engine->engineState.stoichiometricRatio; engine->outputChannels.AFRValue2 = lambda2Value * engine->fuelComputer->stoichiometricRatio;
} }
static void updateFuelSensors() { static void updateFuelSensors() {
@ -635,7 +635,7 @@ static void updateFuelLoads() {
engine->outputChannels.fuelingLoad = getFuelingLoad(); engine->outputChannels.fuelingLoad = getFuelingLoad();
engine->outputChannels.ignitionLoad = getIgnitionLoad(); engine->outputChannels.ignitionLoad = getIgnitionLoad();
engine->outputChannels.veTableYAxis = engine->engineState.currentVeLoad; engine->outputChannels.veTableYAxis = engine->engineState.currentVeLoad;
engine->outputChannels.afrTableYAxis = engine->engineState.currentAfrLoad; engine->outputChannels.afrTableYAxis = engine->fuelComputer->currentAfrLoad;
} }
static void updateFuelResults() { static void updateFuelResults() {
@ -660,8 +660,7 @@ static void updateFuelInfo() {
engine->outputChannels.injectionOffset = engine->engineState.injectionOffset; engine->outputChannels.injectionOffset = engine->engineState.injectionOffset;
engine->outputChannels.veValue = engine->engineState.currentVe; engine->outputChannels.veValue = engine->engineState.currentVe;
engine->outputChannels.currentTargetAfr = engine->engineState.targetAFR; engine->outputChannels.currentTargetAfr = engine->fuelComputer->targetAFR;
engine->outputChannels.targetLambda = engine->engineState.targetLambda;
engine->outputChannels.crankingFuelMs = engine->engineState.cranking.fuel; engine->outputChannels.crankingFuelMs = engine->engineState.cranking.fuel;
} }

View File

@ -51,11 +51,6 @@ public:
float currentVe = 0; float currentVe = 0;
float currentVeLoad = 0; float currentVeLoad = 0;
// fuel computer
float currentAfrLoad = 0;
float targetLambda = 0.0f;
float stoichiometricRatio = 0.0f;
// fuel computer end
float fuelingLoad = 0; float fuelingLoad = 0;
float ignitionLoad = 0; float ignitionLoad = 0;

View File

@ -34,10 +34,6 @@ end_struct
speed_density_s sd; speed_density_s sd;
float targetAFR
float engineCycleDurationMs; float engineCycleDurationMs;

View File

@ -9,10 +9,10 @@ mass_t FuelComputerBase::getCycleFuel(mass_t airmass, int rpm, float load) {
float lambda = getTargetLambda(rpm, load); float lambda = getTargetLambda(rpm, load);
float afr = stoich * lambda; float afr = stoich * lambda;
engine->engineState.currentAfrLoad = load; currentAfrLoad = load;
engine->engineState.targetLambda = lambda; targetLambda = lambda;
engine->engineState.targetAFR = afr; targetAFR = afr;
engine->engineState.stoichiometricRatio = stoich; stoichiometricRatio = stoich;
return airmass / afr; return airmass / afr;
} }

View File

@ -3,6 +3,6 @@ struct_no_prefix fuel_computer_s
float currentAfrLoad float currentAfrLoad
float targetLambda float targetLambda
float stoichiometricRatio float stoichiometricRatio
float targetAFR_t float targetAFR
end_struct end_struct

View File

@ -1239,8 +1239,9 @@ static void populateFrame(Aim5f7& msg) {
// We don't handle wheel speed, just set to 0? // We don't handle wheel speed, just set to 0?
msg.LambdaErr1 = 0; msg.LambdaErr1 = 0;
msg.LambdaErr2 = 0; msg.LambdaErr2 = 0;
msg.LambdaTarget1 = engine->engineState.targetLambda; // both targets are the same for now
msg.LambdaTarget2 = engine->engineState.targetLambda; msg.LambdaTarget1 = engine->fuelComputer->targetLambda;
msg.LambdaTarget2 = engine->fuelComputer->targetLambda;
} }
void canDashboardAim(CanCycle cycle) { void canDashboardAim(CanCycle cycle) {

View File

@ -53,7 +53,7 @@ float ClosedLoopFuelCellImpl::getLambdaError() const {
return 0; return 0;
} }
return lambda.Value - engine->engineState.targetLambda; return lambda.Value - engine->fuelComputer->targetLambda;
} }
#define MAX_ADJ (0.25f) #define MAX_ADJ (0.25f)

View File

@ -15,8 +15,8 @@ TEST(misc, testIgnitionPlanning) {
printf("*************************************************** testIgnitionPlanning\r\n"); printf("*************************************************** testIgnitionPlanning\r\n");
EngineTestHelper eth(FORD_ESCORT_GT); EngineTestHelper eth(FORD_ESCORT_GT);
eth.engine.periodicFastCallback(); engine->periodicFastCallback();
assertEqualsM("testIgnitionPlanning_AFR", 13.5, eth.engine.engineState.targetAFR); assertEqualsM("testIgnitionPlanning_AFR", 13.5, engine->fuelComputer->targetAFR);
ASSERT_EQ(IM_BATCH, engineConfiguration->injectionMode); ASSERT_EQ(IM_BATCH, engineConfiguration->injectionMode);
} }