- refactored

- created TempSensorFactory
This commit is contained in:
jens
2020-12-13 16:21:08 +01:00
parent c401885967
commit 0633e464ca
9 changed files with 29 additions and 15 deletions
+7 -6
View File
@@ -2,10 +2,11 @@ import asyncio
from time import sleep from time import sleep
import abc import abc
from ws.server.ws_server_multi_user import WsServerMultiUser from ws.server.ws_server_multi_user import WsServerMultiUser
from components.sensor.tempSensorSim import TempSensorSim, ATemperatureSensor from components import ATemperatureSensor
from components.plant.pot import Pot, APlant from components.sensor import TempSensorFactory
from components.pid import TempController
from components.plant import Pot, APlant
from components.actor.heater import Heater, AHeater from components.actor.heater import Heater, AHeater
from components.pid import kalman, temp_controller
from ws.message import MsgIo, MessageDispatcher from ws.message import MsgIo, MessageDispatcher
from utils.value import Value, ChangedFloat, ChangedInteger from utils.value import Value, ChangedFloat, ChangedInteger
@@ -148,7 +149,7 @@ class PotTask(ATask):
class TcTask(ATask): class TcTask(ATask):
def __init__(self, tc: temp_controller.TempController, interval, msg_handler: MsgIo): def __init__(self, tc: TempController, interval, msg_handler: MsgIo):
ATask.__init__(self, interval) ATask.__init__(self, interval)
self.tc = tc self.tc = tc
@@ -242,7 +243,7 @@ if __name__ == '__main__':
taskmgr = TaskManager() taskmgr = TaskManager()
# Sensor # Sensor
sensor = TempSensorSim() sensor = TempSensorFactory.create("sim")
taskmgr.add(TempSensorTask(sensor, DT_CTRL, dispatcher.msgio_get("Sensor"))) taskmgr.add(TempSensorTask(sensor, DT_CTRL, dispatcher.msgio_get("Sensor")))
# Plant # Plant
@@ -291,7 +292,7 @@ if __name__ == '__main__':
"var_R" : 1 "var_R" : 1
} }
tc = temp_controller.TempController(tc_params, kalman_params) tc = TempController(tc_params, kalman_params)
tc.set_on_changed("y", heater_task.actor) tc.set_on_changed("y", heater_task.actor)
tc_task = TcTask(tc, DT_CTRL, dispatcher.msgio_get("TempCtrl")) tc_task = TcTask(tc, DT_CTRL, dispatcher.msgio_get("TempCtrl"))
taskmgr.add(tc_task) taskmgr.add(tc_task)
+1
View File
@@ -0,0 +1 @@
from components.atemperatureSensor import *
+3
View File
@@ -0,0 +1,3 @@
from components.pid.pid import *
from components.pid.kalman import *
from components.pid.temp_controller import *
+4 -5
View File
@@ -1,7 +1,6 @@
from components.pid import pid
from components.pid import kalman
from components.plant.pot import Pot from components.plant.pot import Pot
from matplotlib.pyplot import plot, figure, subplot, title, xlabel, ylabel, grid, show, legend from matplotlib.pyplot import plot, figure, subplot, title, xlabel, ylabel, grid, show, legend
from components.pid import Pid, Kalman
import numpy as np import numpy as np
from utils.value import AttributeChange from utils.value import AttributeChange
from enum import Enum from enum import Enum
@@ -17,8 +16,8 @@ class TempController(AttributeChange):
def __init__(self, params_pid, params_kalman): def __init__(self, params_pid, params_kalman):
AttributeChange.__init__(self) AttributeChange.__init__(self)
self.pid_hold = pid.Pid(params_pid['Hold']) self.pid_hold = Pid(params_pid['Hold'])
self.pid_rate = pid.Pid(params_pid['Heat']) self.pid_rate = Pid(params_pid['Heat'])
self.theta_ist_set = 20 self.theta_ist_set = 20
self.theta_soll_set = 0 self.theta_soll_set = 0
self.heatrate_ist_set = 0 self.heatrate_ist_set = 0
@@ -27,7 +26,7 @@ class TempController(AttributeChange):
self.theta_ist = 0 self.theta_ist = 0
self.heatrate_ist = 0 self.heatrate_ist = 0
self.params = params_pid self.params = params_pid
self.kalman = kalman.Kalman(params_kalman) self.kalman = Kalman(params_kalman)
self.y = -1 self.y = -1
self.state = States.IDLE self.state = States.IDLE
self.use_kalman = True self.use_kalman = True
+1
View File
@@ -0,0 +1 @@
from components.plant.pot import *
+1 -3
View File
@@ -1,4 +1,3 @@
import numpy as np
from components.aplant import APlant from components.aplant import APlant
@@ -43,5 +42,4 @@ class Pot(APlant):
return round(self.power_actual, 1) return round(self.power_actual, 1)
def getTemperature(self): def getTemperature(self):
#return round(self.theta + self.theta_amb + self.kn * np.random.normal(0, 1) / np.sqrt(12.0), 1) return self.temp
return self.temp
+3
View File
@@ -0,0 +1,3 @@
from components.sensor.tempSensorSim import *
from components.sensor.tempsensor_factory import *
from components.sensor.tempSensorSim import ATemperatureSensor
+1 -1
View File
@@ -1,4 +1,4 @@
from components.atemperatureSensor import ATemperatureSensor from components import ATemperatureSensor
import numpy as np import numpy as np
+8
View File
@@ -0,0 +1,8 @@
from components.sensor.tempSensorSim import TempSensorSim
class TempSensorFactory:
@staticmethod
def create(name):
if "sim" in name:
return TempSensorSim()