- TC: state IDLE introduced
- TC: send states
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user