mirror of https://github.com/FOME-Tech/fome-fw.git
Impl. useSeparateAdvanceForCranking & useAdvanceCorrectionsForCranking (#565)
This commit is contained in:
parent
5f96c95d03
commit
7c88a97edc
|
@ -119,22 +119,37 @@ static angle_t getAdvanceCorrections(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
|||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ignition timing angle advance before TDC for Cranking
|
||||
*/
|
||||
static angle_t getCrankingAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
// get advance from the separate table for Cranking
|
||||
if (CONFIG(useSeparateAdvanceForCranking)) {
|
||||
return interpolate2d("crankingAdvance", rpm, CONFIG(crankingAdvanceBins), CONFIG(crankingAdvance), CRANKING_ADVANCE_CURVE_SIZE);
|
||||
}
|
||||
|
||||
// Interpolate the cranking timing angle to the earlier running angle for faster engine start
|
||||
angle_t crankingToRunningTransitionAngle = getRunningAdvance(CONFIG(cranking.rpm), engineLoad PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
// interpolate not from zero, but starting from min. possible rpm detected
|
||||
if (rpm < minCrankingRpm || minCrankingRpm == 0)
|
||||
minCrankingRpm = rpm;
|
||||
return interpolateClamped(minCrankingRpm, CONFIG(crankingTimingAngle), CONFIG(cranking.rpm), crankingToRunningTransitionAngle, rpm);
|
||||
}
|
||||
|
||||
|
||||
angle_t getAdvance(int rpm, float engineLoad DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||
if (cisnan(engineLoad)) {
|
||||
return 0; // any error should already be reported
|
||||
}
|
||||
angle_t angle;
|
||||
if (ENGINE(rpmCalculator).isCranking(PASS_ENGINE_PARAMETER_SIGNATURE)) {
|
||||
// Interpolate the cranking timing angle to the earlier running angle for faster engine start
|
||||
angle_t crankingToRunningTransitionAngle = getRunningAdvance(CONFIG(cranking.rpm), engineLoad PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
// interpolate not from zero, but starting from min. possible rpm detected
|
||||
if (rpm < minCrankingRpm || minCrankingRpm == 0)
|
||||
minCrankingRpm = rpm;
|
||||
angle = interpolateClamped(minCrankingRpm, engineConfiguration->crankingTimingAngle, CONFIG(cranking.rpm), crankingToRunningTransitionAngle, rpm);
|
||||
angle = getCrankingAdvance(rpm, engineLoad PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
if (CONFIG(useAdvanceCorrectionsForCranking))
|
||||
angle += getAdvanceCorrections(rpm PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
} else {
|
||||
angle = getRunningAdvance(rpm, engineLoad PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
angle += getAdvanceCorrections(rpm PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
}
|
||||
angle += getAdvanceCorrections(rpm PASS_ENGINE_PARAMETER_SUFFIX);
|
||||
angle -= engineConfiguration->ignitionOffset;
|
||||
fixAngle(angle, "getAdvance");
|
||||
return angle;
|
||||
|
|
|
@ -517,6 +517,15 @@ static void setDefaultCrankingSettings(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
|||
config->crankingCycleCoef[7] = 0.5;
|
||||
config->crankingCycleBins[7] = 77;
|
||||
|
||||
engineConfiguration->crankingAdvance[0] = 0;
|
||||
engineConfiguration->crankingAdvanceBins[0] = 0;
|
||||
engineConfiguration->crankingAdvance[1] = 0;
|
||||
engineConfiguration->crankingAdvanceBins[0] = 200;
|
||||
engineConfiguration->crankingAdvance[2] = 0;
|
||||
engineConfiguration->crankingAdvanceBins[0] = 400;
|
||||
engineConfiguration->crankingAdvance[3] = 0;
|
||||
engineConfiguration->crankingAdvanceBins[0] = 1000;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sun Jan 28 22:17:49 EET 2018
|
||||
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Feb 01 08:34:19 EET 2018
|
||||
// begin
|
||||
#ifndef ENGINE_CONFIGURATION_GENERATED_H_
|
||||
#define ENGINE_CONFIGURATION_GENERATED_H_
|
||||
|
@ -1415,10 +1415,10 @@ typedef struct {
|
|||
bool useFixedBaroCorrFromMap : 1;
|
||||
/**
|
||||
offset 1484 bit 17 */
|
||||
bool unused_1484_bit_17 : 1;
|
||||
bool useSeparateAdvanceForCranking : 1;
|
||||
/**
|
||||
offset 1484 bit 18 */
|
||||
bool unused_1484_bit_18 : 1;
|
||||
bool useAdvanceCorrectionsForCranking : 1;
|
||||
/**
|
||||
offset 1484 bit 19 */
|
||||
bool unused_1484_bit_19 : 1;
|
||||
|
@ -2082,9 +2082,19 @@ typedef struct {
|
|||
*/
|
||||
brain_pin_e test557pin;
|
||||
/**
|
||||
* Optional timing advance table for Cranking (see useSeparateAdvanceForCranking)
|
||||
* offset 3312
|
||||
*/
|
||||
int unusedEnd[792];
|
||||
float crankingAdvanceBins[CRANKING_ADVANCE_CURVE_SIZE];
|
||||
/**
|
||||
* Optional timing advance table for Cranking (see useSeparateAdvanceForCranking)
|
||||
* offset 3328
|
||||
*/
|
||||
float crankingAdvance[CRANKING_ADVANCE_CURVE_SIZE];
|
||||
/**
|
||||
* offset 3344
|
||||
*/
|
||||
int unusedEnd[784];
|
||||
/** total size 6480*/
|
||||
} engine_configuration_s;
|
||||
|
||||
|
@ -2330,4 +2340,4 @@ typedef struct {
|
|||
|
||||
#endif
|
||||
// end
|
||||
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sun Jan 28 22:17:49 EET 2018
|
||||
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Feb 01 08:34:19 EET 2018
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#define CRANKING_CLT_IDLE_CURVE_SIZE 8
|
||||
#define CLT_CRANKING_CURVE_SIZE 8
|
||||
#define IDLE_ADVANCE_CURVE_SIZE 8
|
||||
#define CRANKING_ADVANCE_CURVE_SIZE 4
|
||||
#define ENGINE_NOISE_CURVE_SIZE 8
|
||||
#define CLT_TIMING_CURVE_SIZE 8
|
||||
#define IDLE_VE_CURVE_SIZE 8
|
||||
|
@ -958,10 +959,10 @@
|
|||
#define twoWireBatchIgnition_offset_hex 5cc
|
||||
#define useFixedBaroCorrFromMap_offset 1484
|
||||
#define useFixedBaroCorrFromMap_offset_hex 5cc
|
||||
#define unused_1484_bit_17_offset 1484
|
||||
#define unused_1484_bit_17_offset_hex 5cc
|
||||
#define unused_1484_bit_18_offset 1484
|
||||
#define unused_1484_bit_18_offset_hex 5cc
|
||||
#define useSeparateAdvanceForCranking_offset 1484
|
||||
#define useSeparateAdvanceForCranking_offset_hex 5cc
|
||||
#define useAdvanceCorrectionsForCranking_offset 1484
|
||||
#define useAdvanceCorrectionsForCranking_offset_hex 5cc
|
||||
#define unused_1484_bit_19_offset 1484
|
||||
#define unused_1484_bit_19_offset_hex 5cc
|
||||
#define unused_1484_bit_20_offset 1484
|
||||
|
@ -1530,8 +1531,12 @@
|
|||
#define flexFuelSensor_offset_hex ce8
|
||||
#define test557pin_offset 3308
|
||||
#define test557pin_offset_hex cec
|
||||
#define unusedEnd_offset 3312
|
||||
#define unusedEnd_offset_hex cf0
|
||||
#define crankingAdvanceBins_offset 3312
|
||||
#define crankingAdvanceBins_offset_hex cf0
|
||||
#define crankingAdvance_offset 3328
|
||||
#define crankingAdvance_offset_hex d00
|
||||
#define unusedEnd_offset 3344
|
||||
#define unusedEnd_offset_hex d10
|
||||
#define cltCrankingCorrBins_offset 6480
|
||||
#define cltCrankingCorrBins_offset_hex 1950
|
||||
#define cltCrankingCorr_offset 6512
|
||||
|
|
|
@ -70,6 +70,7 @@ struct_no_prefix engine_configuration_s
|
|||
#define CRANKING_CLT_IDLE_CURVE_SIZE 8
|
||||
#define CLT_CRANKING_CURVE_SIZE 8
|
||||
#define IDLE_ADVANCE_CURVE_SIZE 8
|
||||
#define CRANKING_ADVANCE_CURVE_SIZE 4
|
||||
|
||||
#define ENGINE_NOISE_CURVE_SIZE 8
|
||||
#define CLT_TIMING_CURVE_SIZE 8
|
||||
|
@ -683,8 +684,8 @@ custom idle_mode_e 4 bits, U32, @OFFSET@, [0:0], "Automatic", "Manual"
|
|||
bit useOnlyRisingEdgeForTrigger;+VR sensors are only precise on rising front\nenable trigger_only_front
|
||||
bit twoWireBatchIgnition;+This is needed if batched igniton (waster spark) and individual coil wiring
|
||||
bit useFixedBaroCorrFromMap
|
||||
bit unused_1484_bit_17
|
||||
bit unused_1484_bit_18
|
||||
bit useSeparateAdvanceForCranking
|
||||
bit useAdvanceCorrectionsForCranking
|
||||
bit unused_1484_bit_19
|
||||
bit unused_1484_bit_20
|
||||
bit unused_1484_bit_21
|
||||
|
@ -888,7 +889,11 @@ spi_device_e accelerometerSpiDevice;
|
|||
float[FSIO_CURVE_8] fsioCurve4;;"y", 1, 0, -999, 1000.0, 3
|
||||
brain_input_pin_e flexFuelSensor;
|
||||
brain_pin_e test557pin
|
||||
int[792] unusedEnd;
|
||||
|
||||
float[CRANKING_ADVANCE_CURVE_SIZE] crankingAdvanceBins;Optional timing advance table for Cranking (see useSeparateAdvanceForCranking);"RPM", 1, 0, 0.0, 18000, 2
|
||||
float[CRANKING_ADVANCE_CURVE_SIZE] crankingAdvance ;Optional timing advance table for Cranking (see useSeparateAdvanceForCranking);"deg", 1, 0, -20, 90, 2
|
||||
|
||||
int[784] unusedEnd;
|
||||
|
||||
|
||||
end_struct
|
||||
|
|
|
@ -466,6 +466,14 @@ fileVersion = { 20171101 }
|
|||
xBins = idleVeBins, RPMValue
|
||||
yBins = idleVe
|
||||
gauge = afr1Gauge
|
||||
|
||||
curve = crankingAdvanceCurve, "Cranking Advance Angle"
|
||||
columnLabel = "RPM", "degrees"
|
||||
xAxis = 0, 8000, 10
|
||||
yAxis = -100, 100, 10
|
||||
xBins = crankingAdvanceBins, RPMValue
|
||||
yBins = crankingAdvance
|
||||
gauge = RPMGauge
|
||||
|
||||
curve = warmupTargetAfrCurve, "CLT-based target AFR"
|
||||
columnLabel = "Coolant", "Correction"
|
||||
|
@ -968,6 +976,7 @@ gaugeCategory = Fuel Data
|
|||
subMenu = std_separator
|
||||
subMenu = ignitionTableTbl, "Ignition Advance Table"
|
||||
subMenu = idleAdvanceCurve, "Idle Ignition Advance Table", 0, {useSeparateAdvanceForIdle == 1}
|
||||
subMenu = crankingAdvanceCurve, "Cranking Ignition Advance Table", 0, {useSeparateAdvanceForCranking == 1}
|
||||
subMenu = ignitionIatCorrTableTbl, "Ignition Intake Air Temp correction"
|
||||
subMenu = baroCorrTbl, "Baro Correction", 0, {fuelAlgorithm == LM_SPEED_DENSITY}
|
||||
subMenu = std_separator
|
||||
|
@ -1818,6 +1827,8 @@ cmd_stop_engine = "w\x00\x99\x00\x00"
|
|||
|
||||
dialog = crankingIgnition, "Ignition"
|
||||
field = "Advance", crankingTimingAngle
|
||||
field = "Use separate Advance Table for cranking", useSeparateAdvanceForCranking
|
||||
field = "Use Advance Corrections for cranking", useAdvanceCorrectionsForCranking
|
||||
field = "Use fixed Dwell?", useConstantDwellDuringCranking
|
||||
field = "Fixed Dwell", ignitionDwellForCrankingMs, {useConstantDwellDuringCranking == 1}
|
||||
field = "Charge Angle", crankingChargeAngle, {useConstantDwellDuringCranking == 0}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.rusefi.config;
|
||||
|
||||
// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Jan 29 19:16:26 EST 2018
|
||||
// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Feb 01 08:34:19 EET 2018
|
||||
public class Fields {
|
||||
public static final int LE_COMMAND_LENGTH = 200;
|
||||
public static final int BLOCKING_FACTOR = 400;
|
||||
|
@ -15,6 +15,7 @@ public class Fields {
|
|||
public static final int CRANKING_CLT_IDLE_CURVE_SIZE = 8;
|
||||
public static final int CLT_CRANKING_CURVE_SIZE = 8;
|
||||
public static final int IDLE_ADVANCE_CURVE_SIZE = 8;
|
||||
public static final int CRANKING_ADVANCE_CURVE_SIZE = 4;
|
||||
public static final int ENGINE_NOISE_CURVE_SIZE = 8;
|
||||
public static final int CLT_TIMING_CURVE_SIZE = 8;
|
||||
public static final int IDLE_VE_CURVE_SIZE = 8;
|
||||
|
@ -648,8 +649,8 @@ public class Fields {
|
|||
public static final int useOnlyRisingEdgeForTrigger_offset = 1484;
|
||||
public static final int twoWireBatchIgnition_offset = 1484;
|
||||
public static final int useFixedBaroCorrFromMap_offset = 1484;
|
||||
public static final int unused_1484_bit_17_offset = 1484;
|
||||
public static final int unused_1484_bit_18_offset = 1484;
|
||||
public static final int useSeparateAdvanceForCranking_offset = 1484;
|
||||
public static final int useAdvanceCorrectionsForCranking_offset = 1484;
|
||||
public static final int unused_1484_bit_19_offset = 1484;
|
||||
public static final int unused_1484_bit_20_offset = 1484;
|
||||
public static final int unused_1484_bit_21_offset = 1484;
|
||||
|
@ -1016,7 +1017,9 @@ public class Fields {
|
|||
public static final int fsioCurve4_offset = 3272;
|
||||
public static final int flexFuelSensor_offset = 3304;
|
||||
public static final int test557pin_offset = 3308;
|
||||
public static final int unusedEnd_offset = 3312;
|
||||
public static final int crankingAdvanceBins_offset = 3312;
|
||||
public static final int crankingAdvance_offset = 3328;
|
||||
public static final int unusedEnd_offset = 3344;
|
||||
public static final int cltCrankingCorrBins_offset = 6480;
|
||||
public static final int cltCrankingCorrBins_offset_hex = 1950;
|
||||
public static final int cltCrankingCorr_offset = 6512;
|
||||
|
@ -1582,8 +1585,8 @@ public class Fields {
|
|||
public static final Field USEONLYRISINGEDGEFORTRIGGER = Field.create("USEONLYRISINGEDGEFORTRIGGER", 1484, FieldType.BIT, 14);
|
||||
public static final Field TWOWIREBATCHIGNITION = Field.create("TWOWIREBATCHIGNITION", 1484, FieldType.BIT, 15);
|
||||
public static final Field USEFIXEDBAROCORRFROMMAP = Field.create("USEFIXEDBAROCORRFROMMAP", 1484, FieldType.BIT, 16);
|
||||
public static final Field UNUSED_1484_BIT_17 = Field.create("UNUSED_1484_BIT_17", 1484, FieldType.BIT, 17);
|
||||
public static final Field UNUSED_1484_BIT_18 = Field.create("UNUSED_1484_BIT_18", 1484, FieldType.BIT, 18);
|
||||
public static final Field USESEPARATEADVANCEFORCRANKING = Field.create("USESEPARATEADVANCEFORCRANKING", 1484, FieldType.BIT, 17);
|
||||
public static final Field USEADVANCECORRECTIONSFORCRANKING = Field.create("USEADVANCECORRECTIONSFORCRANKING", 1484, FieldType.BIT, 18);
|
||||
public static final Field UNUSED_1484_BIT_19 = Field.create("UNUSED_1484_BIT_19", 1484, FieldType.BIT, 19);
|
||||
public static final Field UNUSED_1484_BIT_20 = Field.create("UNUSED_1484_BIT_20", 1484, FieldType.BIT, 20);
|
||||
public static final Field UNUSED_1484_BIT_21 = Field.create("UNUSED_1484_BIT_21", 1484, FieldType.BIT, 21);
|
||||
|
|
Loading…
Reference in New Issue