only:making boost constraints more obvious, also running boost in simulator
This commit is contained in:
parent
1c6791ed65
commit
300e08d4c4
|
@ -45,8 +45,10 @@ void BoostController::onConfigurationChange(engine_configuration_s const * previ
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
expected<float> BoostController::observePlant() const {
|
expected<float> BoostController::observePlant() {
|
||||||
return Sensor::get(SensorType::Map);
|
expected<float> map = Sensor::get(SensorType::Map);
|
||||||
|
isPlantValid = map.Valid;
|
||||||
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
expected<float> BoostController::getSetpoint() {
|
expected<float> BoostController::getSetpoint() {
|
||||||
|
@ -245,6 +247,7 @@ void startBoostPin() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void initBoostCtrl() {
|
void initBoostCtrl() {
|
||||||
|
#if EFI_PROD_CODE
|
||||||
// todo: why do we have 'isBoostControlEnabled' setting exactly?
|
// todo: why do we have 'isBoostControlEnabled' setting exactly?
|
||||||
// 'initVvtActuators' is an example of a subsystem without explicit enable
|
// 'initVvtActuators' is an example of a subsystem without explicit enable
|
||||||
if (!engineConfiguration->isBoostControlEnabled) {
|
if (!engineConfiguration->isBoostControlEnabled) {
|
||||||
|
@ -261,6 +264,7 @@ void initBoostCtrl() {
|
||||||
if (!isBrainPinValid(engineConfiguration->boostControlPin) && !hasAnyEtbWastegate) {
|
if (!isBrainPinValid(engineConfiguration->boostControlPin) && !hasAnyEtbWastegate) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Set up open & closed loop tables
|
// Set up open & closed loop tables
|
||||||
boostMapOpen.init(config->boostTableOpenLoop, config->boostTpsBins, config->boostRpmBins);
|
boostMapOpen.init(config->boostTableOpenLoop, config->boostTpsBins, config->boostRpmBins);
|
||||||
|
|
|
@ -25,7 +25,7 @@ public:
|
||||||
void onConfigurationChange(engine_configuration_s const * previousConfig) override;
|
void onConfigurationChange(engine_configuration_s const * previousConfig) override;
|
||||||
|
|
||||||
// Helpers for individual parts of boost control
|
// Helpers for individual parts of boost control
|
||||||
expected<float> observePlant() const override;
|
expected<float> observePlant() override;
|
||||||
expected<float> getSetpoint() override;
|
expected<float> getSetpoint() override;
|
||||||
|
|
||||||
expected<percent_t> getOpenLoop(float target) override;
|
expected<percent_t> getOpenLoop(float target) override;
|
||||||
|
|
|
@ -244,7 +244,7 @@ void EtbController::showStatus() {
|
||||||
m_pid.showPidStatus("ETB");
|
m_pid.showPidStatus("ETB");
|
||||||
}
|
}
|
||||||
|
|
||||||
expected<percent_t> EtbController::observePlant() const {
|
expected<percent_t> EtbController::observePlant() {
|
||||||
return Sensor::get(m_positionSensor);
|
return Sensor::get(m_positionSensor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ public:
|
||||||
void showStatus();
|
void showStatus();
|
||||||
|
|
||||||
// Helpers for individual parts of throttle control
|
// Helpers for individual parts of throttle control
|
||||||
expected<percent_t> observePlant() const override;
|
expected<percent_t> observePlant() override;
|
||||||
|
|
||||||
expected<percent_t> getSetpoint() override;
|
expected<percent_t> getSetpoint() override;
|
||||||
expected<percent_t> getSetpointEtb();
|
expected<percent_t> getSetpointEtb();
|
||||||
|
|
|
@ -48,7 +48,7 @@ void VvtController::onConfigurationChange(engine_configuration_s const * previou
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
expected<angle_t> VvtController::observePlant() const {
|
expected<angle_t> VvtController::observePlant() {
|
||||||
#if EFI_SHAFT_POSITION_INPUT
|
#if EFI_SHAFT_POSITION_INPUT
|
||||||
return engine->triggerCentral.getVVTPosition(m_bank, m_cam);
|
return engine->triggerCentral.getVVTPosition(m_bank, m_cam);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -34,7 +34,7 @@ public:
|
||||||
void onConfigurationChange(engine_configuration_s const * previousConfig) override;
|
void onConfigurationChange(engine_configuration_s const * previousConfig) override;
|
||||||
|
|
||||||
// ClosedLoopController implementation
|
// ClosedLoopController implementation
|
||||||
expected<angle_t> observePlant() const override;
|
expected<angle_t> observePlant() override;
|
||||||
|
|
||||||
expected<angle_t> getSetpoint() override;
|
expected<angle_t> getSetpoint() override;
|
||||||
expected<percent_t> getOpenLoop(angle_t target) override;
|
expected<percent_t> getOpenLoop(angle_t target) override;
|
||||||
|
|
|
@ -49,7 +49,7 @@ private:
|
||||||
virtual expected<TInput> getSetpoint() = 0;
|
virtual expected<TInput> getSetpoint() = 0;
|
||||||
|
|
||||||
// Get the current observation: what is the current state of the world?
|
// Get the current observation: what is the current state of the world?
|
||||||
virtual expected<TInput> observePlant() const = 0;
|
virtual expected<TInput> observePlant() = 0;
|
||||||
|
|
||||||
// Get the open-loop output: output state based on only the setpoint
|
// Get the open-loop output: output state based on only the setpoint
|
||||||
virtual expected<TOutput> getOpenLoop(TInput setpoint) = 0;
|
virtual expected<TOutput> getOpenLoop(TInput setpoint) = 0;
|
||||||
|
|
|
@ -32,7 +32,7 @@ public:
|
||||||
|
|
||||||
// ClosedLoopController mocks
|
// ClosedLoopController mocks
|
||||||
MOCK_METHOD(expected<percent_t>, getSetpoint, (), (override));
|
MOCK_METHOD(expected<percent_t>, getSetpoint, (), (override));
|
||||||
MOCK_METHOD(expected<percent_t>, observePlant, (), (const, override));
|
MOCK_METHOD(expected<percent_t>, observePlant, (), (override));
|
||||||
MOCK_METHOD(expected<percent_t>, getOpenLoop, (percent_t setpoint), (override));
|
MOCK_METHOD(expected<percent_t>, getOpenLoop, (percent_t setpoint), (override));
|
||||||
MOCK_METHOD(expected<percent_t>, getClosedLoop, (percent_t setpoint, percent_t observation), (override));
|
MOCK_METHOD(expected<percent_t>, getClosedLoop, (percent_t setpoint, percent_t observation), (override));
|
||||||
MOCK_METHOD(void, setOutput, (expected<percent_t> outputValue), (override));
|
MOCK_METHOD(void, setOutput, (expected<percent_t> outputValue), (override));
|
||||||
|
|
|
@ -10,7 +10,7 @@ using ::testing::Eq;
|
||||||
class TestController : public ClosedLoopController<float, float> {
|
class TestController : public ClosedLoopController<float, float> {
|
||||||
public:
|
public:
|
||||||
MOCK_METHOD(expected<float>, getSetpoint, (), (override));
|
MOCK_METHOD(expected<float>, getSetpoint, (), (override));
|
||||||
MOCK_METHOD(expected<float>, observePlant, (), (const, override));
|
MOCK_METHOD(expected<float>, observePlant, (), (override));
|
||||||
MOCK_METHOD(expected<float>, getOpenLoop, (float setpoint), (override));
|
MOCK_METHOD(expected<float>, getOpenLoop, (float setpoint), (override));
|
||||||
MOCK_METHOD(expected<float>, getClosedLoop, (float setpoint, float observation), (override));
|
MOCK_METHOD(expected<float>, getClosedLoop, (float setpoint, float observation), (override));
|
||||||
MOCK_METHOD(void, setOutput, (expected<float> outputValue), (override));
|
MOCK_METHOD(void, setOutput, (expected<float> outputValue), (override));
|
||||||
|
|
Loading…
Reference in New Issue