- TC: state IDLE introduced

- TC: send states
This commit is contained in:
jens
2020-12-06 11:34:54 +01:00
parent 448afb3e9a
commit 493af820dc
3 changed files with 53 additions and 11 deletions
+12 -5
View File
@@ -7,7 +7,7 @@ from components.plant.pot import Pot, APlant
from components.actor.heater import Heater, AHeater
from components.pid import kalman, temp_controller
from ws.message import MsgIo, MessageDispatcher
from utils.value import Value, ValueChanged
from utils.value import Value, ChangedFloat, ChangedInteger
TC_DT = 0.1
@@ -41,7 +41,7 @@ class TempSensorTask(ATask):
async def on_process(self):
print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval))
temp = ValueChanged(self.on_temp_changed, prec=1)
temp = ChangedFloat(self.on_temp_changed, prec=1)
self.sensor.set_on_changed("temp", temp.set)
while True:
self.sensor.process()
@@ -126,6 +126,10 @@ class TcTask(ATask):
self.tc = tc
self.temp_soll = 30
def on_state_changed(self, state):
print ("State change to {}".format(state))
asyncio.create_task(self.send({'State': state.value}))
async def recv(self, data):
print(data)
for pair in data.items():
@@ -138,6 +142,9 @@ class TcTask(ATask):
async def on_process(self):
print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval))
temp_soll = Value()
self.tc.set_on_changed('state', ChangedInteger(self.on_state_changed).set)
while True:
temp_soll.set(self.temp_soll)
if temp_soll.is_changed():
@@ -201,12 +208,12 @@ if __name__ == '__main__':
"kn" : 0.2
}
pot = Pot(pot_params, 20)
pot.set_on_changed("temp", ValueChanged(sensor.set_fake_temp, prec=3).set)
pot.set_on_changed("temp", ChangedFloat(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.set_on_changed("power_eff", ChangedFloat(pot.setPower, prec=0).set)
heater_task = HeaterTask(heater, TC_DT, dispatcher.msgio_get("Heater"))
taskmgr.add(heater_task)
@@ -231,7 +238,7 @@ if __name__ == '__main__':
tc.set_on_changed("y", heater_task.actor)
tc_task = TcTask(tc, TC_DT, dispatcher.msgio_get("TempCtrl"))
taskmgr.add(tc_task)
sensor.set_on_changed("temp", ValueChanged(tc.set_theta_ist, prec=2).set)
sensor.set_on_changed("temp", ChangedFloat(tc.set_theta_ist, prec=2).set)
# Message dispatcher
h_dispatcher = taskmgr.start()