using System; using System.Collections.Generic; using System.IO; using Aitex.Core.Common; using Aitex.Core.RT.Device; using Aitex.Core.RT.OperationCenter; using Aitex.Core.RT.SCCore; using Aitex.RT.Device.Custom; using MECF.Framework.Common.Equipment; using Venus_RT.Modules; using Venus_RT.Devices; using Venus_RT.Devices.EPD; using Venus_Core; using Aitex.Common.Util; using System.Reflection; namespace Venus_RT.Instances { public class DeviceEntity : DeviceEntityT { public DeviceEntity() { } } public class DeviceManager : DeviceManagerBase { private string device_model_file; private readonly string device_model_file_MF; public DeviceManager() { //switch (RtInstance.CurrentChamber) //{ // case JetChamber.Venus: // device_model_file= PathManager.GetCfgDir() + RtInstance.CurrentChamber.ToString() + "\\" + "DeviceModelVenus.xml.xml"; // break; // case JetChamber.Kepler2300: // case JetChamber.Kepler2200A: // case JetChamber.Kepler2200B: // device_model_file = PathManager.GetCfgDir() + RtInstance.CurrentChamber.ToString() + "\\" + "DeviceModelKepler.xml.xml"; // break; //} device_model_file_MF = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config\\","TM", RtInstance.DeviceModelFileName_MF); } public override bool Initialize() { if (ModuleHelper.IsInstalled(ModuleName.PMA)) { JetChamber jetChamber = (JetChamber)SC.GetValue("PMA.ChamberType"); InitPM(ModuleName.PMA, jetChamber); } if (ModuleHelper.IsInstalled(ModuleName.PMB)) { JetChamber jetChamber = (JetChamber)SC.GetValue("PMB.ChamberType"); InitPM(ModuleName.PMB, jetChamber); } if (ModuleHelper.IsInstalled(ModuleName.PMC)) { JetChamber jetChamber = (JetChamber)SC.GetValue("PMC.ChamberType"); InitPM(ModuleName.PMC, jetChamber); } if (ModuleHelper.IsInstalled(ModuleName.PMD)) { JetChamber jetChamber = (JetChamber)SC.GetValue("PMD.ChamberType"); InitPM(ModuleName.PMD, jetChamber); } if (ModuleHelper.IsInstalled(ModuleName.TM)) InitTM(ModuleName.TM); AddCustomModuleDevice(new VenusSignalTower("System", "SignalTower")); OP.Subscribe("DeviceOperation", this.Invoke); return true; } private void InitPM(ModuleName mod,JetChamber jetChamber) { //switch (jetChamber) //{ // case JetChamber.Venus: // device_model_file = PathManager.GetCfgDir() +"PM"+"\\"+ jetChamber.ToString() + "\\" + "VenusDeviceModel.xml"; // break; // case JetChamber.Kepler2300: // device_model_file = PathManager.GetCfgDir() + "PM" + "\\" + jetChamber.ToString() + "\\" + "Kepler2300DeviceModel.xml"; // break; // case JetChamber.Kepler2200A: // case JetChamber.Kepler2200B: // device_model_file = PathManager.GetCfgDir() + jetChamber.ToString() + "\\" + "DeviceModelKepler.xml"; // break; // default: // break; //} device_model_file = PathManager.GetCfgDir() + "PM" + "\\" + jetChamber.ToString() + "\\" + $"{jetChamber.ToString()}DeviceModel.xml"; Initialize(device_model_file, jetChamber.ToString(), mod, mod.ToString()); if (SC.GetValue($"{mod}.Rf.CommunicationType") == (int)CommunicationType.RS232 && SC.GetValue($"{mod}.Rf.MFG") == (int)GeneratorMFG.AdTec) { AddCustomModuleDevice(new AdTecGenerator(mod, Venus_Core.VenusDevice.Rf)); } if (SC.GetValue($"{mod}.BiasRf.EnableBiasRF")) { if(SC.GetValue($"{mod}.BiasRf.CommunicationType") == (int)CommunicationType.Ethernet && SC.GetValue($"{mod}.BiasRf.MFG") == (int)GeneratorMFG.Comet) { AddCustomModuleDevice(new CometRF(mod, SC.GetStringValue($"{mod}.BiasRf.IPAddress"))); } else if(SC.GetValue($"{mod}.BiasRf.MFG") == (int)GeneratorMFG.AdTec) { AddCustomModuleDevice(new AdTecGenerator(mod, Venus_Core.VenusDevice.BiasRf)); } } if (SC.GetValue($"{mod}.Chiller.EnableChiller") && SC.GetValue($"{mod}.Chiller.CommunicationType") == (int)CommunicationType.RS232) { if(SC.GetValue($"{mod}.Chiller.MFG") == (int)ChillerMFG.SMC) { AddCustomModuleDevice(new SMCChiller(mod, "Chiller")); } else if(SC.GetValue($"{mod}.Chiller.MFG") == (int)ChillerMFG.AIRSYS) { AddCustomModuleDevice(new AIRSYSChiller(mod, "Chiller")); } } if (SC.GetValue($"{mod}.InnerChiller.EnableChiller") && SC.GetValue($"{mod}.InnerChiller.CommunicationType") == (int)CommunicationType.RS232) { if (SC.GetValue($"{mod}.InnerChiller.MFG") == (int)ChillerMFG.SMC) { AddCustomModuleDevice(new SMCChiller(mod, "InnerChiller")); } else if (SC.GetValue($"{mod}.InnerChiller.MFG") == (int)ChillerMFG.AIRSYS) { AddCustomModuleDevice(new AIRSYSChiller(mod, "InnerChiller")); } } if (SC.GetValue($"{mod}.OuterChiller.EnableChiller") && SC.GetValue($"{mod}.OuterChiller.CommunicationType") == (int)CommunicationType.RS232) { if (SC.GetValue($"{mod}.OuterChiller.MFG") == (int)ChillerMFG.SMC) { AddCustomModuleDevice(new SMCChiller(mod, "OuterChiller")); } else if (SC.GetValue($"{mod}.OuterChiller.MFG") == (int)ChillerMFG.AIRSYS) { AddCustomModuleDevice(new AIRSYSChiller(mod, "OuterChiller")); } } if (SC.GetValue($"{mod}.TopChiller.EnableChiller") && SC.GetValue($"{mod}.TopChiller.CommunicationType") == (int)CommunicationType.RS232) { if (SC.GetValue($"{mod}.TopChiller.MFG") == (int)ChillerMFG.SMC) { AddCustomModuleDevice(new SMCChiller(mod, "TopChiller")); } else if (SC.GetValue($"{mod}.TopChiller.MFG") == (int)ChillerMFG.AIRSYS) { AddCustomModuleDevice(new AIRSYSChiller(mod, "TopChiller")); } } if (SC.GetValue($"{mod}.Match.EnableMatch") && SC.GetValue($"{mod}.Match.CommunicationType") == (int)CommunicationType.RS232 && SC.GetValue($"{mod}.Match.MFG") == (int)MatchMFG.AdTec) { AddCustomModuleDevice(new AdTecMatch(mod, Venus_Core.VenusDevice.Match)); } if (SC.GetValue($"{mod}.BiasMatch.EnableBiasMatch") && SC.GetValue($"{mod}.BiasMatch.CommunicationType") == (int)CommunicationType.RS232 && SC.GetValue($"{mod}.BiasMatch.MFG") == (int)MatchMFG.AdTec) { AddCustomModuleDevice(new AdTecMatch(mod, Venus_Core.VenusDevice.BiasMatch)); } if (SC.GetValue($"{mod}.DryPump.CommunicationType") == (int)CommunicationType.RS232) { if (SC.GetValue($"{mod}.DryPump.MFG") == (int)DryPumpMFG.SKY) { AddCustomModuleDevice(new SkyPump(mod)); } else if (SC.GetValue($"{mod}.DryPump.MFG") == (int)DryPumpMFG.Edwards) { AddCustomModuleDevice(new EdwardsPump(mod)); } } AddCustomModuleDevice(new ESC5HighVoltage(mod)); AddCustomModuleDevice(new AdixenTurboPump(mod)); AddCustomModuleDevice(new PendulumValve(mod)); if (SC.GetValue($"{mod}.EPD.IsEnabled") == true) { if (SC.GetValue($"{mod}.EPD.EPDType") == 0) { AddCustomModuleDevice(new EPDClient(mod)); } else { AddCustomModuleDevice(new EPDDevice(mod)); } } //AddCustomDevice(new JetPM(mod)); switch (jetChamber) { case JetChamber.Venus: AddCustomDevice(new JetVenusPM(mod)); break; case JetChamber.Kepler2300: AddCustomDevice(new JetKepler2300PM(mod)); break; case JetChamber.Kepler2200A: AddCustomDevice(new JetKepler2200APM(mod)); break; case JetChamber.Kepler2200B: break; } } private void InitTM(ModuleName mod) { Initialize(device_model_file_MF, mod.ToString(), mod, mod.ToString()); if (SC.GetValue($"LLA.DryPump.CommunicationType") == (int)CommunicationType.RS232) { if (SC.GetValue($"LLA.DryPump.MFG") == (int)DryPumpMFG.SKY) { AddCustomModuleDevice(new SkyPump(ModuleName.LLA)); } else if (SC.GetValue($"LLA.DryPump.MFG") == (int)DryPumpMFG.Edwards) { AddCustomModuleDevice(new EdwardsPump(ModuleName.LLA)); } } if (SC.GetValue($"{mod}.DryPump.CommunicationType") == (int)CommunicationType.RS232) { if (SC.GetValue($"{mod}.DryPump.MFG") == (int)DryPumpMFG.SKY) { AddCustomModuleDevice(new SkyPump(mod)); } else if (SC.GetValue($"{mod}.DryPump.MFG") == (int)DryPumpMFG.Edwards) { AddCustomModuleDevice(new EdwardsPump(mod)); } } //AddCustomModuleDevice(new SkyPump(mod)); //AddCustomModuleDevice(new SkyPump(ModuleName.LLA)); AddCustomDevice(new JetTM()); } private WaferSize MapWaferSize(int value) { switch (value) { case 3: return WaferSize.WS3; case 4: return WaferSize.WS4; case 6: return WaferSize.WS6; case 8: return WaferSize.WS8; } return WaferSize.WS0; } private bool Invoke(string arg1, object[] args) { string name = (string)args[0]; string func = (string)args[1]; object[] param = new object[args.Length - 2]; for (int i = 2; i < args.Length; i++) param[i - 2] = args[i].ToString(); DEVICE.Do(string.Format("{0}.{1}", name, func), 0, true, param); return true; } } }