|
@@ -0,0 +1,321 @@
|
|
|
|
+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<IoLid>($"{Module}.{VenusDevice.Lid}");
|
|
|
|
+ _LidLoadlock = DEVICE.GetDevice<IoLid>($"{Module}.{VenusDevice.LidLoadlock}");
|
|
|
|
+
|
|
|
|
+ _slitDoor = DEVICE.GetDevice<IoCylinder>($"{Module}.{VenusDevice.SlitDoor}");
|
|
|
|
+ _LiftPin = DEVICE.GetDevice<IoCylinder>($"{Module}.{VenusDevice.LiftPin}");
|
|
|
|
+ _LoadLockArm = DEVICE.GetDevice<IoCylinder>($"{Module}.{VenusDevice.LoadLockArm}");
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ _PNV21Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePVN21}");
|
|
|
|
+ _PNV22Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePVN22}");
|
|
|
|
+ _PV11Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV11}");
|
|
|
|
+ _PV12Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV12}");
|
|
|
|
+ _PV21Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV21}");
|
|
|
|
+ _PV22Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV22}");
|
|
|
|
+ _PV31Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV31}");
|
|
|
|
+ _PV32Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV32}");
|
|
|
|
+ _PV41Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV41}");
|
|
|
|
+ _PV42Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePV42}");
|
|
|
|
+ _N2Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveN2}");
|
|
|
|
+ _Mfc1Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc1}");
|
|
|
|
+ _Mfc2Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
|
|
|
|
+ _Mfc3Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
|
|
|
|
+ _Mfc4Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
|
|
|
|
+ _Mfc5Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
|
|
|
|
+ _Mfc6Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
|
|
|
|
+ _Mfc7Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
|
|
|
|
+ _Mfc8Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveMfc2}");
|
|
|
|
+ _PVHe1Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePVHe1}");
|
|
|
|
+ _PVHe2Valve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValvePVHe2}");
|
|
|
|
+ _GasFinalValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveGasFinal}");
|
|
|
|
+ _SoftPumpValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveSoftPump}");
|
|
|
|
+ _FastPumpValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveFastPump}");
|
|
|
|
+ _CHBPurgeValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveCHBPurge}");
|
|
|
|
+ _CHBVentValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveCHBVent}");
|
|
|
|
+ _TurboPumpPurgeValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveTurboPumpPurge}");
|
|
|
|
+ _GuageValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveGuage}");
|
|
|
|
+ _LoadlockVentValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveLoadlockVent}");
|
|
|
|
+ _LoadlockPumpingValve = DEVICE.GetDevice<IoValve>($"{Module}.{VenusDevice.ValveLoadlockPumping}");
|
|
|
|
+
|
|
|
|
+ _MainPump = DEVICE.GetDevice<PumpBase>($"{Module}.{VenusDevice.MainPump}");
|
|
|
|
+
|
|
|
|
+ _CDAPressure = DEVICE.GetDevice<IoSensor>($"{Module}.SensorCDAPressureOk");
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // RS232 Dry pump, SKY
|
|
|
|
+ if (SC.GetValue<int>($"{mod}.DryPump.CommunicationType") == (int)CommunicationType.RS232)
|
|
|
|
+ {
|
|
|
|
+ if (SC.GetValue<int>($"{mod}.DryPump.MFG") == (int)DryPumpMFG.SKY)
|
|
|
|
+ {
|
|
|
|
+ _MainPump = DEVICE.GetDevice<SkyPump>($"{Module}.{VenusDevice.MainPump}");
|
|
|
|
+ }
|
|
|
|
+ else if (SC.GetValue<int>($"{mod}.DryPump.MFG") == (int)DryPumpMFG.Edwards)
|
|
|
|
+ {
|
|
|
|
+ _MainPump = DEVICE.GetDevice<EdwardsPump>($"{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}");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|