- refactored
- created TempSensorFactory
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
from components.atemperatureSensor import *
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
from components.pid.pid import *
|
||||||
|
from components.pid.kalman import *
|
||||||
|
from components.pid.temp_controller import *
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
from components.plant.pot import *
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
from components.sensor.tempSensorSim import *
|
||||||
|
from components.sensor.tempsensor_factory import *
|
||||||
|
from components.sensor.tempSensorSim import ATemperatureSensor
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from components.atemperatureSensor import ATemperatureSensor
|
from components import ATemperatureSensor
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
from components.sensor.tempSensorSim import TempSensorSim
|
||||||
|
|
||||||
|
|
||||||
|
class TempSensorFactory:
|
||||||
|
@staticmethod
|
||||||
|
def create(name):
|
||||||
|
if "sim" in name:
|
||||||
|
return TempSensorSim()
|
||||||
Reference in New Issue
Block a user