TransferModule.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using MECF.Framework.Common.Equipment;
  2. using Venus_RT.Modules.Schedulers;
  3. using Venus_RT.Scheduler;
  4. using Aitex.Core.RT.Routine;
  5. using System.Collections.Generic;
  6. namespace Venus_RT.Modules
  7. {
  8. public class TransferModule
  9. {
  10. protected SchedulerEfemRobot _efemRobot = new SchedulerEfemRobot();
  11. protected SchedulerTMRobot _tmRobot = new SchedulerTMRobot();
  12. protected SchedulerSETMRobot _setm = new SchedulerSETMRobot(ModuleName.SETM);
  13. protected SchedulerLoadPort _lp1 = new SchedulerLoadPort(ModuleName.LP1);
  14. protected SchedulerLoadPort _lp2 = new SchedulerLoadPort(ModuleName.LP2);
  15. protected SchedulerLoadPort _lp3 = new SchedulerLoadPort(ModuleName.LP3);
  16. protected SchedulerLoadLock _lla = new SchedulerLoadLock(ModuleName.LLA);
  17. protected SchedulerLoadLock _llb = new SchedulerLoadLock(ModuleName.LLB);
  18. protected SchedulerAligner _aligner1 = new SchedulerAligner(ModuleName.Aligner1);
  19. protected SchedulerAligner _aligner2 = new SchedulerAligner(ModuleName.Aligner2);
  20. protected SchedulerAligner _cooling1 = new SchedulerAligner(ModuleName.Cooling1);
  21. protected SchedulerAligner _cooling2 = new SchedulerAligner(ModuleName.Cooling2);
  22. protected SchedulerPM _pma = new SchedulerPM(ModuleName.PMA);
  23. protected SchedulerPM _pmb = new SchedulerPM(ModuleName.PMB);
  24. protected SchedulerPM _pmc = new SchedulerPM(ModuleName.PMC);
  25. protected SchedulerPM _pmd = new SchedulerPM(ModuleName.PMD);
  26. public TransferModule()
  27. {
  28. }
  29. public SchedulerModule GetScheduler(ModuleName module)
  30. {
  31. if (!ModuleHelper.IsInstalled(module))
  32. return null;
  33. switch (module)
  34. {
  35. case ModuleName.LP1:
  36. return _lp1;
  37. case ModuleName.LP2:
  38. return _lp2;
  39. case ModuleName.LP3:
  40. return _lp3;
  41. case ModuleName.Aligner1:
  42. return _aligner1;
  43. case ModuleName.Aligner2:
  44. return _aligner2;
  45. case ModuleName.Cooling1:
  46. return _cooling1;
  47. case ModuleName.Cooling2:
  48. return _cooling2;
  49. case ModuleName.EfemRobot:
  50. return _efemRobot;
  51. case ModuleName.LLA:
  52. return _lla;
  53. case ModuleName.LLB:
  54. return _llb;
  55. case ModuleName.TMRobot:
  56. return _tmRobot;
  57. case ModuleName.PMA:
  58. return _pma;
  59. case ModuleName.PMB:
  60. return _pmb;
  61. case ModuleName.PMC:
  62. return _pmc;
  63. case ModuleName.PMD:
  64. return _pmd;
  65. case ModuleName.SETM:
  66. return _setm;
  67. }
  68. return null;
  69. }
  70. }
  71. public interface IAutoTransfer
  72. {
  73. bool HasJobRunning
  74. {
  75. get;
  76. }
  77. Result Monitor();
  78. bool CheckAllJobDone();
  79. bool CheckJobJustDone(out string sJobName);
  80. Result Start(params object[] objs);
  81. void Map(string moduleName);
  82. bool CheckRecipeUsedInJob(string pathName);
  83. bool CheckSequenceUsedInJob(string pathName);
  84. void CreateJob(Dictionary<string, object> param);
  85. void AbortJob(string jobName);
  86. void StopJob(string jobName);
  87. void ResumeJob(string jobName);
  88. void PauseJob(string jobName);
  89. void StartJob(string jobName);
  90. void ResetIdlePurgeTime(string module);
  91. void ResetIdleCleanTime(string module);
  92. void Clear();
  93. }
  94. }