- 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
|
||||
|
||||
# Differentiator
|
||||
self.err = 0
|
||||
self.d = 0
|
||||
|
||||
# Anti windup
|
||||
self.y_min = -1.0
|
||||
@@ -29,10 +29,10 @@ class Pid:
|
||||
|
||||
def reset(self):
|
||||
self.yi = 0
|
||||
self.err = 0
|
||||
self.d = 0
|
||||
self.awu = 0
|
||||
|
||||
def process(self, err):
|
||||
def process(self, err, d):
|
||||
dt = self.params['dt']
|
||||
kp = self.params['kp'] * self.k
|
||||
ki = self.params['ki'] * self.k
|
||||
@@ -40,10 +40,10 @@ class Pid:
|
||||
kt = self.params['kt'] * self.k
|
||||
|
||||
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
|
||||
|
||||
self.err = err
|
||||
self.d = d
|
||||
|
||||
y = yp + self.yi + yd
|
||||
|
||||
|
||||
@@ -92,8 +92,8 @@ class TempController(AttributeChange):
|
||||
state_next = States.HOLD
|
||||
self.pid_hold.reset()
|
||||
|
||||
self.pid_hold.process(theta_err)
|
||||
self.pid_rate.process(heatrate_err)
|
||||
self.pid_hold.process(theta_err, -self.theta_ist)
|
||||
self.pid_rate.process(heatrate_err, -self.heatrate_ist)
|
||||
|
||||
self.y = self.pid_rate.get_y()
|
||||
|
||||
@@ -123,10 +123,10 @@ if __name__ == '__main__':
|
||||
},
|
||||
"Heat": {
|
||||
"dt": 1.0,
|
||||
"kp": 0.1,
|
||||
"kp": 0.2,
|
||||
"ki": 0.01,
|
||||
"kd": 0.0,
|
||||
"kt": 1.0
|
||||
"kd": 2.0,
|
||||
"kt": 1.5
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ if __name__ == '__main__':
|
||||
"C" : 4190,
|
||||
"M" : 20,
|
||||
"L" : 0.05,
|
||||
"Td" : 12,
|
||||
"Td" : 30,
|
||||
"kn" : 0.2
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user