ModuleName.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704
  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. [EnumMember]
  59. Aligner1,
  60. [EnumMember]
  61. Aligner2,
  62. [EnumMember]
  63. AlignerA,
  64. [EnumMember]
  65. AlignerB,
  66. //load locks
  67. [EnumMember]
  68. LL1,
  69. [EnumMember]
  70. LL2,
  71. [EnumMember]
  72. LL3,
  73. [EnumMember]
  74. LL4,
  75. [EnumMember]
  76. LL5,
  77. [EnumMember]
  78. LL6,
  79. [EnumMember]
  80. LL7,
  81. [EnumMember]
  82. LL8,
  83. //load locks
  84. [EnumMember]
  85. LLA,
  86. [EnumMember]
  87. LLB,
  88. [EnumMember]
  89. LLC,
  90. [EnumMember]
  91. LLD,
  92. [EnumMember]
  93. LLE,
  94. [EnumMember]
  95. LLF,
  96. [EnumMember]
  97. LLG,
  98. [EnumMember]
  99. LLH,
  100. [EnumMember]
  101. VCE1,
  102. [EnumMember]
  103. VCE2,
  104. [EnumMember]
  105. VCEA,
  106. [EnumMember]
  107. VCEB,
  108. //transfer modules
  109. [EnumMember]
  110. TM,
  111. [EnumMember]
  112. Cooling1,
  113. [EnumMember]
  114. Cooling2,
  115. //buffers
  116. [EnumMember]
  117. Buffer,
  118. [EnumMember]
  119. Buffer1,
  120. [EnumMember]
  121. Buffer2,
  122. [EnumMember]
  123. Buffer3,
  124. [EnumMember]
  125. Buffer4,
  126. [EnumMember]
  127. Buffer5,
  128. [EnumMember]
  129. Buffer6,
  130. //PMs
  131. [EnumMember]
  132. PM,
  133. [EnumMember]
  134. PM1,
  135. [EnumMember]
  136. PM2,
  137. [EnumMember]
  138. PM3,
  139. [EnumMember]
  140. PM4,
  141. [EnumMember]
  142. PM5,
  143. [EnumMember]
  144. PM6,
  145. [EnumMember]
  146. PM7,
  147. [EnumMember]
  148. PM8,
  149. [EnumMember]
  150. PMA,
  151. [EnumMember]
  152. PMB,
  153. [EnumMember]
  154. PMC,
  155. [EnumMember]
  156. PMD,
  157. //PMs
  158. [EnumMember]
  159. Spin1L,
  160. [EnumMember]
  161. Spin1H,
  162. [EnumMember]
  163. Spin2L,
  164. [EnumMember]
  165. Spin2H,
  166. [EnumMember]
  167. Spin3L,
  168. [EnumMember]
  169. Spin3H,
  170. [EnumMember]
  171. Spin4L,
  172. [EnumMember]
  173. Spin4H,
  174. [EnumMember]
  175. Spin5L,
  176. [EnumMember]
  177. Spin5H,
  178. [EnumMember]
  179. Spin6L,
  180. [EnumMember]
  181. Spin6H,
  182. [EnumMember]
  183. LDULD,
  184. [EnumMember]
  185. BufferOut,
  186. [EnumMember]
  187. BufferIn,
  188. [EnumMember]
  189. Dryer,
  190. [EnumMember]
  191. QDR,
  192. [EnumMember]
  193. Robot,
  194. [EnumMember]
  195. Handler,
  196. [EnumMember]
  197. WIDReader1,
  198. [EnumMember]
  199. WIDReader2,
  200. [EnumMember]
  201. LL1IN,
  202. [EnumMember]
  203. LL1OUT,
  204. [EnumMember]
  205. LL2IN,
  206. [EnumMember]
  207. LL2OUT,
  208. [EnumMember]
  209. TurnOverStation,
  210. [EnumMember]
  211. Host,
  212. [EnumMember]
  213. PTR,
  214. [EnumMember]
  215. Cooling,
  216. [EnumMember]
  217. Cassette,
  218. [EnumMember]
  219. CassInnerL,
  220. [EnumMember]
  221. CassInnerR,
  222. [EnumMember]
  223. CassOuterL,
  224. [EnumMember]
  225. CassOuterR,
  226. [EnumMember]
  227. CassAL,
  228. [EnumMember]
  229. CassAR,
  230. [EnumMember]
  231. CassBL,
  232. [EnumMember]
  233. CassBR,
  234. [EnumMember]
  235. Shuttle,
  236. [EnumMember]
  237. CoolingBuffer1,
  238. [EnumMember]
  239. CoolingBuffer2,
  240. [EnumMember]
  241. LoadLock,
  242. [EnumMember]
  243. SMIFLeft,
  244. [EnumMember]
  245. SMIFRight,
  246. [EnumMember]
  247. SMIFA,
  248. [EnumMember]
  249. SMIFB,
  250. [EnumMember]
  251. SPM1,
  252. [EnumMember]
  253. SPM2,
  254. [EnumMember]
  255. BRM1,
  256. [EnumMember]
  257. BRM2,
  258. [EnumMember]
  259. CCU,
  260. [EnumMember]
  261. Buffer7,
  262. [EnumMember]
  263. Buffer8,
  264. [EnumMember]
  265. Robot1,
  266. [EnumMember]
  267. Robot2,
  268. [EnumMember]
  269. CassetteRobot,
  270. [EnumMember]
  271. SignalTower,
  272. [EnumMember]
  273. TurnStation,
  274. [EnumMember]
  275. InternalCassette1,
  276. [EnumMember]
  277. InternalCassette2,
  278. [EnumMember]
  279. InternalCassette3,
  280. [EnumMember]
  281. InternalCassette4,
  282. [EnumMember]
  283. InternalCassette5,
  284. [EnumMember]
  285. InternalCassette6,
  286. [EnumMember]
  287. InternalCassette7,
  288. [EnumMember]
  289. InternalCassette8,
  290. [EnumMember]
  291. InternalCassette9,
  292. [EnumMember]
  293. InternalCassette10,
  294. [EnumMember]
  295. Prs1,
  296. [EnumMember]
  297. Prs2,
  298. [EnumMember]
  299. Prs3,
  300. [EnumMember]
  301. Prs4,
  302. [EnumMember]
  303. PerHeat,
  304. [EnumMember]
  305. StageA,
  306. [EnumMember]
  307. StageB,
  308. }
  309. public static class ModuleHelper
  310. {
  311. public static bool IsTurnOverStation(ModuleName unit)
  312. {
  313. return unit == ModuleName.TurnOverStation;
  314. }
  315. public static bool IsLoadPort(ModuleName unit)
  316. {
  317. return unit == ModuleName.LP1
  318. || unit == ModuleName.LP2
  319. || unit == ModuleName.LP3
  320. || unit == ModuleName.LP4
  321. || unit == ModuleName.LP5
  322. || unit == ModuleName.LP6
  323. || unit == ModuleName.LP7
  324. || unit == ModuleName.LP8
  325. || unit == ModuleName.LP9
  326. || unit == ModuleName.LP10;
  327. }
  328. public static bool IsCoolingBuffer(ModuleName unit)
  329. {
  330. return unit == ModuleName.CoolingBuffer1
  331. || unit == ModuleName.CoolingBuffer2;
  332. }
  333. public static bool IsCassette(ModuleName unit)
  334. {
  335. return unit == ModuleName.CassAL
  336. || unit == ModuleName.CassAR
  337. || unit == ModuleName.CassBL
  338. || unit == ModuleName.CassBR
  339. || unit == ModuleName.Cassette;
  340. }
  341. public static bool IsBuffer(ModuleName unit)
  342. {
  343. return unit == ModuleName.Buffer
  344. || unit == ModuleName.Buffer1
  345. || unit == ModuleName.Buffer2
  346. || unit == ModuleName.Buffer3
  347. || unit == ModuleName.Buffer4
  348. || unit == ModuleName.Buffer5
  349. || unit == ModuleName.Buffer6
  350. || unit == ModuleName.Buffer7
  351. || unit == ModuleName.Buffer8
  352. || unit == ModuleName.BufferIn
  353. || unit == ModuleName.BufferOut;
  354. }
  355. public static bool IsPm(string unit)
  356. {
  357. return IsPm(ModuleHelper.Converter(unit));
  358. }
  359. public static bool IsPm(ModuleName unit)
  360. {
  361. return unit == ModuleName.PM1
  362. || unit == ModuleName.PM2
  363. || unit == ModuleName.PM3
  364. || unit == ModuleName.PM4
  365. || unit == ModuleName.PM5
  366. || unit == ModuleName.PM6
  367. || unit == ModuleName.PM7
  368. || unit == ModuleName.PM8
  369. || unit == ModuleName.Spin1L
  370. || unit == ModuleName.Spin1H
  371. || unit == ModuleName.Spin2L
  372. || unit == ModuleName.Spin2H
  373. || unit == ModuleName.Spin3L
  374. || unit == ModuleName.Spin3H
  375. || unit == ModuleName.Spin4L
  376. || unit == ModuleName.Spin4H
  377. || unit == ModuleName.PM
  378. || unit == ModuleName.PMA
  379. || unit == ModuleName.PMB
  380. || unit == ModuleName.PMC
  381. || unit == ModuleName.PMD
  382. || unit == ModuleName.SPM1
  383. || unit == ModuleName.SPM2
  384. || unit == ModuleName.BRM1
  385. || unit == ModuleName.BRM2
  386. ;
  387. }
  388. public static bool IsLoadLock(string unit)
  389. {
  390. return IsLoadLock(ModuleHelper.Converter(unit));
  391. }
  392. public static bool IsLoadLock(ModuleName unit)
  393. {
  394. return unit == ModuleName.LLA
  395. || unit == ModuleName.LLB
  396. || unit == ModuleName.LL1
  397. || unit == ModuleName.LL1IN
  398. || unit == ModuleName.LL1OUT
  399. || unit == ModuleName.LL2
  400. || unit == ModuleName.LL2IN
  401. || unit == ModuleName.LL2OUT
  402. || unit == ModuleName.LL3
  403. || unit == ModuleName.LL4
  404. || unit == ModuleName.LL5
  405. || unit == ModuleName.LL6
  406. || unit == ModuleName.LL7
  407. || unit == ModuleName.LL8
  408. || unit == ModuleName.LLC
  409. || unit == ModuleName.LLD
  410. || unit == ModuleName.LoadLock
  411. || unit == ModuleName.VCEA
  412. || unit == ModuleName.VCEB;
  413. }
  414. public static bool IsCooling(string unit)
  415. {
  416. return IsCooling(ModuleHelper.Converter(unit));
  417. }
  418. public static bool IsCooling(ModuleName unit)
  419. {
  420. return unit == ModuleName.Cooling
  421. || unit == ModuleName.CoolingBuffer1
  422. || unit == ModuleName.CoolingBuffer2;
  423. }
  424. public static bool IsAligner(string unit)
  425. {
  426. return IsAligner(ModuleHelper.Converter(unit));
  427. }
  428. public static bool IsAligner(ModuleName unit)
  429. {
  430. return unit == ModuleName.Aligner
  431. || unit == ModuleName.Aligner1
  432. || unit == ModuleName.Aligner2;
  433. }
  434. public static bool IsRobot(string unit)
  435. {
  436. return IsRobot(ModuleHelper.Converter(unit));
  437. }
  438. public static bool IsRobot(ModuleName unit)
  439. {
  440. return unit.ToString().Contains("Robot");
  441. }
  442. public static bool IsEfemRobot(string unit)
  443. {
  444. return IsEfemRobot(ModuleHelper.Converter(unit));
  445. }
  446. public static bool IsEfemRobot(ModuleName unit)
  447. {
  448. return unit == ModuleName.EfemRobot;
  449. }
  450. public static bool IsTMRobot(string unit)
  451. {
  452. return IsTMRobot(ModuleHelper.Converter(unit));
  453. }
  454. public static bool IsTMRobot(ModuleName unit)
  455. {
  456. return unit == ModuleName.TMRobot;
  457. }
  458. public static bool IsTurnStation(ModuleName unit)
  459. {
  460. return unit == ModuleName.TurnStation;
  461. }
  462. public static bool IsVCE(string unit)
  463. {
  464. return IsVCE(ModuleHelper.Converter(unit));
  465. }
  466. public static bool IsVCE(ModuleName unit)
  467. {
  468. return unit == ModuleName.VCE1|| unit == ModuleName.VCE2|| unit == ModuleName.VCEA|| unit == ModuleName.VCEB;
  469. }
  470. public static bool IsWIDReader(ModuleName unit)
  471. {
  472. switch(unit)
  473. {
  474. case ModuleName.WIDReader1:
  475. case ModuleName.WIDReader2:
  476. return true;
  477. default:
  478. return false;
  479. }
  480. }
  481. public static string GetAbbr(ModuleName module)
  482. {
  483. switch (module)
  484. {
  485. case ModuleName.Aligner: return "PA";
  486. case ModuleName.Robot: return "RB";
  487. default: return module.ToString();
  488. }
  489. }
  490. public static string GetE84LpName(string device)
  491. {
  492. string e84 = string.Empty;
  493. switch(device)
  494. {
  495. case "P1":
  496. case "LP1":
  497. e84 = "Loadport1E84";
  498. break;
  499. case "P2":
  500. case "LP2":
  501. e84 = "Loadport2E84";
  502. break;
  503. case "P3":
  504. case "LP3":
  505. e84 = "Loadport3E84";
  506. break;
  507. case "P4":
  508. case "LP4":
  509. e84 = "Loadport4E84";
  510. break;
  511. case "P5":
  512. case "LP5":
  513. e84 = "Loadport5E84";
  514. break;
  515. case "P6":
  516. case "LP6":
  517. e84 = "Loadport6E84";
  518. break;
  519. case "P7":
  520. case "LP7":
  521. e84 = "Loadport7E84";
  522. break;
  523. case "P8":
  524. case "LP8":
  525. e84 = "Loadport8E84";
  526. break;
  527. case "P9":
  528. case "LP9":
  529. e84 = "Loadport9E84";
  530. break;
  531. case "P10":
  532. case "LP10":
  533. e84 = "Loadport10E84";
  534. break;
  535. }
  536. return e84;
  537. }
  538. public static ModuleName Converter(string module)
  539. {
  540. return (ModuleName) Enum.Parse(typeof(ModuleName), module);
  541. }
  542. /// <summary>
  543. ///
  544. /// </summary>
  545. /// <param name="index">0 based</param>
  546. /// <returns></returns>
  547. public static ModuleName GetLoadPort(int index)
  548. {
  549. ModuleName[] lps = new ModuleName[]
  550. {
  551. ModuleName.LP1, ModuleName.LP2, ModuleName.LP3, ModuleName.LP4, ModuleName.LP5,
  552. ModuleName.LP6, ModuleName.LP7, ModuleName.LP8, ModuleName.LP9, ModuleName.LP10,
  553. };
  554. return lps[index];
  555. }
  556. }
  557. public class ModuleNameString
  558. {
  559. public const string System = "System";
  560. public const string LDULD = "LDULD";
  561. public const string BufferOut = "BufferOut";
  562. public const string BufferIn = "BufferIn";
  563. public const string Dryer = "Dryer";
  564. public const string QDR = "QDR";
  565. public const string Robot = "Robot";
  566. public const string Handler = "Handler";
  567. }
  568. }