PMModuleBase.cs 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using Aitex.Core.Common;
  2. using Aitex.Core.RT.Device;
  3. using Aitex.Sorter.Common;
  4. using MECF.Framework.Common.Equipment;
  5. using MECF.Framework.Common.Schedulers;
  6. using MECF.Framework.Common.SubstrateTrackings;
  7. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
  8. using MECF.Framework.RT.EquipmentLibrary.LogicUnits;
  9. using MECF.Framework.RT.ModuleLibrary.Commons;
  10. namespace MECF.Framework.RT.ModuleLibrary.PMModules
  11. {
  12. public abstract class PMModuleBase : ModuleFsmDevice, ITransferTarget, IModuleDevice
  13. {
  14. private int _slot = 1;
  15. public PMModuleBase(int slot)
  16. {
  17. _slot = slot;
  18. }
  19. public override bool Initialize()
  20. {
  21. WaferManager.Instance.SubscribeLocation(Module, _slot);
  22. return base.Initialize();
  23. }
  24. public abstract double ChamberPressure { get; }
  25. public abstract bool CheckAcked(int entityTaskToken);
  26. //IModuleDevice
  27. public abstract bool IsReady { get; }
  28. public abstract bool IsError { get; }
  29. public abstract bool IsInit { get; }
  30. public abstract bool Home(out string reason);
  31. //ITransferTarget
  32. public abstract bool PrepareTransfer(ModuleName robot, Hand blade, int[] targetSlot, EnumTransferType transferType, out string reason);
  33. public abstract bool PrepareTransfer(ModuleName robot, Hand blade, int[] targetSlot, EnumTransferType transferType, double temp1, double temp2, bool EanbleCheck, out string reason, EnumDualPM enumDual = EnumDualPM.None);
  34. public abstract bool TransferHandoff(ModuleName robot, Hand blade, int[] targetSlot, EnumTransferType transferType, out string reason);
  35. public abstract bool PostTransfer(ModuleName robot, Hand blade, int[] targetSlot, EnumTransferType transferType, out string reason);
  36. public abstract bool CheckReadyForTransfer(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType, out string reason);
  37. public abstract void NoteTransferStart(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType);
  38. public abstract void NoteTransferStop(ModuleName robot, Hand blade, int targetSlot, EnumTransferType transferType);
  39. public abstract bool CheckTempReady(double Temp1, double Temp2);
  40. public abstract bool CheckTransferTempReady(double Temp1, double Temp2);
  41. //Process
  42. public abstract bool Process(string recipeName, bool isCleanRecipe, bool withWafer, out string reason);
  43. //Pump
  44. public abstract bool PreparePump(out string reason);
  45. public abstract bool CheckPreparePump();
  46. public abstract bool SlowPump(int tvPosition, out string reason);
  47. public abstract bool FastPump(int tvPosition, out string reason);
  48. public abstract bool TurnOnPump(out string reason);
  49. public abstract bool CheckPumpIsOn();
  50. public abstract bool ShutDownPump(out string reason);
  51. public abstract bool AbortPump();
  52. //Vent
  53. public abstract bool PrepareVent(out string reason);
  54. public abstract bool CheckPrepareVent();
  55. public abstract bool Vent(out string reason);
  56. public abstract bool StopVent(out string reason);
  57. //PreHeat
  58. public abstract bool InvokePreHeat(double temperature1, double temperature2);
  59. //Leak check
  60. //public abstract bool PrepareLeakCheck(out string reason);
  61. //public abstract bool CheckPrepareLeakCheck();
  62. //public abstract bool AbortLeakCheck();
  63. //Slit Valve
  64. //public abstract bool OpenSlitValve(out string reason);
  65. //public abstract bool CheckSlitValveOpen();
  66. public abstract bool CloseSlitValve(out string reason);
  67. public abstract bool CheckSlitValveClose();
  68. public abstract bool CheckLiftUp(int _slot);
  69. public abstract bool CheckLiftDown(int _slot);
  70. public abstract bool IsPrepareTransferReady(EnumTransferType type, EnumDualPM pos, WaferSize waferSize);
  71. public abstract void AssertPMReady(string description);
  72. //Lid
  73. public abstract bool CheckLidClosed();
  74. public abstract bool CheckTemp1Alarm(double recipeTemp1);
  75. public abstract bool CheckTemp2Alarm(double recipeTemp2);
  76. }
  77. }