- Pid: D-Part need not to be error based

- increased pot delay to 30 s
This commit is contained in:
jens
2020-12-20 18:23:14 +01:00
parent d3e61ab72f
commit 5f60312d4e
2 changed files with 11 additions and 11 deletions
+5 -5
View File
@@ -9,7 +9,7 @@ class Pid:
self.yi = 0 self.yi = 0
# Differentiator # Differentiator
self.err = 0 self.d = 0
# Anti windup # Anti windup
self.y_min = -1.0 self.y_min = -1.0
@@ -29,10 +29,10 @@ class Pid:
def reset(self): def reset(self):
self.yi = 0 self.yi = 0
self.err = 0 self.d = 0
self.awu = 0 self.awu = 0
def process(self, err): def process(self, err, d):
dt = self.params['dt'] dt = self.params['dt']
kp = self.params['kp'] * self.k kp = self.params['kp'] * self.k
ki = self.params['ki'] * self.k ki = self.params['ki'] * self.k
@@ -40,10 +40,10 @@ class Pid:
kt = self.params['kt'] * self.k kt = self.params['kt'] * self.k
self.yi = self.yi + ki*dt * err + kt*dt * self.awu self.yi = self.yi + ki*dt * err + kt*dt * self.awu
yd = kd/dt*(err - self.err) yd = kd/dt*(d - self.d)
yp = kp * err yp = kp * err
self.err = err self.d = d
y = yp + self.yi + yd y = yp + self.yi + yd
+6 -6
View File
@@ -92,8 +92,8 @@ class TempController(AttributeChange):
state_next = States.HOLD state_next = States.HOLD
self.pid_hold.reset() self.pid_hold.reset()
self.pid_hold.process(theta_err) self.pid_hold.process(theta_err, -self.theta_ist)
self.pid_rate.process(heatrate_err) self.pid_rate.process(heatrate_err, -self.heatrate_ist)
self.y = self.pid_rate.get_y() self.y = self.pid_rate.get_y()
@@ -123,10 +123,10 @@ if __name__ == '__main__':
}, },
"Heat": { "Heat": {
"dt": 1.0, "dt": 1.0,
"kp": 0.1, "kp": 0.2,
"ki": 0.01, "ki": 0.01,
"kd": 0.0, "kd": 2.0,
"kt": 1.0 "kt": 1.5
} }
} }
@@ -136,7 +136,7 @@ if __name__ == '__main__':
"C" : 4190, "C" : 4190,
"M" : 20, "M" : 20,
"L" : 0.05, "L" : 0.05,
"Td" : 12, "Td" : 30,
"kn" : 0.2 "kn" : 0.2
} }