From b8ed02eb3ae1995144b53ff4146a76cd4f2856d3 Mon Sep 17 00:00:00 2001 From: jens Date: Mon, 18 Oct 2021 21:32:37 +0200 Subject: [PATCH] - put calculated power from heater into tc model --- brewpi.py | 8 ++++++++ components/pid/temp_controller_smith.py | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/brewpi.py b/brewpi.py index 4635472..413db84 100755 --- a/brewpi.py +++ b/brewpi.py @@ -61,8 +61,16 @@ if __name__ == '__main__': taskmgr.add(TracerTask(sensor, heater, tc, trace_tc, DT_TASK_TRACER, dispatcher.msgio_get("Tracer"))) # Assign data flow + # Assign tc control value to heater tc.set_on_changed("y", heater_task.actor) + + # Assign temp. sensor readings to tc sensor.set_on_changed("temp", ChangedFloat(tc.set_theta_ist, prec=2).set) + + # Assign heater power set to tc model + heater.set_on_changed("power_set", tc.set_model_power) + + # For simulation if "sim" in config['Controller']['sensor_name']: pot.set_on_changed("temp", ChangedFloat(sensor.set_fake_temp, prec=3).set) sensor.set_fake_temp(pot.temp) diff --git a/components/pid/temp_controller_smith.py b/components/pid/temp_controller_smith.py index fbb670b..6d33516 100755 --- a/components/pid/temp_controller_smith.py +++ b/components/pid/temp_controller_smith.py @@ -31,6 +31,9 @@ class TempController(APid): self.model = Pot(dt, model_params) self.is_startup = True + def set_model_power(self, power): + self.model.set_power(power) + def set_theta_ist(self, value): self.theta_ist_set = value if self.is_startup: @@ -154,7 +157,6 @@ class TempController(APid): else: self.y = self.pid_rate.get_y() - self.model.set_power(max(0, 3500 * self.y)) self.model.process() def get_power(self):