diff --git a/Control/brewpi/mass.py b/Control/brewpi/mass.py index 27a2654..b0a1141 100644 --- a/Control/brewpi/mass.py +++ b/Control/brewpi/mass.py @@ -23,21 +23,35 @@ class Mass(APlant): self.theta = 0 self.P = 0 - if self.Td > 0: - self.alpha = self.dt/self.Td + self.alpha = self.dt/1 + + self.Nd = int(self.Td/self.dt) + self.delay = np.zeros((self.Nd, 1)) + self.ri = 0 + self.wi = 0 def activate(self, enable): pass def process(self): + if self.ri >= self.delay.size: + self.ri = 0 + P = self.delay[self.ri][0] + self.ri += 1 + self.e = self.e*(1 - ((self.L*self.theta)*self.dt)/(self.M*self.C)) - self.x = (1-self.alpha)*self.x + self.gain*self.alpha*self.P + self.x = (1-self.alpha)*self.x + self.gain*self.alpha*P self.e += self.x self.theta = self.e/(self.M*self.C) def setPower(self, power_w): k = int(power_w / 100 +0.5) - self.P = k * 100 + P = k * 100 + if self.wi >= self.delay.size: + self.wi = 0 + self.delay[self.wi] = P + self.wi += 1 + self.P = P def getPower(self): return self.P