diff --git a/Control/brewpi/controller.py b/Control/brewpi/controller.py index be72ae5..017e548 100644 --- a/Control/brewpi/controller.py +++ b/Control/brewpi/controller.py @@ -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()) diff --git a/Control/brewpi/mass.py b/Control/brewpi/mass.py index 353f601..13e948c 100644 --- a/Control/brewpi/mass.py +++ b/Control/brewpi/mass.py @@ -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 diff --git a/Control/brewpi/pid.py b/Control/brewpi/pid.py index f77d1bc..0692675 100644 --- a/Control/brewpi/pid.py +++ b/Control/brewpi/pid.py @@ -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