- TC: state IDLE introduced
- TC: send states
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user