diff --git a/brewpi.py b/brewpi.py index b0b00b4..8f08701 100644 --- a/brewpi.py +++ b/brewpi.py @@ -196,7 +196,7 @@ class TcTask(ATask): self.tc.set_on_changed('theta_ist', ChangedFloat(self.on_temp_ist_changed, prec=1).set) self.tc.set_on_changed('heatrate_ist', ChangedFloat(self.on_rate_ist_changed, prec=1).set) self.tc.set_on_changed('theta_soll_set', ChangedFloat(self.on_temp_soll_changed, prec=1).set) - self.tc.set_on_changed('heatrate_soll_set', ChangedFloat(self.on_rate_soll_changed, prec=1).set) + self.tc.set_on_changed('heatrate_soll', ChangedFloat(self.on_rate_soll_changed, prec=1).set) self.tc.set_theta_soll(20.0) self.tc.set_heatrate_soll(1.0) diff --git a/components/pid/temp_controller.py b/components/pid/temp_controller.py index 1c45d17..b532127 100644 --- a/components/pid/temp_controller.py +++ b/components/pid/temp_controller.py @@ -23,6 +23,7 @@ class TempController(AttributeChange): self.theta_soll_set = 0 self.heatrate_ist_set = 0 self.heatrate_soll_set = 1.0 + self.heatrate_soll = 1.0 self.theta_ist = 0 self.heatrate_ist = 0 self.params = params_pid @@ -55,8 +56,9 @@ class TempController(AttributeChange): self.theta_ist = self.theta_ist_set self.heatrate_ist = self.heatrate_ist_set + self.heatrate_soll = self.heatrate_soll_set * self.pid_hold.get_y() theta_err = self.theta_soll_set - self.theta_ist - heatrate_err = self.heatrate_soll_set - self.heatrate_ist + heatrate_err = self.heatrate_soll - self.heatrate_ist # Process state state_next = self.state @@ -87,16 +89,10 @@ class TempController(AttributeChange): state_next = States.HOLD self.pid_hold.reset() - if self.state != States.IDLE: - self.pid_hold.process(theta_err) - self.pid_rate.process(heatrate_err) + self.pid_hold.process(theta_err) + self.pid_rate.process(heatrate_err) - if self.state == States.HEAT: - self.y = self.pid_rate.get_y() - elif self.state == States.HOLD: - self.y = self.pid_hold.get_y() - else: - self.y = -1 + self.y = self.pid_rate.get_y() if state_next != self.state: self.state = state_next