mpo.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from pypdevs.DEVS import CoupledDEVS
  2. from devs_models.mpo_oven import MPOOven
  3. from devs_models.mpo_gripper import MPOGripper
  4. from devs_models.mpo_table_saw import MPOTableSaw
  5. class MPO(CoupledDEVS):
  6. """ MPO: Multi-Processing Oven station
  7. Contains:
  8. - baking oven
  9. - gripper to transport from oven to saw
  10. - saw with spinning table
  11. Note: active status is handled by individual components because is difficult
  12. """
  13. def __init__(self, name: str):
  14. super(MPO, self).__init__(name)
  15. # Components
  16. self.oven: MPOOven = self.addSubModel(MPOOven(f"{name}_oven"))
  17. self.gripper: MPOGripper = self.addSubModel(MPOGripper(f"{name}_gripper"))
  18. self.table_saw: MPOTableSaw = self.addSubModel(MPOTableSaw(f"{name}_saw"))
  19. # Own ports
  20. self.vgr_in = self.addInPort("vgr_in")
  21. # self.vgr_out = self.addOutPort("vgr_out")
  22. # self.mqtt_in = self.addInPort("mqtt_in")
  23. self.mqtt_out = self.addOutPort("mqtt_out")
  24. self.conveyor_out = self.addOutPort("conveyor_out")
  25. # Connect internal ports
  26. self.connectPorts(self.vgr_in, self.oven.vgr_in)
  27. self.connectPorts(self.oven.gripper_out, self.gripper.oven_in)
  28. self.connectPorts(self.gripper.oven_out, self.oven.gripper_in)
  29. self.connectPorts(self.gripper.table_out, self.table_saw.gripper_in)
  30. self.connectPorts(self.table_saw.gripper_out, self.gripper.table_in)
  31. self.connectPorts(self.table_saw.conveyor_out, self.conveyor_out)
  32. # Connect MQTT ports
  33. #self.connectPorts(self.mqtt_in, self.)
  34. self.connectPorts(self.oven.mqtt_out, self.mqtt_out)
  35. self.connectPorts(self.gripper.mqtt_out, self.mqtt_out)
  36. self.connectPorts(self.table_saw.mqtt_out, self.mqtt_out)