| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 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        {            kCloseValves,            kPump,            kClosePumpValves,        }        private int _basePressureLL = 100;        private int _pumpTimeLimitLL = 120;                public LoadLockPumpRoutine(JetPM 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.Delay((int)PumpStep.kCloseValves,    _delay_1s)                .Run((int)PumpStep.kPump,               HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true),   () => { return _chamber.LoadlockPressure <= _basePressureLL; }, _pumpTimeLimitLL * 1000)                .End((int)PumpStep.kClosePumpValves,    HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, false),  _delay_1s);            return Runner.Status;        }        public void Abort()        {            CloseAllValves();        }    }}
 |