- Pid: D-Part need not to be error based
- increased pot delay to 30 s
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user