- temp controller: use series PID for T and dT. PID-T sets setpoint on PIT-dT

This commit is contained in:
jens
2020-12-11 12:43:12 +01:00
parent c4e6aadaca
commit ada81935e3
2 changed files with 7 additions and 11 deletions
+6 -10
View File
@@ -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