- refactored

This commit is contained in:
jens
2021-10-09 10:07:45 +02:00
parent 5923212055
commit b83ec71346
2 changed files with 13 additions and 12 deletions
+1 -2
View File
@@ -117,7 +117,6 @@ class TempController(APid):
elif diff < THRESH_HEAT_HOLD: elif diff < THRESH_HEAT_HOLD:
state_next = States.HOLD state_next = States.HOLD
self.pid_hold.reset() self.pid_hold.reset()
self.pid_rate.reset()
if state_next != self.state: if state_next != self.state:
self.state = state_next self.state = state_next
@@ -143,7 +142,7 @@ if __name__ == '__main__':
"var_R" : 1.0 "var_R" : 1.0
}, },
"Hold": { "Hold": {
"kp": 0.5, "kp": 0.2,
"ki": 0.0, "ki": 0.0,
"kd": 0.0, "kd": 0.0,
"kt": 0.0 "kt": 0.0
+12 -10
View File
@@ -117,24 +117,24 @@ class TempController(APid):
# Process state # Process state
state_next = self.state state_next = self.state
if self.state == States.IDLE: if self.state == States.IDLE:
self.pid_rate.reset() if diff >= THRESH_IDLE_HEAT:
if diff > THRESH_IDLE_HEAT:
state_next = States.HEAT state_next = States.HEAT
elif diff > -THRESH_IDLE_HOLD: self.pid_rate.reset()
elif diff >= -THRESH_IDLE_HOLD:
state_next = States.HOLD state_next = States.HOLD
self.pid_rate.reset()
elif self.state == States.HOLD: elif self.state == States.HOLD:
self.pid_rate.reset() if diff >= THRESH_HOLD_HEAT:
if diff > THRESH_HOLD_HEAT:
state_next = States.HEAT state_next = States.HEAT
elif diff < -THRESH_HOLD_IDLE: self.pid_rate.reset()
elif diff <= -THRESH_HOLD_IDLE:
state_next = States.IDLE state_next = States.IDLE
elif self.state == States.HEAT: elif self.state == States.HEAT:
if diff < -THRESH_HEAT_IDLE: if diff <= -THRESH_HEAT_IDLE:
state_next = States.IDLE state_next = States.IDLE
elif diff < THRESH_HEAT_HOLD: elif diff <= THRESH_HEAT_HOLD:
state_next = States.HOLD state_next = States.HOLD
self.pid_hold.reset() self.pid_hold.reset()
self.pid_rate.reset()
if state_next != self.state: if state_next != self.state:
self.state = state_next self.state = state_next
@@ -145,9 +145,11 @@ class TempController(APid):
self.pid_rate.process(heatrate_err, -self.heatrate_ist) self.pid_rate.process(heatrate_err, -self.heatrate_ist)
self.y = self.pid_rate.get_y() self.y = self.pid_rate.get_y()
self.model.set_power(max(0, 250 + 3500 * self.y)) self.model.set_power(max(0, 250 + 3500 * self.y))
self.model.process() self.model.process()
def get_power(self): def get_power(self):
return self.y return self.y
@@ -170,7 +172,7 @@ if __name__ == '__main__':
"var_R" : 1.0 "var_R" : 1.0
}, },
"Hold": { "Hold": {
"kp": 0.50, "kp": 0.2,
"ki": 0.0, "ki": 0.0,
"kd": 0.0, "kd": 0.0,
"kt": 0.0 "kt": 0.0