- Controller: read back power

- Mass: do power quantization
- pid has extra optional dErr parameter

git-svn-id: http://moon:8086/svn/projects/HendiControl@224 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
2019-04-04 05:24:02 +00:00
parent c036487faa
commit 8b1f36098c
3 changed files with 12 additions and 6 deletions
+4 -3
View File
@@ -228,11 +228,12 @@ class Controller():
self.pid.process(self.dt, pid_params, pid_err)
y = self.pid.get_y()
power = max(self.params['P_min'], min(self.params['P_max'], self.params['P_max']*y))
self.plant.setPower(power)
power_soll = max(self.params['P_min'], min(self.params['P_max'], self.params['P_max']*y))
self.plant.setPower(power_soll)
power_ist = self.plant.getPower()
self.time_v = np.append(self.time_v, self.time/60)
self.power_v = np.append(self.power_v, power)
self.power_v = np.append(self.power_v, power_ist)
self.error_v = np.append(self.error_v, pid_err)
#self.error_v = np.append(self.error_v, self.stirrer.getSpeed())
+2 -1
View File
@@ -36,7 +36,8 @@ class Mass(APlant):
self.theta = self.e/(self.M*self.C)
def setPower(self, power_w):
self.P = power_w
k = int(power_w / 100 +0.5)
self.P = k * 100
def getPower(self):
return self.P
+6 -2
View File
@@ -23,7 +23,7 @@ class Pid():
p = dict(kp=kp, ki=ki, kd=kd, rho=rho)
return p
def process(self, dt, params, err):
def process(self, dt, params, err, derr=None):
kp = params['kp']
ki = params['ki']
kd = params['kd']
@@ -31,7 +31,11 @@ class Pid():
err_aw = err + self.diff_aw
yi = rho*self.yi + err_aw
yd = err - self.xd
if derr:
yd = derr
else:
yd = err - self.xd
_yp = kp * err
_yi = ki*dt * yi