using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Aitex.Core.Common.DeviceData; using Aitex.Core.RT.DataCenter; using Aitex.Core.RT.Device; using Aitex.Core.RT.Device.Unit; using Aitex.Core.RT.Event; using Aitex.Core.RT.OperationCenter; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; using MECF.Framework.Common.Device.Bases; using MECF.Framework.Common.Equipment; using MECF.Framework.Common.Schedulers; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs; using Venus_RT.Devices.IODevices; using Venus_Core; namespace Venus_RT.Devices { enum ValveType { PNV21, PNV22, PV11, PV12, PV21, PV22, PV31, PV32, PV41, PV42, N2, Mfc1, Mfc2, Mfc3, Mfc4, Mfc5, Mfc6, Mfc7, Mfc8, PVHe1, PVHe2, GasFinal, SoftPump, FastPump, CHBPurge, CHBVent, TurboPumpPurge, Guage, LoadlockVent, LoadlockPumping } class JetPM : PM { private readonly IoLid _Lid; private readonly IoLid _LidLoadlock; private readonly IoCylinder _slitDoor; private readonly IoCylinder _LiftPin; private readonly IoCylinder _LoadLockArm; private readonly IoSensor _CDAPressure; private readonly IoValve _PNV21Valve; private readonly IoValve _PNV22Valve; private readonly IoValve _PV11Valve; private readonly IoValve _PV12Valve; private readonly IoValve _PV21Valve; private readonly IoValve _PV22Valve; private readonly IoValve _PV31Valve; private readonly IoValve _PV32Valve; private readonly IoValve _PV41Valve; private readonly IoValve _PV42Valve; private readonly IoValve _N2Valve; private readonly IoValve _Mfc1Valve; private readonly IoValve _Mfc2Valve; private readonly IoValve _Mfc3Valve; private readonly IoValve _Mfc4Valve; private readonly IoValve _Mfc5Valve; private readonly IoValve _Mfc6Valve; private readonly IoValve _Mfc7Valve; private readonly IoValve _Mfc8Valve; private readonly IoValve _PVHe1Valve; private readonly IoValve _PVHe2Valve; private readonly IoValve _GasFinalValve; private readonly IoValve _SoftPumpValve; private readonly IoValve _FastPumpValve; private readonly IoValve _CHBPurgeValve; private readonly IoValve _CHBVentValve; private readonly IoValve _TurboPumpPurgeValve; private readonly IoValve _GuageValve; private readonly IoValve _LoadlockVentValve; private readonly IoValve _LoadlockPumpingValve; private readonly PumpBase _MainPump; // 盖子的状态 public bool IsLidClosed => _Lid.OFFFeedback; public bool IsLidLoadlockClosed => _LidLoadlock.OFFFeedback; public bool IsSlitDoorClosed => !_slitDoor.ONFeedback && _slitDoor.OFFFeedback; public bool IsPumpRunning => _MainPump.IsRunning; public bool HasPumpError => _MainPump.IsError || !_MainPump.IsRunning; public bool IsCDA_OK => _CDAPressure.Value; public new ModuleName Module { get; } public JetPM(ModuleName mod) : base(mod.ToString()) { Module = mod; _Lid = DEVICE.GetDevice($"{Module}.{VenusDevice.Lid}"); _LidLoadlock = DEVICE.GetDevice($"{Module}.{VenusDevice.LidLoadlock}"); _slitDoor = DEVICE.GetDevice($"{Module}.{VenusDevice.SlitDoor}"); _LiftPin = DEVICE.GetDevice($"{Module}.{VenusDevice.LiftPin}"); _LoadLockArm = DEVICE.GetDevice($"{Module}.{VenusDevice.LoadLockArm}"); _PNV21Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePVN21}"); _PNV22Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePVN22}"); _PV11Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePV11}"); _PV12Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePV12}"); _PV21Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePV21}"); _PV22Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePV22}"); _PV31Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePV31}"); _PV32Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePV32}"); _PV41Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePV41}"); _PV42Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePV42}"); _N2Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveN2}"); _Mfc1Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveMfc1}"); _Mfc2Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveMfc2}"); _Mfc3Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveMfc2}"); _Mfc4Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveMfc2}"); _Mfc5Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveMfc2}"); _Mfc6Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveMfc2}"); _Mfc7Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveMfc2}"); _Mfc8Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveMfc2}"); _PVHe1Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePVHe1}"); _PVHe2Valve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValvePVHe2}"); _GasFinalValve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveGasFinal}"); _SoftPumpValve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveSoftPump}"); _FastPumpValve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveFastPump}"); _CHBPurgeValve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveCHBPurge}"); _CHBVentValve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveCHBVent}"); _TurboPumpPurgeValve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveTurboPumpPurge}"); _GuageValve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveGuage}"); _LoadlockVentValve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveLoadlockVent}"); _LoadlockPumpingValve = DEVICE.GetDevice($"{Module}.{VenusDevice.ValveLoadlockPumping}"); _MainPump = DEVICE.GetDevice($"{Module}.{VenusDevice.MainPump}"); _CDAPressure = DEVICE.GetDevice($"{Module}.SensorCDAPressureOk"); // RS232 Dry pump, SKY if (SC.GetValue($"{mod}.DryPump.CommunicationType") == (int)CommunicationType.RS232) { if (SC.GetValue($"{mod}.DryPump.MFG") == (int)DryPumpMFG.SKY) { _MainPump = DEVICE.GetDevice($"{Module}.{VenusDevice.MainPump}"); } else if (SC.GetValue($"{mod}.DryPump.MFG") == (int)DryPumpMFG.Edwards) { _MainPump = DEVICE.GetDevice($"{Module}.{VenusDevice.MainPump}"); } } } public void CloseValves() { _PNV21Valve.TurnValve(false, out _); _PNV22Valve.TurnValve(false, out _); _PV11Valve.TurnValve(false, out _); _PV12Valve.TurnValve(false, out _); _PV21Valve.TurnValve(false, out _); _PV22Valve.TurnValve(false, out _); _PV31Valve.TurnValve(false, out _); _PV32Valve.TurnValve(false, out _); _PV41Valve.TurnValve(false, out _); _PV42Valve.TurnValve(false, out _); _PVHe1Valve.TurnValve(false, out _); _PVHe2Valve.TurnValve(false, out _); _GasFinalValve.TurnValve(false, out _); _SoftPumpValve.TurnValve(false, out _); _FastPumpValve.TurnValve(false, out _); _CHBPurgeValve.TurnValve(false, out _); _CHBVentValve.TurnValve(false, out _); _TurboPumpPurgeValve.TurnValve(false, out _); _GuageValve.TurnValve(false, out _); _LoadlockVentValve.TurnValve(false, out _); _LoadlockPumpingValve.TurnValve(false, out _); _N2Valve.TurnValve(false, out _); _FastPumpValve.TurnValve(false, out _); _Mfc1Valve.TurnValve(false, out _); _Mfc2Valve.TurnValve(false, out _); _Mfc3Valve.TurnValve(false, out _); _Mfc4Valve.TurnValve(false, out _); _Mfc5Valve.TurnValve(false, out _); _Mfc6Valve.TurnValve(false, out _); _Mfc7Valve.TurnValve(false, out _); _Mfc8Valve.TurnValve(false, out _); //foreach (var stick in _gasLines) //{ // stick.Stop(); //} } public void OpenValve(ValveType vlvType, bool on) { switch (vlvType) { case ValveType.PNV21: _PNV21Valve.TurnValve(on, out _); break; case ValveType.PNV22: _PNV22Valve.TurnValve(on, out _); break; case ValveType.PV11: _PV11Valve.TurnValve(on, out _); break; case ValveType.PV12: _PV12Valve.TurnValve(on, out _); break; case ValveType.PV21: _PV21Valve.TurnValve(on, out _); break; case ValveType.PV22: _PV22Valve.TurnValve(on, out _); break; case ValveType.PV31: _PV31Valve.TurnValve(on, out _); break; case ValveType.PV32: _PV32Valve.TurnValve(on, out _); break; case ValveType.PV41: _PV41Valve.TurnValve(on, out _); break; case ValveType.PV42: _PV42Valve.TurnValve(on, out _); break; case ValveType.N2: _N2Valve.TurnValve(on, out _); break; case ValveType.PVHe1: _PVHe1Valve.TurnValve(on, out _); break; case ValveType.PVHe2: _PVHe2Valve.TurnValve(on, out _); break; case ValveType.GasFinal: _GasFinalValve.TurnValve(on, out _); break; case ValveType.SoftPump: _SoftPumpValve.TurnValve(on, out _); break; case ValveType.FastPump: _FastPumpValve.TurnValve(on, out _); break; case ValveType.CHBPurge: _CHBPurgeValve.TurnValve(on, out _); break; case ValveType.CHBVent: _CHBVentValve.TurnValve(on, out _); break; case ValveType.TurboPumpPurge: _TurboPumpPurgeValve.TurnValve(on, out _); break; case ValveType.Guage: _GuageValve.TurnValve(on, out _); break; case ValveType.LoadlockVent: _LoadlockVentValve.TurnValve(on, out _); break; case ValveType.LoadlockPumping: _LoadlockPumpingValve.TurnValve(on, out _); break; case ValveType.Mfc1: _Mfc1Valve.TurnValve(on, out _); break; case ValveType.Mfc2: _Mfc2Valve.TurnValve(on, out _); break; case ValveType.Mfc3: _Mfc3Valve.TurnValve(on, out _); break; case ValveType.Mfc4: _Mfc4Valve.TurnValve(on, out _); break; case ValveType.Mfc5: _Mfc5Valve.TurnValve(on, out _); break; case ValveType.Mfc6: _Mfc6Valve.TurnValve(on, out _); break; case ValveType.Mfc7: _Mfc7Valve.TurnValve(on, out _); break; case ValveType.Mfc8: _Mfc8Valve.TurnValve(on, out _); break; default: throw new ArgumentOutOfRangeException($"Argument error {vlvType}-{on}"); } } } }