mirror of https://github.com/rusefi/rusefi.git
Add generic 4-speed trans controller
This commit is contained in:
parent
5d59799533
commit
b6ccc6d5d2
|
@ -706,7 +706,8 @@ enum class GearControllerMode : uint8_t {
|
||||||
enum class TransmissionControllerMode : uint8_t {
|
enum class TransmissionControllerMode : uint8_t {
|
||||||
None = 0,
|
None = 0,
|
||||||
SimpleTransmissionController = 1,
|
SimpleTransmissionController = 1,
|
||||||
Gm4l6x = 2,
|
Generic4 = 2,
|
||||||
|
Gm4l6x = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class InjectionTimingMode : uint8_t {
|
enum class InjectionTimingMode : uint8_t {
|
||||||
|
|
|
@ -66,6 +66,7 @@ CONTROLLERS_SRC_CPP = \
|
||||||
$(CONTROLLERS_DIR)/tcu/gc_auto.cpp \
|
$(CONTROLLERS_DIR)/tcu/gc_auto.cpp \
|
||||||
$(CONTROLLERS_DIR)/tcu/simple_tcu.cpp \
|
$(CONTROLLERS_DIR)/tcu/simple_tcu.cpp \
|
||||||
$(CONTROLLERS_DIR)/tcu/tc_4l6x.cpp \
|
$(CONTROLLERS_DIR)/tcu/tc_4l6x.cpp \
|
||||||
|
$(CONTROLLERS_DIR)/tcu/tc_4.cpp \
|
||||||
$(CONTROLLERS_DIR)/shutdown_controller.cpp \
|
$(CONTROLLERS_DIR)/shutdown_controller.cpp \
|
||||||
$(CONTROLLERS_DIR)/limp_manager.cpp \
|
$(CONTROLLERS_DIR)/limp_manager.cpp \
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,9 @@ void GearControllerBase::initTransmissionController() {
|
||||||
case TransmissionControllerMode::SimpleTransmissionController :
|
case TransmissionControllerMode::SimpleTransmissionController :
|
||||||
transmissionController = getSimpleTransmissionController();
|
transmissionController = getSimpleTransmissionController();
|
||||||
break;
|
break;
|
||||||
|
case TransmissionControllerMode::Generic4 :
|
||||||
|
transmissionController = getGeneric4TransmissionController();
|
||||||
|
break;
|
||||||
case TransmissionControllerMode::Gm4l6x :
|
case TransmissionControllerMode::Gm4l6x :
|
||||||
transmissionController = getGm4l6xTransmissionController();
|
transmissionController = getGm4l6xTransmissionController();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -0,0 +1,123 @@
|
||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
#include "tc_4.h"
|
||||||
|
|
||||||
|
#if EFI_TCU
|
||||||
|
Generic4TransmissionController generic4TransmissionController;
|
||||||
|
static SimplePwm pcPwm("Pressure Control");
|
||||||
|
|
||||||
|
void Generic4TransmissionController::init() {
|
||||||
|
SimpleTransmissionController::init();
|
||||||
|
|
||||||
|
enginePins.tcuTccOnoffSolenoid.initPin("TCC On/Off Solenoid", engineConfiguration->tcu_tcc_onoff_solenoid, engineConfiguration->tcu_tcc_onoff_solenoid_mode);
|
||||||
|
|
||||||
|
enginePins.tcuPcSolenoid.initPin("Pressure Control Solenoid", engineConfiguration->tcu_pc_solenoid_pin, engineConfiguration->tcu_pc_solenoid_pin_mode);
|
||||||
|
startSimplePwm(&pcPwm,
|
||||||
|
"Line Pressure",
|
||||||
|
&engine->executor,
|
||||||
|
&enginePins.tcuPcSolenoid,
|
||||||
|
engineConfiguration->tcu_pc_solenoid_freq,
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Generic4TransmissionController::update(gear_e gear) {
|
||||||
|
if (gear != getCurrentGear()) {
|
||||||
|
shiftingFrom = getCurrentGear();
|
||||||
|
isShifting = true;
|
||||||
|
measureShiftTime(gear);
|
||||||
|
}
|
||||||
|
|
||||||
|
setTccState(gear);
|
||||||
|
setPcState(gear);
|
||||||
|
|
||||||
|
setCurrentGear(gear);
|
||||||
|
|
||||||
|
SimpleTransmissionController::update(gear);
|
||||||
|
|
||||||
|
float time = isShiftCompleted();
|
||||||
|
if (time != 0) {
|
||||||
|
lastShiftTime = time;
|
||||||
|
isShifting = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Generic4TransmissionController::setTccState(gear_e gear) {
|
||||||
|
if (isShifting) {
|
||||||
|
enginePins.tcuTccOnoffSolenoid.setValue(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto tps = Sensor::get(SensorType::DriverThrottleIntent);
|
||||||
|
auto vss = Sensor::get(SensorType::VehicleSpeed);
|
||||||
|
if (!tps.Valid || !vss.Valid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (gear == GEAR_4) {
|
||||||
|
int lockSpeed = interpolate2d(tps.Value, config->tcu_tccTpsBins, config->tcu_tccLockSpeed);
|
||||||
|
int unlockSpeed = interpolate2d(tps.Value, config->tcu_tccTpsBins, config->tcu_tccUnlockSpeed);
|
||||||
|
if (vss.Value > lockSpeed) {
|
||||||
|
enginePins.tcuTccOnoffSolenoid.setValue(1);
|
||||||
|
} else if (vss.Value < unlockSpeed) {
|
||||||
|
enginePins.tcuTccOnoffSolenoid.setValue(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
enginePins.tcuTccOnoffSolenoid.setValue(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Generic4TransmissionController::setPcState(gear_e gear) {
|
||||||
|
uint8_t (*pcts)[sizeof(config->tcu_pcAirmassBins)/sizeof(config->tcu_pcAirmassBins[0])];
|
||||||
|
|
||||||
|
switch (gear) {
|
||||||
|
case REVERSE:
|
||||||
|
pcts = &config->tcu_pcValsR;
|
||||||
|
break;
|
||||||
|
case NEUTRAL:
|
||||||
|
pcts = &config->tcu_pcValsN;
|
||||||
|
break;
|
||||||
|
case GEAR_1:
|
||||||
|
if (isShifting && shiftingFrom == GEAR_2) {
|
||||||
|
pcts = &config->tcu_pcVals21;
|
||||||
|
} else {
|
||||||
|
pcts = &config->tcu_pcVals1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GEAR_2:
|
||||||
|
if (isShifting && shiftingFrom == GEAR_1) {
|
||||||
|
pcts = &config->tcu_pcVals12;
|
||||||
|
} else if (isShifting && shiftingFrom == GEAR_3) {
|
||||||
|
pcts = &config->tcu_pcVals32;
|
||||||
|
} else {
|
||||||
|
pcts = &config->tcu_pcVals2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GEAR_3:
|
||||||
|
if (isShifting && shiftingFrom == GEAR_2) {
|
||||||
|
pcts = &config->tcu_pcVals23;
|
||||||
|
} else if (isShifting && shiftingFrom == GEAR_4) {
|
||||||
|
pcts = &config->tcu_pcVals43;
|
||||||
|
} else {
|
||||||
|
pcts = &config->tcu_pcVals3;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GEAR_4:
|
||||||
|
if (isShifting && shiftingFrom == GEAR_3) {
|
||||||
|
pcts = &config->tcu_pcVals34;
|
||||||
|
} else {
|
||||||
|
pcts = &config->tcu_pcVals4;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pcts) {
|
||||||
|
float duty = 0.01f * interpolate2d(engine->fuelComputer.sdAirMassInOneCylinder, config->tcu_pcAirmassBins, *pcts);
|
||||||
|
pcPwm.setSimplePwmDutyCycle(duty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Generic4TransmissionController* getGeneric4TransmissionController() {
|
||||||
|
return &generic4TransmissionController;
|
||||||
|
}
|
||||||
|
#endif // EFI_TCU
|
|
@ -0,0 +1,21 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "tcu.h"
|
||||||
|
|
||||||
|
#if EFI_TCU
|
||||||
|
class Generic4TransmissionController: public SimpleTransmissionController {
|
||||||
|
public:
|
||||||
|
void update(gear_e);
|
||||||
|
void init();
|
||||||
|
TransmissionControllerMode getMode() const {
|
||||||
|
return TransmissionControllerMode::Generic4;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
void setTccState(gear_e gear);
|
||||||
|
void setPcState(gear_e gear);
|
||||||
|
bool isShifting = false;
|
||||||
|
gear_e shiftingFrom;
|
||||||
|
};
|
||||||
|
|
||||||
|
Generic4TransmissionController* getGeneric4TransmissionController();
|
||||||
|
#endif // EFI_TCU
|
|
@ -1498,7 +1498,7 @@ uint8_t[TORQUE_CURVE_SIZE x TORQUE_CURVE_SIZE] autoscale torqueTable;;"Nm", 10,
|
||||||
custom GearControllerMode 1 bits, U08, @OFFSET@, [0:1], @@gear_controller_e_enum@@
|
custom GearControllerMode 1 bits, U08, @OFFSET@, [0:1], @@gear_controller_e_enum@@
|
||||||
GearControllerMode gearControllerMode
|
GearControllerMode gearControllerMode
|
||||||
|
|
||||||
#define transmission_controller_e_enum "None", "Simple Transmission", "GM 4L6X"
|
#define transmission_controller_e_enum "None", "Simple Transmission", "Generic 4-Speed", "GM 4L6X"
|
||||||
custom TransmissionControllerMode 1 bits, U08, @OFFSET@, [0:1], @@transmission_controller_e_enum@@
|
custom TransmissionControllerMode 1 bits, U08, @OFFSET@, [0:1], @@transmission_controller_e_enum@@
|
||||||
TransmissionControllerMode transmissionControllerMode
|
TransmissionControllerMode transmissionControllerMode
|
||||||
|
|
||||||
|
|
|
@ -4303,31 +4303,31 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
|
||||||
field = "Transmission Controller" transmissionControllerMode, { tcuEnabled }
|
field = "Transmission Controller" transmissionControllerMode, { tcuEnabled }
|
||||||
|
|
||||||
dialog = shiftSolenoidPanel, "Shift Solenoids"
|
dialog = shiftSolenoidPanel, "Shift Solenoids"
|
||||||
field = "Solenoid 1 output" tcu_solenoid1, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 1 output" tcu_solenoid1, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 1 output Mode" tcu_solenoid_mode1, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 1 output Mode" tcu_solenoid_mode1, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 2 output" tcu_solenoid2, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 2 output" tcu_solenoid2, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 2 output Mode" tcu_solenoid_mode2, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 2 output Mode" tcu_solenoid_mode2, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 3 output" tcu_solenoid3, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 3 output" tcu_solenoid3, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 3 output Mode" tcu_solenoid_mode3, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 3 output Mode" tcu_solenoid_mode3, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 4 output" tcu_solenoid4, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 4 output" tcu_solenoid4, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 4 output Mode" tcu_solenoid_mode4, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 4 output Mode" tcu_solenoid_mode4, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 5 output" tcu_solenoid5, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 5 output" tcu_solenoid5, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 5 output Mode" tcu_solenoid_mode5, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 5 output Mode" tcu_solenoid_mode5, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 6 output" tcu_solenoid6, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 6 output" tcu_solenoid6, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Solenoid 6 output Mode" tcu_solenoid_mode6, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Solenoid 6 output Mode" tcu_solenoid_mode6, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_SimpleTransmissionController@@ || transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "3-2 Solenoid output" tcu_32_solenoid_pin, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "3-2 Solenoid output" tcu_32_solenoid_pin, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "3-2 Solenoid output mode" tcu_32_solenoid_pin_mode, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "3-2 Solenoid output mode" tcu_32_solenoid_pin_mode, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "3-2 Solenoid Frequency" tcu_32_solenoid_freq, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "3-2 Solenoid Frequency" tcu_32_solenoid_freq, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
|
|
||||||
dialog = otherSolenoidPanel, "Other Solenoids"
|
dialog = otherSolenoidPanel, "Other Solenoids"
|
||||||
field = "TCC On/Off Solenoid Pin" tcu_tcc_onoff_solenoid, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "TCC On/Off Solenoid Pin" tcu_tcc_onoff_solenoid, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "TCC On/Off Solenoid Pin Mode" tcu_tcc_onoff_solenoid_mode, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "TCC On/Off Solenoid Pin Mode" tcu_tcc_onoff_solenoid_mode, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "TCC PWM Solenoid Pin" tcu_tcc_pwm_solenoid, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "TCC PWM Solenoid Pin" tcu_tcc_pwm_solenoid, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "TCC PWM Solenoid Pin Mode" tcu_tcc_pwm_solenoid_mode, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "TCC PWM Solenoid Pin Mode" tcu_tcc_pwm_solenoid_mode, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "TCC PWM Solenoid Frequency" tcu_tcc_pwm_solenoid_freq, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "TCC PWM Solenoid Frequency" tcu_tcc_pwm_solenoid_freq, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Pressure Control Solenoid Pin" tcu_pc_solenoid_pin, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Pressure Control Solenoid Pin" tcu_pc_solenoid_pin, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Pressure Control Solenoid Pin Mode" tcu_pc_solenoid_pin_mode, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Pressure Control Solenoid Pin Mode" tcu_pc_solenoid_pin_mode, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
field = "Pressure Control Solenoid Frequency" tcu_pc_solenoid_freq, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
field = "Pressure Control Solenoid Frequency" tcu_pc_solenoid_freq, { tcuEnabled && (transmissionControllerMode == @@TransmissionControllerMode_Generic4@@ || transmissionControllerMode == @@TransmissionControllerMode_Gm4l6x@@) }
|
||||||
|
|
||||||
dialog = shiftSettingsPanel, "Shift Settings"
|
dialog = shiftSettingsPanel, "Shift Settings"
|
||||||
field = "Assumed Shift Time" tcu_shiftTime, { tcuEnabled }
|
field = "Assumed Shift Time" tcu_shiftTime, { tcuEnabled }
|
||||||
|
|
Loading…
Reference in New Issue