Live Data: more Idle & ETB data points!
This commit is contained in:
parent
abf2406621
commit
ebcb0cdf4c
|
@ -90,6 +90,16 @@
|
||||||
|
|
||||||
#if EFI_TUNER_STUDIO
|
#if EFI_TUNER_STUDIO
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef EFI_IDLE_CONTROL
|
||||||
|
#if EFI_IDLE_INCREMENTAL_PID_CIC
|
||||||
|
extern PidCic idlePid;
|
||||||
|
#else
|
||||||
|
extern Pid idlePid;
|
||||||
|
#endif /* EFI_IDLE_INCREMENTAL_PID_CIC */
|
||||||
|
#endif /* EFI_IDLE_CONTROL */
|
||||||
|
|
||||||
|
|
||||||
EXTERN_ENGINE
|
EXTERN_ENGINE
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -268,7 +278,8 @@ static const void * getStructAddr(int structId) {
|
||||||
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
|
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
|
||||||
|
|
||||||
#ifndef EFI_IDLE_CONTROL
|
#ifndef EFI_IDLE_CONTROL
|
||||||
// todo case LDS_IDLE_PID_STATE_INDEX:
|
case LDS_IDLE_PID_STATE_INDEX:
|
||||||
|
return static_cast<pid_state_s*>(&idlePid);
|
||||||
#endif /* EFI_IDLE_CONTROL */
|
#endif /* EFI_IDLE_CONTROL */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -171,8 +171,6 @@ static percent_t currentEtbDuty;
|
||||||
|
|
||||||
class EtbController : public PeriodicTimerController {
|
class EtbController : public PeriodicTimerController {
|
||||||
|
|
||||||
percent_t feedForward = 0;
|
|
||||||
|
|
||||||
int getPeriodMs() override {
|
int getPeriodMs() override {
|
||||||
return GET_PERIOD_LIMITED(&engineConfiguration->etb);
|
return GET_PERIOD_LIMITED(&engineConfiguration->etb);
|
||||||
}
|
}
|
||||||
|
@ -182,7 +180,7 @@ class EtbController : public PeriodicTimerController {
|
||||||
if (engineConfiguration->debugMode == DBG_ELECTRONIC_THROTTLE_PID) {
|
if (engineConfiguration->debugMode == DBG_ELECTRONIC_THROTTLE_PID) {
|
||||||
#if EFI_TUNER_STUDIO
|
#if EFI_TUNER_STUDIO
|
||||||
etbPid.postState(&tsOutputChannels);
|
etbPid.postState(&tsOutputChannels);
|
||||||
tsOutputChannels.debugIntField5 = feedForward;
|
tsOutputChannels.debugIntField5 = engine->engineState.etbFeedForward;
|
||||||
#endif /* EFI_TUNER_STUDIO */
|
#endif /* EFI_TUNER_STUDIO */
|
||||||
} else if (engineConfiguration->debugMode == DBG_ELECTRONIC_THROTTLE_EXTRA) {
|
} else if (engineConfiguration->debugMode == DBG_ELECTRONIC_THROTTLE_EXTRA) {
|
||||||
#if EFI_TUNER_STUDIO
|
#if EFI_TUNER_STUDIO
|
||||||
|
@ -242,12 +240,12 @@ class EtbController : public PeriodicTimerController {
|
||||||
#endif /* EFI_TUNER_STUDIO */
|
#endif /* EFI_TUNER_STUDIO */
|
||||||
}
|
}
|
||||||
|
|
||||||
feedForward = interpolate2d("etbb", targetPosition, engineConfiguration->etbBiasBins, engineConfiguration->etbBiasValues);
|
engine->engineState.etbFeedForward = interpolate2d("etbb", targetPosition, engineConfiguration->etbBiasBins, engineConfiguration->etbBiasValues);
|
||||||
|
|
||||||
etbPid.iTermMin = engineConfiguration->etb_iTermMin;
|
etbPid.iTermMin = engineConfiguration->etb_iTermMin;
|
||||||
etbPid.iTermMax = engineConfiguration->etb_iTermMax;
|
etbPid.iTermMax = engineConfiguration->etb_iTermMax;
|
||||||
|
|
||||||
currentEtbDuty = feedForward +
|
currentEtbDuty = engine->engineState.etbFeedForward +
|
||||||
etbPid.getOutput(targetPosition, actualThrottlePosition);
|
etbPid.getOutput(targetPosition, actualThrottlePosition);
|
||||||
|
|
||||||
etb1.dcMotor.Set(ETB_PERCENT_TO_DUTY(currentEtbDuty));
|
etb1.dcMotor.Set(ETB_PERCENT_TO_DUTY(currentEtbDuty));
|
||||||
|
@ -267,6 +265,10 @@ DISPLAY(DISPLAY_IF(hasEtbPedalPositionSensor))
|
||||||
DISPLAY(DISPLAY_CONFIG(throttlePedalPositionAdcChannel));
|
DISPLAY(DISPLAY_CONFIG(throttlePedalPositionAdcChannel));
|
||||||
DISPLAY_TEXT(eol);
|
DISPLAY_TEXT(eol);
|
||||||
|
|
||||||
|
DISPLAY_TEXT(Feed_forward);
|
||||||
|
DISPLAY(DISPLAY_FIELD(etbFeedForward));
|
||||||
|
DISPLAY_TEXT(eol);
|
||||||
|
|
||||||
DISPLAY_STATE(ETB_pid)
|
DISPLAY_STATE(ETB_pid)
|
||||||
DISPLAY_TEXT(Output);
|
DISPLAY_TEXT(Output);
|
||||||
DISPLAY(DISPLAY_FIELD(output));
|
DISPLAY(DISPLAY_FIELD(output));
|
||||||
|
|
|
@ -59,9 +59,9 @@ static bool mightResetPid = false;
|
||||||
|
|
||||||
#if EFI_IDLE_INCREMENTAL_PID_CIC
|
#if EFI_IDLE_INCREMENTAL_PID_CIC
|
||||||
// Use new PID with CIC integrator
|
// Use new PID with CIC integrator
|
||||||
static PidCic idlePid;
|
PidCic idlePid;
|
||||||
#else
|
#else
|
||||||
static Pid idlePid;
|
Pid idlePid;
|
||||||
#endif /* EFI_IDLE_INCREMENTAL_PID_CIC */
|
#endif /* EFI_IDLE_INCREMENTAL_PID_CIC */
|
||||||
|
|
||||||
// todo: extract interface for idle valve hardware, with solenoid and stepper implementations?
|
// todo: extract interface for idle valve hardware, with solenoid and stepper implementations?
|
||||||
|
@ -283,7 +283,9 @@ public:
|
||||||
* @see stepper.cpp
|
* @see stepper.cpp
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (engineConfiguration->isVerboseIAC && engineConfiguration->idleMode == IM_AUTO) {
|
engine->engineState.isAutomaticIdle = engineConfiguration->idleMode == IM_AUTO;
|
||||||
|
|
||||||
|
if (engineConfiguration->isVerboseIAC && engine->engineState.isAutomaticIdle) {
|
||||||
// todo: print each bit using 'getIdle_state_e' method
|
// todo: print each bit using 'getIdle_state_e' method
|
||||||
scheduleMsg(logger, "state %d", engine->engineState.idle.idleState);
|
scheduleMsg(logger, "state %d", engine->engineState.idle.idleState);
|
||||||
idlePid.showPidStatus(logger, "idle");
|
idlePid.showPidStatus(logger, "idle");
|
||||||
|
@ -536,6 +538,26 @@ void startIdleThread(Logging*sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
DISPLAY(DISPLAY_FIELD(throttlePedalUpState));
|
DISPLAY(DISPLAY_FIELD(throttlePedalUpState));
|
||||||
DISPLAY(DISPLAY_CONFIG(throttlePedalUpPin));
|
DISPLAY(DISPLAY_CONFIG(throttlePedalUpPin));
|
||||||
|
|
||||||
|
DISPLAY_TEXT(eol);
|
||||||
|
DISPLAY(DISPLAY_IF(isAutomaticIdle))
|
||||||
|
|
||||||
|
DISPLAY_STATE(idle_pid)
|
||||||
|
DISPLAY_TEXT(Output);
|
||||||
|
DISPLAY(DISPLAY_FIELD(output));
|
||||||
|
DISPLAY_TEXT(iTerm);
|
||||||
|
DISPLAY(DISPLAY_FIELD(iTerm));
|
||||||
|
DISPLAY_TEXT(eol);
|
||||||
|
|
||||||
|
DISPLAY_TEXT(Settings);
|
||||||
|
DISPLAY(DISPLAY_CONFIG(IDLERPMPID_PFACTOR));
|
||||||
|
DISPLAY(DISPLAY_CONFIG(IDLERPMPID_IFACTOR));
|
||||||
|
DISPLAY(DISPLAY_CONFIG(IDLERPMPID_DFACTOR));
|
||||||
|
DISPLAY(DISPLAY_CONFIG(IDLERPMPID_OFFSET));
|
||||||
|
|
||||||
|
/* DISPLAY_ELSE */
|
||||||
|
DISPLAY_TEXT(Manual_idle_control);
|
||||||
|
/* DISPLAY_ENDIF */
|
||||||
|
|
||||||
|
|
||||||
//scheduleMsg(logger, "initial idle %d", idlePositionController.value);
|
//scheduleMsg(logger, "initial idle %d", idlePositionController.value);
|
||||||
|
|
||||||
|
|
|
@ -812,6 +812,6 @@ int getRusEfiVersion(void) {
|
||||||
if (initBootloader() != 0)
|
if (initBootloader() != 0)
|
||||||
return 123;
|
return 123;
|
||||||
#endif /* EFI_BOOTLOADER_INCLUDE_CODE */
|
#endif /* EFI_BOOTLOADER_INCLUDE_CODE */
|
||||||
return 20190830;
|
return 20190901;
|
||||||
}
|
}
|
||||||
#endif /* EFI_UNIT_TEST */
|
#endif /* EFI_UNIT_TEST */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration/engine_state.txt Sun Sep 01 11:57:51 EDT 2019
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration/engine_state.txt Sun Sep 01 15:38:18 EDT 2019
|
||||||
// by class com.rusefi.output.CHeaderConsumer
|
// by class com.rusefi.output.CHeaderConsumer
|
||||||
// begin
|
// begin
|
||||||
#ifndef CONTROLLERS_GENERATED_ENGINE_STATE_GENERATED_H
|
#ifndef CONTROLLERS_GENERATED_ENGINE_STATE_GENERATED_H
|
||||||
|
@ -198,6 +198,9 @@ struct engine_state2_s {
|
||||||
/**
|
/**
|
||||||
offset 80 bit 1 */
|
offset 80 bit 1 */
|
||||||
bool hasEtbPedalPositionSensor : 1;
|
bool hasEtbPedalPositionSensor : 1;
|
||||||
|
/**
|
||||||
|
offset 80 bit 2 */
|
||||||
|
bool isAutomaticIdle : 1;
|
||||||
/**
|
/**
|
||||||
* offset 84
|
* offset 84
|
||||||
*/
|
*/
|
||||||
|
@ -206,11 +209,15 @@ struct engine_state2_s {
|
||||||
* offset 104
|
* offset 104
|
||||||
*/
|
*/
|
||||||
running_fuel_s running;
|
running_fuel_s running;
|
||||||
/** total size 136*/
|
/**
|
||||||
|
* offset 136
|
||||||
|
*/
|
||||||
|
percent_t etbFeedForward = (percent_t)0;
|
||||||
|
/** total size 140*/
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct engine_state2_s engine_state2_s;
|
typedef struct engine_state2_s engine_state2_s;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
// end
|
// end
|
||||||
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration/engine_state.txt Sun Sep 01 11:57:51 EDT 2019
|
// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration/engine_state.txt Sun Sep 01 15:38:18 EDT 2019
|
||||||
|
|
|
@ -54,6 +54,7 @@ float baroCorrection;
|
||||||
|
|
||||||
bit isCrankingState
|
bit isCrankingState
|
||||||
bit hasEtbPedalPositionSensor;
|
bit hasEtbPedalPositionSensor;
|
||||||
|
bit isAutomaticIdle
|
||||||
|
|
||||||
struct cranking_fuel_s
|
struct cranking_fuel_s
|
||||||
|
|
||||||
|
@ -94,5 +95,7 @@ end_struct
|
||||||
! actually define a member of 'running_fuel_s' type
|
! actually define a member of 'running_fuel_s' type
|
||||||
running_fuel_s running
|
running_fuel_s running
|
||||||
|
|
||||||
|
percent_t etbFeedForward;
|
||||||
|
|
||||||
! engine_state2_s
|
! engine_state2_s
|
||||||
end_struct
|
end_struct
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package com.rusefi.config.generated;
|
package com.rusefi.config.generated;
|
||||||
|
|
||||||
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration/engine_state.txt Sun Sep 01 11:57:51 EDT 2019
|
// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration/engine_state.txt Sun Sep 01 15:38:18 EDT 2019
|
||||||
|
|
||||||
// by class com.rusefi.output.JavaFieldsConsumer
|
// by class com.rusefi.output.JavaFieldsConsumer
|
||||||
import com.rusefi.config.*;
|
import com.rusefi.config.*;
|
||||||
|
@ -28,6 +28,7 @@ public class EngineState {
|
||||||
public static final Field BAROCORRECTION = Field.create("BAROCORRECTION", 76, FieldType.FLOAT);
|
public static final Field BAROCORRECTION = Field.create("BAROCORRECTION", 76, FieldType.FLOAT);
|
||||||
public static final Field ISCRANKINGSTATE = Field.create("ISCRANKINGSTATE", 80, FieldType.BIT, 0);
|
public static final Field ISCRANKINGSTATE = Field.create("ISCRANKINGSTATE", 80, FieldType.BIT, 0);
|
||||||
public static final Field HASETBPEDALPOSITIONSENSOR = Field.create("HASETBPEDALPOSITIONSENSOR", 80, FieldType.BIT, 1);
|
public static final Field HASETBPEDALPOSITIONSENSOR = Field.create("HASETBPEDALPOSITIONSENSOR", 80, FieldType.BIT, 1);
|
||||||
|
public static final Field ISAUTOMATICIDLE = Field.create("ISAUTOMATICIDLE", 80, FieldType.BIT, 2);
|
||||||
public static final Field CRANKING_BASEFUEL = Field.create("CRANKING_BASEFUEL", 84, FieldType.FLOAT);
|
public static final Field CRANKING_BASEFUEL = Field.create("CRANKING_BASEFUEL", 84, FieldType.FLOAT);
|
||||||
public static final Field CRANKING_COOLANTTEMPERATURECOEFFICIENT = Field.create("CRANKING_COOLANTTEMPERATURECOEFFICIENT", 88, FieldType.FLOAT);
|
public static final Field CRANKING_COOLANTTEMPERATURECOEFFICIENT = Field.create("CRANKING_COOLANTTEMPERATURECOEFFICIENT", 88, FieldType.FLOAT);
|
||||||
public static final Field CRANKING_TPSCOEFFICIENT = Field.create("CRANKING_TPSCOEFFICIENT", 92, FieldType.FLOAT);
|
public static final Field CRANKING_TPSCOEFFICIENT = Field.create("CRANKING_TPSCOEFFICIENT", 92, FieldType.FLOAT);
|
||||||
|
@ -41,6 +42,7 @@ public class EngineState {
|
||||||
public static final Field RUNNING_PIDCORRECTION = Field.create("RUNNING_PIDCORRECTION", 124, FieldType.FLOAT);
|
public static final Field RUNNING_PIDCORRECTION = Field.create("RUNNING_PIDCORRECTION", 124, FieldType.FLOAT);
|
||||||
public static final Field RUNNING_BASEFUEL = Field.create("RUNNING_BASEFUEL", 128, FieldType.FLOAT);
|
public static final Field RUNNING_BASEFUEL = Field.create("RUNNING_BASEFUEL", 128, FieldType.FLOAT);
|
||||||
public static final Field RUNNING_FUEL = Field.create("RUNNING_FUEL", 132, FieldType.FLOAT);
|
public static final Field RUNNING_FUEL = Field.create("RUNNING_FUEL", 132, FieldType.FLOAT);
|
||||||
|
public static final Field ETBFEEDFORWARD = Field.create("ETBFEEDFORWARD", 136, FieldType.FLOAT);
|
||||||
public static final Field[] VALUES = {
|
public static final Field[] VALUES = {
|
||||||
ISTCHARGEAIRMODEL,
|
ISTCHARGEAIRMODEL,
|
||||||
AIRMASSINONECYLINDER,
|
AIRMASSINONECYLINDER,
|
||||||
|
@ -64,6 +66,7 @@ public class EngineState {
|
||||||
BAROCORRECTION,
|
BAROCORRECTION,
|
||||||
ISCRANKINGSTATE,
|
ISCRANKINGSTATE,
|
||||||
HASETBPEDALPOSITIONSENSOR,
|
HASETBPEDALPOSITIONSENSOR,
|
||||||
|
ISAUTOMATICIDLE,
|
||||||
CRANKING_BASEFUEL,
|
CRANKING_BASEFUEL,
|
||||||
CRANKING_COOLANTTEMPERATURECOEFFICIENT,
|
CRANKING_COOLANTTEMPERATURECOEFFICIENT,
|
||||||
CRANKING_TPSCOEFFICIENT,
|
CRANKING_TPSCOEFFICIENT,
|
||||||
|
@ -77,5 +80,6 @@ public class EngineState {
|
||||||
RUNNING_PIDCORRECTION,
|
RUNNING_PIDCORRECTION,
|
||||||
RUNNING_BASEFUEL,
|
RUNNING_BASEFUEL,
|
||||||
RUNNING_FUEL,
|
RUNNING_FUEL,
|
||||||
|
ETBFEEDFORWARD,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
|
||||||
* @see EngineSnifferPanel
|
* @see EngineSnifferPanel
|
||||||
*/
|
*/
|
||||||
public class Launcher {
|
public class Launcher {
|
||||||
public static final int CONSOLE_VERSION = 20190830;
|
public static final int CONSOLE_VERSION = 20190901;
|
||||||
public static final String INI_FILE_PATH = System.getProperty("ini_file_path", "..");
|
public static final String INI_FILE_PATH = System.getProperty("ini_file_path", "..");
|
||||||
public static final String INPUT_FILES_PATH = System.getProperty("input_files_path", "..");
|
public static final String INPUT_FILES_PATH = System.getProperty("input_files_path", "..");
|
||||||
public static final String TOOLS_PATH = System.getProperty("tools_path", ".");
|
public static final String TOOLS_PATH = System.getProperty("tools_path", ".");
|
||||||
|
|
|
@ -13,6 +13,9 @@ public class ElectronicThrottleMeta {
|
||||||
new SensorRequest("PPS"),
|
new SensorRequest("PPS"),
|
||||||
new ConfigRequest("throttlePedalPositionAdcChannel"),
|
new ConfigRequest("throttlePedalPositionAdcChannel"),
|
||||||
new TextRequest("eol"),
|
new TextRequest("eol"),
|
||||||
|
new TextRequest("Feed_forward"),
|
||||||
|
new FieldRequest("Engine", "etbFeedForward"),
|
||||||
|
new TextRequest("eol"),
|
||||||
new TextRequest("Output"),
|
new TextRequest("Output"),
|
||||||
new FieldRequest("ETB_pid", "output"),
|
new FieldRequest("ETB_pid", "output"),
|
||||||
new TextRequest("iTerm"),
|
new TextRequest("iTerm"),
|
||||||
|
|
|
@ -18,5 +18,22 @@ public class IdleThreadMeta {
|
||||||
new TextRequest("Throttle_Up_State"),
|
new TextRequest("Throttle_Up_State"),
|
||||||
new FieldRequest("Engine", "throttlePedalUpState"),
|
new FieldRequest("Engine", "throttlePedalUpState"),
|
||||||
new ConfigRequest("throttlePedalUpPin"),
|
new ConfigRequest("throttlePedalUpPin"),
|
||||||
|
new TextRequest("eol"),
|
||||||
|
new IfRequest("Engine", "isAutomaticIdle",
|
||||||
|
new Request[]{
|
||||||
|
new TextRequest("Output"),
|
||||||
|
new FieldRequest("idle_pid", "output"),
|
||||||
|
new TextRequest("iTerm"),
|
||||||
|
new FieldRequest("idle_pid", "iTerm"),
|
||||||
|
new TextRequest("eol"),
|
||||||
|
new TextRequest("Settings"),
|
||||||
|
new ConfigRequest("IDLERPMPID_PFACTOR"),
|
||||||
|
new ConfigRequest("IDLERPMPID_IFACTOR"),
|
||||||
|
new ConfigRequest("IDLERPMPID_DFACTOR"),
|
||||||
|
new ConfigRequest("IDLERPMPID_OFFSET"),
|
||||||
|
},
|
||||||
|
new Request[]{
|
||||||
|
new TextRequest("Manual_idle_control"),
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
}
|
}
|
Loading…
Reference in New Issue