SchedulerModuleFactory.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using Aitex.Core.RT.SCCore;
  2. using MECF.Framework.Common.Equipment;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. namespace FurnaceRT.Equipments.Schedulers
  6. {
  7. public class SchedulerModuleFactory
  8. {
  9. protected static SchedulerCarrierRobot _carrierRobot = new SchedulerCarrierRobot();
  10. protected static SchedulerWaferRobot _waferRobot = new SchedulerWaferRobot();
  11. protected static SchedulerFIMS _fims1 = new SchedulerFIMS(ModuleName.FIMS1);
  12. protected static SchedulerFIMS _fims2 = new SchedulerFIMS(ModuleName.FIMS2);
  13. protected static SchedulerPM _pm1 = new SchedulerPM(ModuleName.PM1);
  14. protected static List<SchedulerPM> _lstPms;
  15. protected static SchedulerLoadPort _lp1 = new SchedulerLoadPort(ModuleName.LP1);
  16. protected static SchedulerLoadPort _lp2 = new SchedulerLoadPort(ModuleName.LP2);
  17. protected List<SchedulerLoadPort> _lstLPs;
  18. protected static List<SchedulerFIMS> _lstFIMSs;
  19. //protected List<SchedulerStocker> _lstBatchAStocker;
  20. //protected List<SchedulerStocker> _lstBatchBStocker;
  21. protected List<SchedulerStocker> _lstExtraDummyStocker;
  22. protected List<SchedulerStocker> _lstSideDummyStocker;
  23. //protected List<SchedulerStocker> _lstMonitor1Stocker;
  24. //protected List<SchedulerStocker> _lstMonitor2Stocker;
  25. protected List<SchedulerStocker> _lstCurrentBatchStocker = new List<SchedulerStocker>();
  26. protected List<SchedulerStocker> _lstCurrentMonitorStocker = new List<SchedulerStocker>();
  27. protected List<SchedulerStocker> _lstTotlaStockers;
  28. protected List<SchedulerStocker> _lstPlaceExtraDummyStockers;
  29. protected List<SchedulerStocker> _lstPlaceSideDummyStocker;
  30. protected List<SchedulerStocker> _lstPlaceMonitor1Stocker;
  31. protected List<SchedulerStocker> _lstPlaceMonitor2Stocker;
  32. protected List<SchedulerStocker> _lstPlaceCurrentBatchStocker;
  33. protected List<SchedulerStocker> _lstPlaceXDStocker;
  34. protected List<SchedulerStocker> _lstPlaceTStocker;
  35. protected void InitModule()
  36. {
  37. _lstPms = new List<SchedulerPM>() { _pm1 };
  38. _lstFIMSs = new List<SchedulerFIMS>();
  39. if (SC.GetValue<bool>($"System.SetUp.IsFIMS1Installed"))
  40. {
  41. _lstFIMSs.Add(_fims1);
  42. }
  43. if (SC.GetValue<bool>($"System.SetUp.IsFIMS2Installed"))
  44. {
  45. _lstFIMSs.Add(_fims2);
  46. }
  47. _lstLPs = new List<SchedulerLoadPort>();
  48. if (SC.GetValue<bool>($"System.SetUp.IsLP1Installed"))
  49. {
  50. _lstLPs.Add(_lp1);
  51. }
  52. if (SC.GetValue<bool>($"System.SetUp.IsLP2Installed"))
  53. {
  54. _lstLPs.Add(_lp2);
  55. }
  56. //_lstBatchAStocker = new List<SchedulerStocker>();
  57. //_lstBatchBStocker = new List<SchedulerStocker>();
  58. _lstExtraDummyStocker = new List<SchedulerStocker>();
  59. _lstSideDummyStocker = new List<SchedulerStocker>();
  60. //_lstMonitor1Stocker = new List<SchedulerStocker>();
  61. //_lstMonitor2Stocker = new List<SchedulerStocker>();
  62. _lstPlaceExtraDummyStockers = new List<SchedulerStocker>();
  63. _lstPlaceSideDummyStocker = new List<SchedulerStocker>();
  64. _lstPlaceMonitor1Stocker = new List<SchedulerStocker>();
  65. _lstPlaceMonitor2Stocker = new List<SchedulerStocker>();
  66. _lstPlaceCurrentBatchStocker = new List<SchedulerStocker>();
  67. _lstPlaceXDStocker = new List<SchedulerStocker>();
  68. _lstPlaceTStocker = new List<SchedulerStocker>();
  69. _lstTotlaStockers = new List<SchedulerStocker>();
  70. for(int i = 1; i < 30; i++)
  71. {
  72. if (!SC.ContainsItem($"System.SetUp.IsStocker{i}Installed"))
  73. continue;
  74. if (SC.GetValue<bool>($"System.SetUp.IsStocker{i}Installed"))
  75. {
  76. _lstTotlaStockers.Add(new SchedulerStocker(ModuleHelper.Converter($"Stocker{i}")));
  77. }
  78. }
  79. foreach (var stokcer in _lstTotlaStockers)
  80. {
  81. var type = SC.GetStringValue($"System.Stocker.{stokcer.Module}WaferType");
  82. switch (type)
  83. {
  84. case "P1":
  85. //_lstBatchAStocker.Add(stokcer);
  86. break;
  87. case "P2":
  88. //_lstBatchBStocker.Add(stokcer);
  89. break;
  90. case "M1":
  91. //_lstMonitor1Stocker.Add(stokcer);
  92. break;
  93. case "M2":
  94. //_lstMonitor2Stocker.Add(stokcer);
  95. break;
  96. case "ED":
  97. _lstExtraDummyStocker.Add(stokcer);
  98. break;
  99. case "SD":
  100. _lstSideDummyStocker.Add(stokcer);
  101. break;
  102. case "None":
  103. _lstSideDummyStocker.Add(stokcer);
  104. _lstExtraDummyStocker.Add(stokcer);
  105. break;
  106. }
  107. }
  108. }
  109. protected SchedulerModule GetModule(string name)
  110. {
  111. switch (ModuleHelper.Converter(name))
  112. {
  113. case ModuleName.PM1:
  114. return _pm1;
  115. case ModuleName.CarrierRobot:
  116. return _carrierRobot;
  117. case ModuleName.WaferRobot:
  118. return _waferRobot;
  119. case ModuleName.Stocker1:
  120. case ModuleName.Stocker2:
  121. case ModuleName.Stocker3:
  122. case ModuleName.Stocker4:
  123. case ModuleName.Stocker5:
  124. case ModuleName.Stocker6:
  125. case ModuleName.Stocker7:
  126. case ModuleName.Stocker8:
  127. case ModuleName.Stocker9:
  128. case ModuleName.Stocker10:
  129. case ModuleName.Stocker11:
  130. case ModuleName.Stocker12:
  131. case ModuleName.Stocker13:
  132. case ModuleName.Stocker14:
  133. case ModuleName.Stocker15:
  134. case ModuleName.Stocker16:
  135. case ModuleName.Stocker17:
  136. case ModuleName.Stocker18:
  137. case ModuleName.Stocker19:
  138. case ModuleName.Stocker20:
  139. case ModuleName.Stocker21:
  140. return _lstTotlaStockers.FirstOrDefault(x => x.Module == ModuleHelper.Converter(name));
  141. case ModuleName.FIMS1:
  142. return _fims1;
  143. case ModuleName.FIMS2:
  144. return _fims2;
  145. case ModuleName.LP1:
  146. return _lp1;
  147. case ModuleName.LP2:
  148. return _lp2;
  149. }
  150. return null;
  151. }
  152. }
  153. }