diff --git a/Control/brewpi/controller.py b/Control/brewpi/controller.py index 1c00661..8e9353c 100644 --- a/Control/brewpi/controller.py +++ b/Control/brewpi/controller.py @@ -24,7 +24,7 @@ class Controller(TimerListener): self.stirrer = stirrer self.dt = params['dt'] self.params = params - self.pid = Pid() + self.pid_hold = Pid() self.pid_rate = Pid() self.timer_ist = 0 self.sensorTime_v = np.empty(0) @@ -229,10 +229,10 @@ class Controller(TimerListener): ovenStateNext = ovenStates.NOP if self.ovenState != ovenStates.NOP: - self.pid.process(self.dt, self.params['Hold']['Acqu']['Pid'], ctrl_theta_err) + self.pid_hold.process(self.dt, self.params['Hold']['Acqu']['Pid'], ctrl_theta_err) self.pid_rate.process(self.dt, self.params['Heat']['Acqu']['Pid'], ctrl_heatrate_err) - power_hold = max(self.params['P_min'], min(self.params['P_max'], self.params['P_max']*self.pid.get_y())) + power_hold = max(self.params['P_min'], min(self.params['P_max'], self.params['P_max'] * self.pid_hold.get_y())) power_heat = max(self.params['P_min'], min(self.params['P_max'], self.params['P_max']*self.pid_rate.get_y())) power_soll = min(power_hold, power_heat) self.plant.setPower(power_soll) @@ -255,6 +255,7 @@ class Controller(TimerListener): self.stirrer.setDutyCycle(1.0) if ovenStateNext == ovenStates.HOLD: + self.pid_hold.reset() self.stirrer.setSpeed(self.stirrSpeedRast) self.stirrer.setDutyCycle(self.stirrDutyRast)