12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from pypdevs.DEVS import CoupledDEVS
- from devs_models.mpo_oven import MPOOven
- from devs_models.mpo_gripper import MPOGripper
- from devs_models.mpo_table_saw import MPOTableSaw
- class MPO(CoupledDEVS):
- """ MPO: Multi-Processing Oven station
- Contains:
- - baking oven
- - gripper to transport from oven to saw
- - saw with spinning table
- Note: active status is handled by individual components because is difficult
- """
- def __init__(self, name: str):
- super(MPO, self).__init__(name)
- # Components
- self.oven: MPOOven = self.addSubModel(MPOOven(f"{name}_oven"))
- self.gripper: MPOGripper = self.addSubModel(MPOGripper(f"{name}_gripper"))
- self.table_saw: MPOTableSaw = self.addSubModel(MPOTableSaw(f"{name}_saw"))
- # Own ports
- self.vgr_in = self.addInPort("vgr_in")
- self.mqtt_in = self.addInPort("mqtt_in")
- self.mqtt_out = self.addOutPort("mqtt_out")
- self.conveyor_out = self.addOutPort("conveyor_out")
- # Connect internal ports
- self.connectPorts(self.vgr_in, self.oven.vgr_in)
- self.connectPorts(self.oven.gripper_out, self.gripper.oven_in)
- self.connectPorts(self.gripper.oven_out, self.oven.gripper_in)
- self.connectPorts(self.gripper.table_out, self.table_saw.gripper_in)
- self.connectPorts(self.table_saw.gripper_out, self.gripper.table_in)
- self.connectPorts(self.table_saw.conveyor_out, self.conveyor_out)
- # Connect MQTT ports
- self.connectPorts(self.mqtt_in, self.oven.mqtt_in)
- self.connectPorts(self.mqtt_in, self.gripper.mqtt_in)
- self.connectPorts(self.mqtt_in, self.table_saw.mqtt_in)
-
- self.connectPorts(self.oven.mqtt_out, self.mqtt_out)
- self.connectPorts(self.gripper.mqtt_out, self.mqtt_out)
- self.connectPorts(self.table_saw.mqtt_out, self.mqtt_out)
|