only:making boost constraints more obvious, also running boost in simulator

This commit is contained in:
Andrey 2023-10-19 21:06:09 -04:00
parent 1c6791ed65
commit 300e08d4c4
9 changed files with 14 additions and 10 deletions

View File

@ -45,8 +45,10 @@ void BoostController::onConfigurationChange(engine_configuration_s const * previ
}
}
expected<float> BoostController::observePlant() const {
return Sensor::get(SensorType::Map);
expected<float> BoostController::observePlant() {
expected<float> map = Sensor::get(SensorType::Map);
isPlantValid = map.Valid;
return map;
}
expected<float> BoostController::getSetpoint() {
@ -245,6 +247,7 @@ void startBoostPin() {
}
void initBoostCtrl() {
#if EFI_PROD_CODE
// todo: why do we have 'isBoostControlEnabled' setting exactly?
// 'initVvtActuators' is an example of a subsystem without explicit enable
if (!engineConfiguration->isBoostControlEnabled) {
@ -261,6 +264,7 @@ void initBoostCtrl() {
if (!isBrainPinValid(engineConfiguration->boostControlPin) && !hasAnyEtbWastegate) {
return;
}
#endif
// Set up open & closed loop tables
boostMapOpen.init(config->boostTableOpenLoop, config->boostTpsBins, config->boostRpmBins);

View File

@ -25,7 +25,7 @@ public:
void onConfigurationChange(engine_configuration_s const * previousConfig) override;
// Helpers for individual parts of boost control
expected<float> observePlant() const override;
expected<float> observePlant() override;
expected<float> getSetpoint() override;
expected<percent_t> getOpenLoop(float target) override;

View File

@ -244,7 +244,7 @@ void EtbController::showStatus() {
m_pid.showPidStatus("ETB");
}
expected<percent_t> EtbController::observePlant() const {
expected<percent_t> EtbController::observePlant() {
return Sensor::get(m_positionSensor);
}

View File

@ -43,7 +43,7 @@ public:
void showStatus();
// 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> getSetpointEtb();

View File

@ -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
return engine->triggerCentral.getVVTPosition(m_bank, m_cam);
#else

View File

@ -34,7 +34,7 @@ public:
void onConfigurationChange(engine_configuration_s const * previousConfig) override;
// ClosedLoopController implementation
expected<angle_t> observePlant() const override;
expected<angle_t> observePlant() override;
expected<angle_t> getSetpoint() override;
expected<percent_t> getOpenLoop(angle_t target) override;

View File

@ -49,7 +49,7 @@ private:
virtual expected<TInput> getSetpoint() = 0;
// 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
virtual expected<TOutput> getOpenLoop(TInput setpoint) = 0;

View File

@ -32,7 +32,7 @@ public:
// ClosedLoopController mocks
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>, getClosedLoop, (percent_t setpoint, percent_t observation), (override));
MOCK_METHOD(void, setOutput, (expected<percent_t> outputValue), (override));

View File

@ -10,7 +10,7 @@ using ::testing::Eq;
class TestController : public ClosedLoopController<float, float> {
public:
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>, getClosedLoop, (float setpoint, float observation), (override));
MOCK_METHOD(void, setOutput, (expected<float> outputValue), (override));