using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; namespace MECF.Framework.Common.Equipment { /// /// 在框架中,Module指具备放置Wafer的单元 /// [DataContract] [Serializable] public enum ModuleName { [EnumMember] System = 0, [EnumMember] LP1, [EnumMember] LP2, [EnumMember] LP3, [EnumMember] LP4, [EnumMember] LP5, [EnumMember] LP6, [EnumMember] LP7, [EnumMember] LP8, [EnumMember] LP9, [EnumMember] LP10, //robot modules //[EnumMember] //Robot, [EnumMember] VaccumRobot, [EnumMember] LoadRobot, [EnumMember] EfemRobot, [EnumMember] TMRobot, //upenders //[EnumMember] //Upender, //efem [EnumMember] EFEM, //aligners [EnumMember] Aligner, //load locks [EnumMember] LL1, [EnumMember] LL2, [EnumMember] LL3, [EnumMember] LL4, //load locks //[EnumMember] //LLA, //[EnumMember] //LLB, //[EnumMember] //LLC, //[EnumMember] //LLD, //[EnumMember] //LLE, //[EnumMember] //LLF, //[EnumMember] //LLG, //[EnumMember] //LLH, //[EnumMember] //VCE1, //[EnumMember] //VCE2, //[EnumMember] //VCEA, //transfer modules [EnumMember] TM, [EnumMember] Cooling1, [EnumMember] Cooling2, //buffers [EnumMember] Buffer, [EnumMember] Buffer1, [EnumMember] Buffer2, [EnumMember] Buffer3, [EnumMember] Buffer4, [EnumMember] Buffer5, [EnumMember] Buffer6, //PMs [EnumMember] PM, [EnumMember] PM1, [EnumMember] PM2, [EnumMember] PM3, [EnumMember] PM4, [EnumMember] PM5, [EnumMember] PM6, [EnumMember] PM7, [EnumMember] PM8, [EnumMember] PMA, [EnumMember] PMB, [EnumMember] PMC, [EnumMember] PMD, [EnumMember] Robot, [EnumMember] Handler, [EnumMember] WIDReader1, [EnumMember] WIDReader2, [EnumMember] TurnOverStation, [EnumMember] Host, [EnumMember] Cooling, [EnumMember] Cassette, [EnumMember] CassetteA, [EnumMember] CassetteB, [EnumMember] LoadLock, [EnumMember] SMIFLeft, [EnumMember] SMIFRight, [EnumMember] SMIFA, [EnumMember] SMIFB, [EnumMember] CassetteRobot, [EnumMember] SignalTower, [EnumMember] TurnStation, [EnumMember] Stocker1, [EnumMember] Stocker2, [EnumMember] Stocker3, [EnumMember] Stocker4, [EnumMember] Stocker5, [EnumMember] Stocker6, [EnumMember] Stocker7, [EnumMember] Stocker8, [EnumMember] Stocker9, [EnumMember] Stocker10, [EnumMember] Stocker11, [EnumMember] Stocker12, [EnumMember] Stocker13, [EnumMember] Stocker14, [EnumMember] Stocker15, [EnumMember] Stocker16, [EnumMember] Stocker17, [EnumMember] Stocker18, [EnumMember] Stocker19, [EnumMember] Stocker20, [EnumMember] Stocker21, [EnumMember] StageA, [EnumMember] StageB, [EnumMember] WaferRobot, [EnumMember] Boat, [EnumMember] CMB, [EnumMember] Cassette1, [EnumMember] Cassette2, [EnumMember] Cassette3, [EnumMember] Cassette4, [EnumMember] Cassette5, [EnumMember] CarrierRobot, [EnumMember] FIMS1, [EnumMember] FIMS2, [EnumMember] Minics = 0, } public static class ModuleHelper { public static bool IsTurnOverStation(ModuleName unit) { return unit == ModuleName.TurnOverStation; } public static bool IsLoadPort(ModuleName unit) { return unit == ModuleName.LP1 || unit == ModuleName.LP2 || unit == ModuleName.LP3 || unit == ModuleName.LP4 || unit == ModuleName.LP5 || unit == ModuleName.LP6 || unit == ModuleName.LP7 || unit == ModuleName.LP8 || unit == ModuleName.LP9 || unit == ModuleName.LP10; } public static bool IsCassette(ModuleName unit) { return unit == ModuleName.Cassette1 || unit == ModuleName.Cassette2 || unit == ModuleName.Cassette3 || unit == ModuleName.Cassette4 || unit == ModuleName.Cassette5 || unit == ModuleName.Cassette; } public static bool IsCOT(string unit) { return unit.ToString().Contains( "2_1") || unit.ToString().Contains("2_2"); } public static bool IsBuffer(ModuleName unit) { return unit == ModuleName.Buffer || unit == ModuleName.Buffer1 || unit == ModuleName.Buffer2 || unit == ModuleName.Buffer3 || unit == ModuleName.Buffer4 || unit == ModuleName.Buffer5 || unit == ModuleName.Buffer6; } public static bool IsBufferStocker(ModuleName unit) { return unit == ModuleName.Stocker1 || unit == ModuleName.Stocker2 || unit == ModuleName.Stocker3 || unit == ModuleName.Stocker4 || unit == ModuleName.Stocker5 || unit == ModuleName.Stocker6 || unit == ModuleName.Stocker7 || unit == ModuleName.Stocker8 || unit == ModuleName.Stocker9 || unit == ModuleName.Stocker10 || unit == ModuleName.Stocker11 || unit == ModuleName.Stocker12 || unit == ModuleName.Stocker13 || unit == ModuleName.Stocker14 || unit == ModuleName.Stocker15 || unit == ModuleName.Stocker16; } public static bool IsFIMS(ModuleName unit) { return unit == ModuleName.FIMS1 || unit == ModuleName.FIMS2; } public static bool IsPm(string unit) { return IsPm(ModuleHelper.Converter(unit)); } public static bool IsPm(ModuleName unit) { return unit == ModuleName.PM1 || unit == ModuleName.PM2 || unit == ModuleName.PM3 || unit == ModuleName.PM4 || unit == ModuleName.PM5 || unit == ModuleName.PM6 || unit == ModuleName.PM7 || unit == ModuleName.PM8 || unit == ModuleName.PM || unit == ModuleName.PMA || unit == ModuleName.PMB || unit == ModuleName.PMC || unit == ModuleName.PMD ; } public static bool IsLoadLock(string unit) { return IsLoadLock(ModuleHelper.Converter(unit)); } public static bool IsLoadLock(ModuleName unit) { return unit == ModuleName.LoadLock; } public static bool IsStocker(ModuleName unit) { return unit == ModuleName.Stocker1 || unit == ModuleName.Stocker2 || unit == ModuleName.Stocker3 || unit == ModuleName.Stocker4 || unit == ModuleName.Stocker5 || unit == ModuleName.Stocker6 || unit == ModuleName.Stocker7 || unit == ModuleName.Stocker8 || unit == ModuleName.Stocker9 || unit == ModuleName.Stocker10 || unit == ModuleName.Stocker11 || unit == ModuleName.Stocker12 || unit == ModuleName.Stocker13 || unit == ModuleName.Stocker14 || unit == ModuleName.Stocker15 || unit == ModuleName.Stocker16 || unit == ModuleName.Stocker17 || unit == ModuleName.Stocker18 || unit == ModuleName.Stocker19 || unit == ModuleName.Stocker20 || unit == ModuleName.Stocker21; } public static bool IsCooling(string unit) { return IsCooling(ModuleHelper.Converter(unit)); } public static bool IsCooling(ModuleName unit) { return unit == ModuleName.Cooling; } public static bool IsAligner(string unit) { return IsAligner(ModuleHelper.Converter(unit)); } public static bool IsAligner(ModuleName unit) { return unit == ModuleName.Aligner; } public static bool IsRobot(string unit) { return IsRobot(ModuleHelper.Converter(unit)); } public static bool IsRobot(ModuleName unit) { return unit.ToString().Contains("Robot"); } public static bool IsEfemRobot(string unit) { return IsEfemRobot(ModuleHelper.Converter(unit)); } public static bool IsEfemRobot(ModuleName unit) { return unit == ModuleName.EfemRobot; } public static bool IsTMRobot(string unit) { return IsTMRobot(ModuleHelper.Converter(unit)); } public static bool IsTMRobot(ModuleName unit) { return unit == ModuleName.TMRobot; } public static bool IsTurnStation(ModuleName unit) { return unit == ModuleName.TurnStation; } public static string GetAbbr(ModuleName module) { switch (module) { case ModuleName.Aligner: return "PA"; case ModuleName.Robot: return "RB"; default: return module.ToString(); } } public static string GetE84LpName(string device) { string e84 = string.Empty; switch(device) { case "P1": case "LP1": e84 = "Loadport1E84"; break; case "P2": case "LP2": e84 = "Loadport2E84"; break; case "P3": case "LP3": e84 = "Loadport3E84"; break; case "P4": case "LP4": e84 = "Loadport4E84"; break; case "P5": case "LP5": e84 = "Loadport5E84"; break; case "P6": case "LP6": e84 = "Loadport6E84"; break; case "P7": case "LP7": e84 = "Loadport7E84"; break; case "P8": case "LP8": e84 = "Loadport8E84"; break; case "P9": case "LP9": e84 = "Loadport9E84"; break; case "P10": case "LP10": e84 = "Loadport10E84"; break; } return e84; } public static ModuleName Converter(string module) { module = module.Replace("-", "_"); if (module.ToLower().Contains("1_1")) return ModuleName.Cassette1; if (module.ToLower().Contains("1_2")) return ModuleName.Cassette2; if (module.ToLower().Contains("1_3")) return ModuleName.Cassette3; if (module.ToLower().Contains("1_4")) return ModuleName.Cassette4; if (module.ToLower().Contains("1_5")) return ModuleName.Cassette5; return (ModuleName) Enum.Parse(typeof(ModuleName), module); } /// /// /// /// 0 based /// public static ModuleName GetLoadPort(int index) { ModuleName[] lps = new ModuleName[] { ModuleName.LP1, ModuleName.LP2, ModuleName.LP3, ModuleName.LP4, ModuleName.LP5, ModuleName.LP6, ModuleName.LP7, ModuleName.LP8, ModuleName.LP9, ModuleName.LP10, }; return lps[index]; } } public class ModuleNameString { public const string System = "System"; public const string LDULD = "LDULD"; public const string BufferOut = "BufferOut"; public const string BufferIn = "BufferIn"; public const string Dryer = "Dryer"; public const string QDR = "QDR"; public const string Robot = "Robot"; public const string Handler = "Handler"; } }