- GUI: fixed initial of heatrate

- added constants for DT
This commit is contained in:
jens
2020-12-06 21:43:12 +01:00
parent e39323f694
commit fcd100ef0e
2 changed files with 16 additions and 15 deletions
+15 -15
View File
@@ -10,7 +10,7 @@ from ws.message import MsgIo, MessageDispatcher
from utils.value import Value, ChangedFloat, ChangedInteger
TC_DT = 0.1
PARAMS_DT = 0.1
class ATask:
def __init__(self, interval):
@@ -22,13 +22,12 @@ class 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)
self.msg_handler = msg_handler
msg_handler.set_recv_handler(self.recv)
self.sensor = sensor
self.kalman = kalman
def on_temp_changed(self, value):
asyncio.create_task(self.send({'Temp': value}))
@@ -206,21 +205,13 @@ if __name__ == '__main__':
server = WsServerMultiUser(listener=dispatcher)
taskmgr = TaskManager()
# Kalman Filter
kalman_params = {
"dt" : 1.0,
"var_P" : 1,
"var_Q" : 0.0001,
"var_R" : 1
}
# Sensor
sensor = TempSensorSim()
taskmgr.add(TempSensorTask(sensor, TC_DT, dispatcher.msgio_get("Sensor"), kalman))
taskmgr.add(TempSensorTask(sensor, TC_DT, dispatcher.msgio_get("Sensor")))
# Plant
pot_params = {
"dt" : 1.0,
"dt" : PARAMS_DT,
"theta" : 20,
"C" : 4190,
"M" : 20,
@@ -241,20 +232,29 @@ if __name__ == '__main__':
# Temperature Controller
tc_params = {
"Hold": {
"dt": 1.0,
"dt": PARAMS_DT,
"kp": 0.5,
"ki": 0.005,
"kd": 0.0,
"rho": 1.0
},
"Heat": {
"dt": 1.0,
"dt": PARAMS_DT,
"kp": 0.1,
"ki": 0.01,
"kd": 0.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.set_on_changed("y", heater_task.actor)
tc_task = TcTask(tc, TC_DT, dispatcher.msgio_get("TempCtrl"))
+1
View File
@@ -44,6 +44,7 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
self.slider_pwr_initial_update = True
self.slider_temp_soll_initial_update = True
self.checkbox_heater_activate_initial_update = True
self.heatrate_soll_initial_update = True
self.ws_client.connect(uri="ws://localhost:8765")
def disconnect(self):