diff options
author | David Crocker <dcrocker@eschertech.com> | 2021-05-29 11:04:25 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2021-05-29 11:04:25 +0300 |
commit | b249347bf4fc75cb8cedc6317ae5fe936169b057 (patch) | |
tree | 1bd009719218bd0cac459f1001075e9b6706d995 | |
parent | 614d4420353d439f957a76f405105016ba7d6f9a (diff) |
Added local heater PWM to the object model
-rw-r--r-- | src/Heating/Heater.cpp | 5 | ||||
-rw-r--r-- | src/Heating/Heater.h | 1 | ||||
-rw-r--r-- | src/Heating/LocalHeater.h | 1 |
3 files changed, 4 insertions, 3 deletions
diff --git a/src/Heating/Heater.cpp b/src/Heating/Heater.cpp index fd3742bd..3ef410da 100644 --- a/src/Heating/Heater.cpp +++ b/src/Heating/Heater.cpp @@ -43,6 +43,7 @@ constexpr ObjectModelTableEntry Heater::objectModelTable[] = { "min", OBJECT_MODEL_FUNC(self->GetLowestTemperatureLimit(), 1), ObjectModelEntryFlags::none }, { "model", OBJECT_MODEL_FUNC((const FopDt *)&self->GetModel()), ObjectModelEntryFlags::verbose }, { "monitors", OBJECT_MODEL_FUNC_NOSELF(&monitorsArrayDescriptor), ObjectModelEntryFlags::none }, + { "pwm", OBJECT_MODEL_FUNC(self->lastPwm, 1), ObjectModelEntryFlags::live }, { "sensor", OBJECT_MODEL_FUNC((int32_t)self->GetSensorNumber()), ObjectModelEntryFlags::none }, { "standby", OBJECT_MODEL_FUNC(self->GetStandbyTemperature(), 1), ObjectModelEntryFlags::live }, { "state", OBJECT_MODEL_FUNC(self->GetStatus().ToString()), ObjectModelEntryFlags::live }, @@ -55,7 +56,7 @@ constexpr ObjectModelTableEntry Heater::objectModelTable[] = self->monitors[context.GetLastIndex()].GetTemperatureLimit(), 1), ObjectModelEntryFlags::none }, }; -constexpr uint8_t Heater::objectModelTableDescriptor[] = { 2, 9, 3 }; +constexpr uint8_t Heater::objectModelTableDescriptor[] = { 2, 10, 3 }; DEFINE_GET_OBJECT_MODEL_TABLE(Heater) @@ -103,7 +104,7 @@ Heater::HeaterParameters Heater::fanOffParams, Heater::fanOnParams; } Heater::Heater(unsigned int num) noexcept - : tuned(false), heaterNumber(num), sensorNumber(-1), activeTemperature(0.0), standbyTemperature(0.0), + : lastPwm(0.0), tuned(false), heaterNumber(num), sensorNumber(-1), activeTemperature(0.0), standbyTemperature(0.0), maxTempExcursion(DefaultMaxTempExcursion), maxHeatingFaultTime(DefaultMaxHeatingFaultTime), active(false), modelSetByUser(false), monitorsSetByUser(false) { diff --git a/src/Heating/Heater.h b/src/Heating/Heater.h index c5b088b7..25796a65 100644 --- a/src/Heating/Heater.h +++ b/src/Heating/Heater.h @@ -139,6 +139,7 @@ protected: void SetAndReportModel(bool usingFans) noexcept; HeaterMonitor monitors[MaxMonitorsPerHeater]; // embedding them in the Heater uses less memory than dynamic allocation + float lastPwm; // the last PWM value set for this heater bool tuned; // true if tuning was successful // Constants used during heater tuning diff --git a/src/Heating/LocalHeater.h b/src/Heating/LocalHeater.h index d6ef0c99..8fe8dff9 100644 --- a/src/Heating/LocalHeater.h +++ b/src/Heating/LocalHeater.h @@ -66,7 +66,6 @@ private: float previousTemperatures[NumPreviousTemperatures]; // The temperatures of the previous NumDerivativeSamples measurements, used for calculating the derivative size_t previousTemperatureIndex; // Which slot in previousTemperature we fill in next float iAccumulator; // The integral LocalHeater component - float lastPwm; // The last PWM value we output, before scaling by kS float averagePWM; // The running average of the PWM, after scaling. uint32_t timeSetHeating; // When we turned on the heater uint32_t lastSampleTime; // Time when the temperature was last sampled by Spin() |