- 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:
@@ -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())
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user