mirror of https://github.com/rusefi/rusefi.git
parent
1b5e455188
commit
ef2fe9e33c
|
@ -39,7 +39,7 @@ static Map3D<TRACTION_CONTROL_ETB_DROP_SIZE, TRACTION_CONTROL_ETB_DROP_SIZE, int
|
||||||
/**
|
/**
|
||||||
* @return ignition timing angle advance before TDC
|
* @return ignition timing angle advance before TDC
|
||||||
*/
|
*/
|
||||||
static angle_t getRunningAdvance(int rpm, float engineLoad) {
|
angle_t getRunningAdvance(int rpm, float engineLoad) {
|
||||||
if (engineConfiguration->timingMode == TM_FIXED) {
|
if (engineConfiguration->timingMode == TM_FIXED) {
|
||||||
return engineConfiguration->fixedTiming;
|
return engineConfiguration->fixedTiming;
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ static angle_t getRunningAdvance(int rpm, float engineLoad) {
|
||||||
return advanceAngle;
|
return advanceAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
static angle_t getAdvanceCorrections(float engineLoad) {
|
angle_t getAdvanceCorrections(float engineLoad) {
|
||||||
auto iat = Sensor::get(SensorType::Iat);
|
auto iat = Sensor::get(SensorType::Iat);
|
||||||
|
|
||||||
if (!iat) {
|
if (!iat) {
|
||||||
|
@ -151,7 +151,7 @@ static angle_t getAdvanceCorrections(float engineLoad) {
|
||||||
/**
|
/**
|
||||||
* @return ignition timing angle advance before TDC for Cranking
|
* @return ignition timing angle advance before TDC for Cranking
|
||||||
*/
|
*/
|
||||||
static angle_t getCrankingAdvance(int rpm, float engineLoad) {
|
angle_t getCrankingAdvance(int rpm, float engineLoad) {
|
||||||
// get advance from the separate table for Cranking
|
// get advance from the separate table for Cranking
|
||||||
if (engineConfiguration->useSeparateAdvanceForCranking) {
|
if (engineConfiguration->useSeparateAdvanceForCranking) {
|
||||||
return interpolate2d(rpm, config->crankingAdvanceBins, config->crankingAdvance);
|
return interpolate2d(rpm, config->crankingAdvanceBins, config->crankingAdvance);
|
||||||
|
|
|
@ -15,6 +15,10 @@ angle_t getCylinderIgnitionTrim(size_t cylinderNumber, int rpm, float ignitionLo
|
||||||
* this method is used to build default advance map
|
* this method is used to build default advance map
|
||||||
*/
|
*/
|
||||||
float getInitialAdvance(int rpm, float map, float advanceMax);
|
float getInitialAdvance(int rpm, float map, float advanceMax);
|
||||||
|
// public only for unit tests
|
||||||
|
angle_t getCrankingAdvance(int rpm, float engineLoad);
|
||||||
|
angle_t getRunningAdvance(int rpm, float engineLoad);
|
||||||
|
angle_t getAdvanceCorrections(float engineLoad);
|
||||||
|
|
||||||
size_t getMultiSparkCount(int rpm);
|
size_t getMultiSparkCount(int rpm);
|
||||||
void initIgnitionAdvanceControl();
|
void initIgnitionAdvanceControl();
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
|
#include "defaults.h"
|
||||||
#include "spark_logic.h"
|
#include "spark_logic.h"
|
||||||
|
|
||||||
using ::testing::_;
|
using ::testing::_;
|
||||||
|
@ -148,3 +149,26 @@ TEST(ignition, CylinderTimingTrim) {
|
||||||
EXPECT_NEAR(engine->engineState.timingAdvance[2], unadjusted + 2, EPS4D);
|
EXPECT_NEAR(engine->engineState.timingAdvance[2], unadjusted + 2, EPS4D);
|
||||||
EXPECT_NEAR(engine->engineState.timingAdvance[3], unadjusted + 4, EPS4D);
|
EXPECT_NEAR(engine->engineState.timingAdvance[3], unadjusted + 4, EPS4D);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(ignition, negativeAdvance) {
|
||||||
|
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
|
||||||
|
|
||||||
|
int rpm = 0;
|
||||||
|
float load = 50;
|
||||||
|
|
||||||
|
engineConfiguration->fixedTiming = -13;
|
||||||
|
engineConfiguration->timingMode = TM_FIXED;
|
||||||
|
// run the ignition math
|
||||||
|
engine->periodicFastCallback();
|
||||||
|
|
||||||
|
eth.assertRpm(0);
|
||||||
|
|
||||||
|
ASSERT_EQ(DEFAULT_CRANKING_ANGLE, getCrankingAdvance(rpm, load));
|
||||||
|
ASSERT_EQ(-13, getRunningAdvance(rpm, load));
|
||||||
|
ASSERT_EQ(0, getAdvanceCorrections(load));
|
||||||
|
ASSERT_EQ(707, getAdvance(rpm, load));
|
||||||
|
|
||||||
|
ASSERT_NEAR(-603.72, engine->ignitionState.baseIgnitionAdvance, EPS4D);
|
||||||
|
ASSERT_NEAR(-603.72, engine->ignitionState.correctedIgnitionAdvance, EPS4D);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue