from components.aplant import APlant class Pot(APlant): def __init__(self, params, theta_amb=20): APlant.__init__(self) self.dt = params['dt'] self.alpha = 1.0 self.e = 0 self.x = 0 self.gain = 0.999 self.C = params['C'] self.M = params['M'] self.L = params['L'] self.Td = params['Td'] self.kn = params['kn'] self.temp = params['theta'] self.theta_amb = theta_amb self.alpha = self.dt / 1 self.alpha_delay = self.dt/self.Td if self.Td > 0 else 1 self.power_set = 0 self.power_actual = 0 def activate(self, enable): pass def process(self): # Delay self.power_actual = (1-self.alpha_delay) * self.power_actual + self.alpha_delay * self.power_set leak = 1/self.M * self.L * (self.theta_amb - self.temp)/self.theta_amb self.temp += (self.power_actual / (self.M * self.C) + leak) * self.dt def is_activated(self): return True def set_power(self, power): self.power_set = power def get_power(self): return round(self.power_actual, 1) def get_temperature(self): return self.temp