- some twaeks to pot_params

- increased sample rate of TC by factor 10
This commit is contained in:
jens
2020-11-30 19:13:45 +01:00
parent 5102ad935c
commit 919431f02d
2 changed files with 24 additions and 10 deletions
+8 -7
View File
@@ -9,6 +9,7 @@ from components.pid import kalman, temp_controller
from ws.message import MsgIo, MessageDispatcher
from utils.value import Value, ValueChanged
TC_DT = 0.1
class ATask:
def __init__(self, interval):
@@ -198,7 +199,7 @@ if __name__ == '__main__':
# Sensor
sensor = TempSensorSim()
taskmgr.add(TempSensorTask(sensor, 1.0, dispatcher.msgio_get("Sensor"), kalman))
taskmgr.add(TempSensorTask(sensor, TC_DT, dispatcher.msgio_get("Sensor"), kalman))
# Plant
pot_params = {
@@ -206,18 +207,18 @@ if __name__ == '__main__':
"theta" : 20,
"C" : 4190,
"M" : 10,
"L" : 0.1,
"L" : 0.02,
"Td" : 12,
"kn" : 0.2
}
pot = Pot(pot_params, 20)
pot.set_on_changed("temp", ValueChanged(sensor.set_fake_temp, prec=1).set)
taskmgr.add(PotTask(pot, 1.0, dispatcher.msgio_get("Pot")))
pot.set_on_changed("temp", ValueChanged(sensor.set_fake_temp, prec=3).set)
taskmgr.add(PotTask(pot, TC_DT, dispatcher.msgio_get("Pot")))
# Heater
heater = Heater()
heater.set_on_changed("power_eff", ValueChanged(pot.setPower, prec=0).set)
heater_task = HeaterTask(heater, 1.0, dispatcher.msgio_get("Heater"))
heater_task = HeaterTask(heater, TC_DT, dispatcher.msgio_get("Heater"))
taskmgr.add(heater_task)
# Temperature Controller
@@ -242,9 +243,9 @@ if __name__ == '__main__':
}
tc = temp_controller.TempController(tc_params)
tc.set_on_changed("y_hold", heater_task.actor)
tc_task = TcTask(tc, 1.0, dispatcher.msgio_get("Tc"))
tc_task = TcTask(tc, TC_DT, dispatcher.msgio_get("Tc"))
taskmgr.add(tc_task)
sensor.set_on_changed("temp", ValueChanged(tc.set_theta_ist, prec=1).set)
sensor.set_on_changed("temp", ValueChanged(tc.set_theta_ist, prec=2).set)
# Message dispatcher
h_dispatcher = taskmgr.start()
+16 -3
View File
@@ -20,15 +20,19 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
self.msg_pot = self.msg_dispatch.msgio_get('Pot')
self.msg_sensor = self.msg_dispatch.msgio_get('Sensor')
self.msg_heater = self.msg_dispatch.msgio_get('Heater')
self.msg_tempctrl = self.msg_dispatch.msgio_get('Tc')
self.msg_pot.set_recv_handler(self.on_pot_changed)
self.msg_sensor.set_recv_handler(self.on_sensor_changed)
self.msg_heater.set_recv_handler(self.on_heater_changed)
self.msg_tempctrl.set_recv_handler(self.on_tempctrl_changed)
self.setupUi(self)
self.actionStart.triggered.connect(self.connect)
self.actionStop.triggered.connect(self.disconnect)
self.Slider_pwr_soll.valueChanged.connect(self.on_slider_changed)
self.Slider_pwr_soll.valueChanged.connect(self.on_slider_pwr_soll_changed)
self.Slider_temp_soll.valueChanged.connect(self.on_slider_temp_soll_changed)
self.checkbox_heater_activate.stateChanged.connect(self.on_checkbox_changed)
self.send_data = Queue()
self.slider_initial_update = True
@@ -40,10 +44,14 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
def disconnect(self):
self.ws_client.disconnect()
def on_slider_changed(self, value):
print("on_slider_changed {}".format(value))
def on_slider_pwr_soll_changed(self, value):
print("on_slider_pwr_soll_changed {}".format(value))
self.msg_heater.send_from_thread({'Power': value})
def on_slider_temp_soll_changed(self, value):
print("on_slider_temp_soll_changed {}".format(value))
self.msg_tempctrl.send_from_thread({'Soll': value})
def on_checkbox_changed(self, value):
print("on_checkbox_changed {}".format(value))
self.msg_heater.send_from_thread({'Activate': int(value == 2)})
@@ -58,6 +66,11 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
if "Temp" in msg:
self.lcdNumber_3.display(str(msg['Temp']))
async def on_tempctrl_changed(self, msg):
print("on_tempctrl_changed {}".format(msg))
# if "Tc" in msg:
# self.lcdNumber_3.display(str(msg['Temp']))
async def on_heater_changed(self, msg):
print("on_heater_changed {}".format(msg))
for key in msg: