PMModuleBase.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 MECF.Framework.RT.ModuleLibrary.Commons;
  8. namespace MECF.Framework.RT.ModuleLibrary.PMModules
  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. //Pump
  39. public abstract bool PreparePump(out string reason);
  40. public abstract bool CheckPreparePump();
  41. public abstract bool SlowPump(int tvPosition, out string reason);
  42. public abstract bool FastPump(int tvPosition, out string reason);
  43. public abstract bool TurnOnPump(out string reason);
  44. public abstract bool CheckPumpIsOn();
  45. public abstract bool ShutDownPump(out string reason);
  46. public abstract bool AbortPump();
  47. //Vent
  48. public abstract bool PrepareVent(out string reason);
  49. public abstract bool CheckPrepareVent();
  50. public abstract bool Vent(out string reason);
  51. public abstract bool StopVent(out string reason);
  52. //Leak check
  53. //public abstract bool PrepareLeakCheck(out string reason);
  54. //public abstract bool CheckPrepareLeakCheck();
  55. //public abstract bool AbortLeakCheck();
  56. //Slit Valve
  57. //public abstract bool OpenSlitValve(out string reason);
  58. //public abstract bool CheckSlitValveOpen();
  59. //public abstract bool CloseSlitValve(out string reason);
  60. public abstract bool CheckSlitValveClose();
  61. //Lid
  62. public abstract bool CheckLidClosed();
  63. }
  64. }