using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using Venus_RT.Devices; using MECF.Framework.Common.Routine; using Venus_Core; namespace Venus_RT.Modules.PMs { class LoadLockVentRoutine : PMRoutineBase, IRoutine { private enum VentStep { kClosePendulumValve, kCloseValves, kVent, kOverVent, kCloseVentValves, } private int _overVentTime = 2000; private int _checkATMTimeout = 90000; //private int _ATMPressureLL = 720000; public LoadLockVentRoutine(JetPMBase chamber) : base(chamber) { Name = "Loadlock Vent"; } public RState Start(params object[] objs) { if (CheckLidLoadLock()&& CheckSlitDoor()&& CheckATMLoadLock()) { Reset(); // _chamber.CloseValves(); //_chamber.TurnPendulumValve(false); _checkATMTimeout = SC.GetValue($"{Module}.CheckATMTimeout") * 1000; _overVentTime = SC.GetValue($"{Module}.OverVentTime"); return Runner.Start(Module, Name); } return RState.Failed; } public RState Monitor() { Runner.Run((int)VentStep.kClosePendulumValve, ClosePendulumValve, _delay_1s) .Run((int)VentStep.kCloseValves, CloseValves, _delay_1s) //.Run((int)VentStep.kVent, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true), () => { return _chamber.LoadlockPressure >= _ATMPressureLL; }, _checkATMTimeout) .Run((int)VentStep.kVent, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true), () => { return _chamber.IsATMLoadlock; }, _checkATMTimeout) .Delay((int)VentStep.kOverVent, _overVentTime) .End((int)VentStep.kCloseVentValves, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, false), _delay_1s); return Runner.Status; } public void Abort() { CloseAllValves(); } public bool ClosePendulumValve() { if (_chamber.PendulumValveIsOpen() == true) { _chamber.TurnPendulumValve(false); } _chamber.OpenValve(ValveType.TurboPumpPurge, false); _chamber.OpenValve(ValveType.Guage, false); return true; } public bool CloseValves() { _chamber.OpenValve(ValveType.TurboPumpPumping, false); return true; } public bool CheckATMLoadLock() { if (_chamber.IsATMLoadlock) { this.Stop("LoadLock 是ATM状态"); return false; } return true; } } }