| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | 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 LoadLockPumpRoutine : PMRoutineBase, IRoutine    {        private enum PumpStep        {            kClosePendulumValve,            kCloseValves,            KCloseISO,            kPump,            kClosePumpValves,        }        private int _basePressureLL = 100;        private int _pumpTimeLimitLL = 120;                        public LoadLockPumpRoutine(JetPMBase chamber) : base(chamber)        {            Name = "Loadlock Pump";        }        public RState Start(params object[] objs)        {            if (CheckLidLoadLock() &&                CheckSlitDoor() &&                CheckDryPump())            {                Reset();                //_chamber.CloseValves();                _basePressureLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpBasePressure");                _pumpTimeLimitLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpTimeLimit");                               return Runner.Start(Module, Name);            }            return RState.Failed;        }        public RState Monitor()        {          Runner.Run(PumpStep.kClosePendulumValve,  ClosePendulumValve,                                                         _delay_1s)                .Run(PumpStep.kCloseValves,         CloseValves,                                                                _delay_1s)                .Run(PumpStep.KCloseISO,            HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false))                .Run(PumpStep.kPump,                HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true),        () => { return _chamber.LoadlockPressure <= _basePressureLL; }, _pumpTimeLimitLL * 1000)                .End(PumpStep.kClosePumpValves,     HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, false),       _delay_1s);            return Runner.Status;        }        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 void Abort()        {            CloseAllValves();        }    }}
 |