SchedulerModuleFactory.cs 7.5 KB

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