- update template

- simplified pid
- pant cycle time 30 s

git-svn-id: http://moon:8086/svn/projects/HendiControl@272 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
2019-04-26 16:09:07 +00:00
parent dd3c63bebf
commit b7df7197ed
3 changed files with 14 additions and 32 deletions
+6 -6
View File
@@ -12,24 +12,24 @@
"kalman" : {
"dt" : 1.0,
"var_P" : 0,
"var_Q" : 0.0001,
"var_Q" : 0.00001,
"var_R" : 1,
"var_Z" : 0.0
},
"Hold" : {
"Pid" : {
"kp" : 0.0002,
"ki" : 0.0000004,
"kp" : 0.1,
"ki" : 0.001,
"kd" : 0.0,
"rho" : 1.0
}
},
"Heat" : {
"Pid" : {
"kp" : 0.0006,
"ki" : 0.0,
"kp" : 0.001,
"ki" : 0.0004,
"kd" : 0.0,
"rho" : 0.0
"rho" : 1.0
}
}
},
+7 -25
View File
@@ -1,4 +1,4 @@
import numpy as np;
import numpy as np
class Pid():
@@ -11,12 +11,10 @@ class Pid():
# Auto windup
self.y_min = 0.0
self.y_max = 2.0
self.diff_aw = 0.0
self.y_max = 1.0
# Output
self.y = 0
self.yc = 0
@staticmethod
def params(kp, ki, kd, rho):
@@ -26,42 +24,26 @@ class Pid():
def reset(self):
self.yi = 0
self.xd = 0
self.diff_aw = 0.0
def process(self, dt, params, err, derr=None):
def process(self, dt, params, err):
kp = params['kp']
ki = params['ki']
kd = params['kd']
rho = params['rho']
err_aw = err + self.diff_aw
yi = rho*self.yi + ki*dt * err_aw
if derr:
yd = derr
else:
yd = err - self.xd
yi = rho*self.yi + ki*dt * err
yd = err - self.xd
_yp = kp * err
_yi = yi
_yd = kd/dt * yd
self.y = _yp + _yi + _yd
y = _yp + _yi + _yd
yaw = yi
if yaw < self.y_min:
self.diff_aw = abs(yaw - self.y_min)
if yaw > self.y_max:
self.diff_aw = -abs(yaw - self.y_max)
self.yc = max(self.y_min, min(self.y_max, self.y))
self.y = max(self.y_min, min(self.y_max, y))
self.yi = yi
self.xd = err
def get_y(self):
return self.y
def get_yc(self):
return self.yc
+1 -1
View File
@@ -11,7 +11,7 @@ class Plant(APlant):
self.tempsensor = Max31865()
self.P = 0
self.isOn = False
self.cycleTime = 10
self.cycleTime = 30
self.dutyCycle = 1
self.cycleCounter = 0