- TC: state IDLE introduced

- TC: send states
This commit is contained in:
jens
2020-12-06 11:34:54 +01:00
parent 448afb3e9a
commit 493af820dc
3 changed files with 53 additions and 11 deletions
+25 -5
View File
@@ -28,7 +28,7 @@ class TempController(AttributeChange):
self.params = params_pid
self.kalman = kalman.Kalman(params_kalman)
self.y = 0
self.state = States.HOLD
self.state = States.IDLE
self.use_kalman = True
self.kalman.initial((20, 0))
@@ -60,12 +60,30 @@ class TempController(AttributeChange):
# Process state
state_next = self.state
if self.state == States.HOLD:
if (self.theta_ist + 1.0) < self.theta_soll_set:
diff = self.theta_soll_set - self.theta_ist
THRESH_HEAT = 1.0
THRESH_IDLE = 1.0
THRESH_IDLE_HOLD = 0.1
THRESH_HEAT_HOLD = 1.0
if self.state == States.IDLE:
if diff > THRESH_HEAT:
state_next = States.HEAT
self.pid_rate.reset()
elif diff > -THRESH_IDLE_HOLD:
state_next = States.HOLD
self.pid_hold.reset()
elif self.state == States.HOLD:
if diff > THRESH_HEAT:
state_next = States.HEAT
self.pid_rate.reset()
elif diff < -THRESH_IDLE_HOLD:
state_next = States.IDLE
elif self.state == States.HEAT:
if (self.theta_ist + 1.0) >= self.theta_soll_set:
if diff < -THRESH_IDLE:
state_next = States.IDLE
elif diff < THRESH_HEAT_HOLD:
state_next = States.HOLD
self.pid_hold.reset()
@@ -75,8 +93,10 @@ class TempController(AttributeChange):
if self.state == States.HEAT:
self.y = self.pid_rate.get_y()
else:
elif self.state == States.HOLD:
self.y = self.pid_hold.get_y()
else:
self.y = 0
if state_next != self.state:
print("New state = {}".format(state_next))