PMModuleBase.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Sorter.Common;
  3. using MECF.Framework.Common.Equipment;
  4. using MECF.Framework.Common.Schedulers;
  5. using MECF.Framework.Common.SubstrateTrackings;
  6. using MECF.Framework.RT.EquipmentLibrary.LogicUnits;
  7. using FurnaceRT.Equipments.Systems;
  8. namespace FurnaceRT.Equipments.PMs
  9. {
  10. public abstract class PMModuleBase : ModuleFsmDevice, ITransferTarget, IModuleDevice
  11. {
  12. private int _slot = 1;
  13. public PMModuleBase(int slot)
  14. {
  15. _slot = slot;
  16. }
  17. public override bool Initialize()
  18. {
  19. WaferManager.Instance.SubscribeLocation(Module, _slot);
  20. return base.Initialize();
  21. }
  22. public abstract double ChamberPressure { get; }
  23. public abstract bool CheckAcked(int entityTaskToken);
  24. //IModuleDevice
  25. public abstract bool IsReady { get; }
  26. public abstract bool IsError { get; }
  27. public abstract bool IsInit { get; }
  28. public abstract bool Home(out string reason);
  29. //ITransferTarget
  30. public abstract bool PrepareTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
  31. public abstract bool TransferHandoff(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
  32. public abstract bool PostTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
  33. public abstract bool CheckReadyForTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
  34. public abstract void NoteTransferStart(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType);
  35. public abstract void NoteTransferStop(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType);
  36. //Process
  37. public abstract bool Process(string recipeName, bool isCleanRecipe, bool withWafer, out string reason);
  38. public abstract bool Standby(string recipeName, out string reason);
  39. public abstract bool CheckPrepareProcess();
  40. public abstract bool CheckProcessFinished();
  41. public abstract bool CheckStandbyCondition();
  42. //Pump
  43. public abstract bool TurnOnPump(out string reason);
  44. public abstract bool CheckPumpIsOn();
  45. public abstract bool CheckSlitValveClose();
  46. //Lid
  47. public abstract bool CheckLidClosed();
  48. }
  49. }