- GUI: fixed initial of heatrate
- added constants for DT
This commit is contained in:
@@ -10,7 +10,7 @@ from ws.message import MsgIo, MessageDispatcher
|
|||||||
from utils.value import Value, ChangedFloat, ChangedInteger
|
from utils.value import Value, ChangedFloat, ChangedInteger
|
||||||
|
|
||||||
TC_DT = 0.1
|
TC_DT = 0.1
|
||||||
|
PARAMS_DT = 0.1
|
||||||
|
|
||||||
class ATask:
|
class ATask:
|
||||||
def __init__(self, interval):
|
def __init__(self, interval):
|
||||||
@@ -22,13 +22,12 @@ class ATask:
|
|||||||
|
|
||||||
|
|
||||||
class TempSensorTask(ATask):
|
class TempSensorTask(ATask):
|
||||||
def __init__(self, sensor: ATemperatureSensor, interval, msg_handler: MsgIo, kalman: kalman.Kalman):
|
def __init__(self, sensor: ATemperatureSensor, interval, msg_handler: MsgIo):
|
||||||
ATask.__init__(self, interval)
|
ATask.__init__(self, interval)
|
||||||
|
|
||||||
self.msg_handler = msg_handler
|
self.msg_handler = msg_handler
|
||||||
msg_handler.set_recv_handler(self.recv)
|
msg_handler.set_recv_handler(self.recv)
|
||||||
self.sensor = sensor
|
self.sensor = sensor
|
||||||
self.kalman = kalman
|
|
||||||
|
|
||||||
def on_temp_changed(self, value):
|
def on_temp_changed(self, value):
|
||||||
asyncio.create_task(self.send({'Temp': value}))
|
asyncio.create_task(self.send({'Temp': value}))
|
||||||
@@ -206,21 +205,13 @@ if __name__ == '__main__':
|
|||||||
server = WsServerMultiUser(listener=dispatcher)
|
server = WsServerMultiUser(listener=dispatcher)
|
||||||
taskmgr = TaskManager()
|
taskmgr = TaskManager()
|
||||||
|
|
||||||
# Kalman Filter
|
|
||||||
kalman_params = {
|
|
||||||
"dt" : 1.0,
|
|
||||||
"var_P" : 1,
|
|
||||||
"var_Q" : 0.0001,
|
|
||||||
"var_R" : 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Sensor
|
# Sensor
|
||||||
sensor = TempSensorSim()
|
sensor = TempSensorSim()
|
||||||
taskmgr.add(TempSensorTask(sensor, TC_DT, dispatcher.msgio_get("Sensor"), kalman))
|
taskmgr.add(TempSensorTask(sensor, TC_DT, dispatcher.msgio_get("Sensor")))
|
||||||
|
|
||||||
# Plant
|
# Plant
|
||||||
pot_params = {
|
pot_params = {
|
||||||
"dt" : 1.0,
|
"dt" : PARAMS_DT,
|
||||||
"theta" : 20,
|
"theta" : 20,
|
||||||
"C" : 4190,
|
"C" : 4190,
|
||||||
"M" : 20,
|
"M" : 20,
|
||||||
@@ -241,20 +232,29 @@ if __name__ == '__main__':
|
|||||||
# Temperature Controller
|
# Temperature Controller
|
||||||
tc_params = {
|
tc_params = {
|
||||||
"Hold": {
|
"Hold": {
|
||||||
"dt": 1.0,
|
"dt": PARAMS_DT,
|
||||||
"kp": 0.5,
|
"kp": 0.5,
|
||||||
"ki": 0.005,
|
"ki": 0.005,
|
||||||
"kd": 0.0,
|
"kd": 0.0,
|
||||||
"rho": 1.0
|
"rho": 1.0
|
||||||
},
|
},
|
||||||
"Heat": {
|
"Heat": {
|
||||||
"dt": 1.0,
|
"dt": PARAMS_DT,
|
||||||
"kp": 0.1,
|
"kp": 0.1,
|
||||||
"ki": 0.01,
|
"ki": 0.01,
|
||||||
"kd": 0.0,
|
"kd": 0.0,
|
||||||
"rho": 1.0
|
"rho": 1.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Kalman Filter
|
||||||
|
kalman_params = {
|
||||||
|
"dt" : PARAMS_DT,
|
||||||
|
"var_P" : 1,
|
||||||
|
"var_Q" : 0.0001,
|
||||||
|
"var_R" : 1
|
||||||
|
}
|
||||||
|
|
||||||
tc = temp_controller.TempController(tc_params, kalman_params)
|
tc = temp_controller.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, TC_DT, dispatcher.msgio_get("TempCtrl"))
|
tc_task = TcTask(tc, TC_DT, dispatcher.msgio_get("TempCtrl"))
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
self.slider_pwr_initial_update = True
|
self.slider_pwr_initial_update = True
|
||||||
self.slider_temp_soll_initial_update = True
|
self.slider_temp_soll_initial_update = True
|
||||||
self.checkbox_heater_activate_initial_update = True
|
self.checkbox_heater_activate_initial_update = True
|
||||||
|
self.heatrate_soll_initial_update = True
|
||||||
self.ws_client.connect(uri="ws://localhost:8765")
|
self.ws_client.connect(uri="ws://localhost:8765")
|
||||||
|
|
||||||
def disconnect(self):
|
def disconnect(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user