ModuleName.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.Serialization;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace MECF.Framework.Common.Equipment
  8. {
  9. /// <summary>
  10. /// 在框架中,Module指具备放置Wafer的单元
  11. /// </summary>
  12. [DataContract]
  13. [Serializable]
  14. public enum ModuleName
  15. {
  16. [EnumMember]
  17. System = 0,
  18. [EnumMember]
  19. LP1,
  20. [EnumMember]
  21. LP2,
  22. [EnumMember]
  23. LP3,
  24. [EnumMember]
  25. LP4,
  26. [EnumMember]
  27. LP5,
  28. [EnumMember]
  29. LP6,
  30. [EnumMember]
  31. LP7,
  32. [EnumMember]
  33. LP8,
  34. [EnumMember]
  35. LP9,
  36. [EnumMember]
  37. LP10,
  38. //robot modules
  39. //[EnumMember]
  40. //Robot,
  41. [EnumMember]
  42. VaccumRobot,
  43. [EnumMember]
  44. LoadRobot,
  45. [EnumMember]
  46. EfemRobot,
  47. [EnumMember]
  48. TMRobot,
  49. //upenders
  50. //[EnumMember]
  51. //Upender,
  52. //efem
  53. [EnumMember]
  54. EFEM,
  55. //aligners
  56. [EnumMember]
  57. Aligner,
  58. //load locks
  59. [EnumMember]
  60. LL1,
  61. [EnumMember]
  62. LL2,
  63. [EnumMember]
  64. LL3,
  65. [EnumMember]
  66. LL4,
  67. //load locks
  68. //[EnumMember]
  69. //LLA,
  70. //[EnumMember]
  71. //LLB,
  72. //[EnumMember]
  73. //LLC,
  74. //[EnumMember]
  75. //LLD,
  76. //[EnumMember]
  77. //LLE,
  78. //[EnumMember]
  79. //LLF,
  80. //[EnumMember]
  81. //LLG,
  82. //[EnumMember]
  83. //LLH,
  84. //[EnumMember]
  85. //VCE1,
  86. //[EnumMember]
  87. //VCE2,
  88. //[EnumMember]
  89. //VCEA,
  90. //transfer modules
  91. [EnumMember]
  92. TM,
  93. [EnumMember]
  94. Cooling1,
  95. [EnumMember]
  96. Cooling2,
  97. //buffers
  98. [EnumMember]
  99. Buffer,
  100. [EnumMember]
  101. Buffer1,
  102. [EnumMember]
  103. Buffer2,
  104. [EnumMember]
  105. Buffer3,
  106. [EnumMember]
  107. Buffer4,
  108. [EnumMember]
  109. Buffer5,
  110. [EnumMember]
  111. Buffer6,
  112. //PMs
  113. [EnumMember]
  114. PM,
  115. [EnumMember]
  116. PM1,
  117. [EnumMember]
  118. PM2,
  119. [EnumMember]
  120. PM3,
  121. [EnumMember]
  122. PM4,
  123. [EnumMember]
  124. PM5,
  125. [EnumMember]
  126. PM6,
  127. [EnumMember]
  128. PM7,
  129. [EnumMember]
  130. PM8,
  131. [EnumMember]
  132. PMA,
  133. [EnumMember]
  134. PMB,
  135. [EnumMember]
  136. PMC,
  137. [EnumMember]
  138. PMD,
  139. [EnumMember]
  140. Robot,
  141. [EnumMember]
  142. Handler,
  143. [EnumMember]
  144. WIDReader1,
  145. [EnumMember]
  146. WIDReader2,
  147. [EnumMember]
  148. TurnOverStation,
  149. [EnumMember]
  150. Host,
  151. [EnumMember]
  152. Cooling,
  153. [EnumMember]
  154. Cassette,
  155. [EnumMember]
  156. CassetteA,
  157. [EnumMember]
  158. CassetteB,
  159. [EnumMember]
  160. LoadLock,
  161. [EnumMember]
  162. SMIFLeft,
  163. [EnumMember]
  164. SMIFRight,
  165. [EnumMember]
  166. SMIFA,
  167. [EnumMember]
  168. SMIFB,
  169. [EnumMember]
  170. CassetteRobot,
  171. [EnumMember]
  172. SignalTower,
  173. [EnumMember]
  174. TurnStation,
  175. [EnumMember]
  176. Stocker1,
  177. [EnumMember]
  178. Stocker2,
  179. [EnumMember]
  180. Stocker3,
  181. [EnumMember]
  182. Stocker4,
  183. [EnumMember]
  184. Stocker5,
  185. [EnumMember]
  186. Stocker6,
  187. [EnumMember]
  188. Stocker7,
  189. [EnumMember]
  190. Stocker8,
  191. [EnumMember]
  192. Stocker9,
  193. [EnumMember]
  194. Stocker10,
  195. [EnumMember]
  196. Stocker11,
  197. [EnumMember]
  198. Stocker12,
  199. [EnumMember]
  200. Stocker13,
  201. [EnumMember]
  202. Stocker14,
  203. [EnumMember]
  204. Stocker15,
  205. [EnumMember]
  206. Stocker16,
  207. [EnumMember]
  208. Stocker17,
  209. [EnumMember]
  210. Stocker18,
  211. [EnumMember]
  212. Stocker19,
  213. [EnumMember]
  214. Stocker20,
  215. [EnumMember]
  216. Stocker21,
  217. [EnumMember]
  218. StageA,
  219. [EnumMember]
  220. StageB,
  221. [EnumMember]
  222. WaferRobot,
  223. [EnumMember]
  224. Boat,
  225. [EnumMember]
  226. CMB,
  227. [EnumMember]
  228. Cassette1,
  229. [EnumMember]
  230. Cassette2,
  231. [EnumMember]
  232. Cassette3,
  233. [EnumMember]
  234. Cassette4,
  235. [EnumMember]
  236. Cassette5,
  237. [EnumMember]
  238. CarrierRobot,
  239. [EnumMember]
  240. FIMS1,
  241. [EnumMember]
  242. FIMS2,
  243. [EnumMember]
  244. Minics = 0,
  245. }
  246. public static class ModuleHelper
  247. {
  248. public static bool IsTurnOverStation(ModuleName unit)
  249. {
  250. return unit == ModuleName.TurnOverStation;
  251. }
  252. public static bool IsLoadPort(ModuleName unit)
  253. {
  254. return unit == ModuleName.LP1
  255. || unit == ModuleName.LP2
  256. || unit == ModuleName.LP3
  257. || unit == ModuleName.LP4
  258. || unit == ModuleName.LP5
  259. || unit == ModuleName.LP6
  260. || unit == ModuleName.LP7
  261. || unit == ModuleName.LP8
  262. || unit == ModuleName.LP9
  263. || unit == ModuleName.LP10;
  264. }
  265. public static bool IsCassette(ModuleName unit)
  266. {
  267. return unit == ModuleName.Cassette1
  268. || unit == ModuleName.Cassette2
  269. || unit == ModuleName.Cassette3
  270. || unit == ModuleName.Cassette4
  271. || unit == ModuleName.Cassette5
  272. || unit == ModuleName.Cassette;
  273. }
  274. public static bool IsCOT(string unit)
  275. {
  276. return unit.ToString().Contains( "2_1")
  277. || unit.ToString().Contains("2_2");
  278. }
  279. public static bool IsBuffer(ModuleName unit)
  280. {
  281. return unit == ModuleName.Buffer
  282. || unit == ModuleName.Buffer1
  283. || unit == ModuleName.Buffer2
  284. || unit == ModuleName.Buffer3
  285. || unit == ModuleName.Buffer4
  286. || unit == ModuleName.Buffer5
  287. || unit == ModuleName.Buffer6;
  288. }
  289. public static bool IsBufferStocker(ModuleName unit)
  290. {
  291. return unit == ModuleName.Stocker1
  292. || unit == ModuleName.Stocker2
  293. || unit == ModuleName.Stocker3
  294. || unit == ModuleName.Stocker4
  295. || unit == ModuleName.Stocker5
  296. || unit == ModuleName.Stocker6
  297. || unit == ModuleName.Stocker7
  298. || unit == ModuleName.Stocker8
  299. || unit == ModuleName.Stocker9
  300. || unit == ModuleName.Stocker10
  301. || unit == ModuleName.Stocker11
  302. || unit == ModuleName.Stocker12
  303. || unit == ModuleName.Stocker13
  304. || unit == ModuleName.Stocker14
  305. || unit == ModuleName.Stocker15
  306. || unit == ModuleName.Stocker16;
  307. }
  308. public static bool IsFIMS(ModuleName unit)
  309. {
  310. return unit == ModuleName.FIMS1 || unit == ModuleName.FIMS2;
  311. }
  312. public static bool IsPm(string unit)
  313. {
  314. return IsPm(ModuleHelper.Converter(unit));
  315. }
  316. public static bool IsPm(ModuleName unit)
  317. {
  318. return unit == ModuleName.PM1
  319. || unit == ModuleName.PM2
  320. || unit == ModuleName.PM3
  321. || unit == ModuleName.PM4
  322. || unit == ModuleName.PM5
  323. || unit == ModuleName.PM6
  324. || unit == ModuleName.PM7
  325. || unit == ModuleName.PM8
  326. || unit == ModuleName.PM
  327. || unit == ModuleName.PMA
  328. || unit == ModuleName.PMB
  329. || unit == ModuleName.PMC
  330. || unit == ModuleName.PMD
  331. ;
  332. }
  333. public static bool IsLoadLock(string unit)
  334. {
  335. return IsLoadLock(ModuleHelper.Converter(unit));
  336. }
  337. public static bool IsLoadLock(ModuleName unit)
  338. {
  339. return unit == ModuleName.LoadLock;
  340. }
  341. public static bool IsStocker(ModuleName unit)
  342. {
  343. return unit == ModuleName.Stocker1
  344. || unit == ModuleName.Stocker2
  345. || unit == ModuleName.Stocker3
  346. || unit == ModuleName.Stocker4
  347. || unit == ModuleName.Stocker5
  348. || unit == ModuleName.Stocker6
  349. || unit == ModuleName.Stocker7
  350. || unit == ModuleName.Stocker8
  351. || unit == ModuleName.Stocker9
  352. || unit == ModuleName.Stocker10
  353. || unit == ModuleName.Stocker11
  354. || unit == ModuleName.Stocker12
  355. || unit == ModuleName.Stocker13
  356. || unit == ModuleName.Stocker14
  357. || unit == ModuleName.Stocker15
  358. || unit == ModuleName.Stocker16
  359. || unit == ModuleName.Stocker17
  360. || unit == ModuleName.Stocker18
  361. || unit == ModuleName.Stocker19
  362. || unit == ModuleName.Stocker20
  363. || unit == ModuleName.Stocker21;
  364. }
  365. public static bool IsCooling(string unit)
  366. {
  367. return IsCooling(ModuleHelper.Converter(unit));
  368. }
  369. public static bool IsCooling(ModuleName unit)
  370. {
  371. return unit == ModuleName.Cooling;
  372. }
  373. public static bool IsAligner(string unit)
  374. {
  375. return IsAligner(ModuleHelper.Converter(unit));
  376. }
  377. public static bool IsAligner(ModuleName unit)
  378. {
  379. return unit == ModuleName.Aligner;
  380. }
  381. public static bool IsRobot(string unit)
  382. {
  383. return IsRobot(ModuleHelper.Converter(unit));
  384. }
  385. public static bool IsRobot(ModuleName unit)
  386. {
  387. return unit.ToString().Contains("Robot");
  388. }
  389. public static bool IsEfemRobot(string unit)
  390. {
  391. return IsEfemRobot(ModuleHelper.Converter(unit));
  392. }
  393. public static bool IsEfemRobot(ModuleName unit)
  394. {
  395. return unit == ModuleName.EfemRobot;
  396. }
  397. public static bool IsTMRobot(string unit)
  398. {
  399. return IsTMRobot(ModuleHelper.Converter(unit));
  400. }
  401. public static bool IsTMRobot(ModuleName unit)
  402. {
  403. return unit == ModuleName.TMRobot;
  404. }
  405. public static bool IsTurnStation(ModuleName unit)
  406. {
  407. return unit == ModuleName.TurnStation;
  408. }
  409. public static string GetAbbr(ModuleName module)
  410. {
  411. switch (module)
  412. {
  413. case ModuleName.Aligner: return "PA";
  414. case ModuleName.Robot: return "RB";
  415. default: return module.ToString();
  416. }
  417. }
  418. public static string GetE84LpName(string device)
  419. {
  420. string e84 = string.Empty;
  421. switch(device)
  422. {
  423. case "P1":
  424. case "LP1":
  425. e84 = "Loadport1E84";
  426. break;
  427. case "P2":
  428. case "LP2":
  429. e84 = "Loadport2E84";
  430. break;
  431. case "P3":
  432. case "LP3":
  433. e84 = "Loadport3E84";
  434. break;
  435. case "P4":
  436. case "LP4":
  437. e84 = "Loadport4E84";
  438. break;
  439. case "P5":
  440. case "LP5":
  441. e84 = "Loadport5E84";
  442. break;
  443. case "P6":
  444. case "LP6":
  445. e84 = "Loadport6E84";
  446. break;
  447. case "P7":
  448. case "LP7":
  449. e84 = "Loadport7E84";
  450. break;
  451. case "P8":
  452. case "LP8":
  453. e84 = "Loadport8E84";
  454. break;
  455. case "P9":
  456. case "LP9":
  457. e84 = "Loadport9E84";
  458. break;
  459. case "P10":
  460. case "LP10":
  461. e84 = "Loadport10E84";
  462. break;
  463. }
  464. return e84;
  465. }
  466. public static ModuleName Converter(string module)
  467. {
  468. module = module.Replace("-", "_");
  469. if (module.ToLower().Contains("1_1"))
  470. return ModuleName.Cassette1;
  471. if (module.ToLower().Contains("1_2"))
  472. return ModuleName.Cassette2;
  473. if (module.ToLower().Contains("1_3"))
  474. return ModuleName.Cassette3;
  475. if (module.ToLower().Contains("1_4"))
  476. return ModuleName.Cassette4;
  477. if (module.ToLower().Contains("1_5"))
  478. return ModuleName.Cassette5;
  479. return (ModuleName) Enum.Parse(typeof(ModuleName), module);
  480. }
  481. /// <summary>
  482. ///
  483. /// </summary>
  484. /// <param name="index">0 based</param>
  485. /// <returns></returns>
  486. public static ModuleName GetLoadPort(int index)
  487. {
  488. ModuleName[] lps = new ModuleName[]
  489. {
  490. ModuleName.LP1, ModuleName.LP2, ModuleName.LP3, ModuleName.LP4, ModuleName.LP5,
  491. ModuleName.LP6, ModuleName.LP7, ModuleName.LP8, ModuleName.LP9, ModuleName.LP10,
  492. };
  493. return lps[index];
  494. }
  495. }
  496. public class ModuleNameString
  497. {
  498. public const string System = "System";
  499. public const string LDULD = "LDULD";
  500. public const string BufferOut = "BufferOut";
  501. public const string BufferIn = "BufferIn";
  502. public const string Dryer = "Dryer";
  503. public const string QDR = "QDR";
  504. public const string Robot = "Robot";
  505. public const string Handler = "Handler";
  506. }
  507. }