| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 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 VentRoutine : PMRoutineBase, IRoutine    {        private enum VentStep        {            kISODelay,            kClosePVValves,            kOpenVentValves,            kDelay_2,            kCloseVentValves,        }        //private int _ventTime;        private double _ventTimeDelay = 1;          private int _checkATMTimeout = 90;        public VentRoutine(JetPM chamber) : base(chamber)        {            Name = "PM Vent";        }        public RState Start(params object[] objs)        {            if (CheckLid() &&                CheckSlitDoor() &&                CheckCDA() &&                CheckATM())            {                Reset();                _chamber.CloseValves();                _chamber.OpenValve(ValveType.TurboPumpPumping, true);                _chamber.OpenValve(ValveType.TurboPumpPurge, true);                _chamber.OpenValve(ValveType.PVN22, true);                _chamber.OpenValve(ValveType.GasFinal, true);                _checkATMTimeout = SC.GetValue<int>($"{Module}.CheckATMTimeout");                _ventTimeDelay = SC.GetValue<double>($"{Module}.OverVentTime");                return Runner.Start(Module, Name);            }            return RState.Failed;        }        public RState Monitor()        {            Runner.Delay((int)VentStep.kISODelay,       _delay_2s)                .Run((int)VentStep.kClosePVValves,      ClosePVValves,                                              _delay_10s)                .Run((int)VentStep.kOpenVentValves,     HOFs.WrapAction(_chamber.OpenValve, ValveType.N2, true),   ()=> { return _chamber.IsATM; }, _checkATMTimeout * 1000)                .Delay((int)VentStep.kDelay_2,          (int)_ventTimeDelay)                .End((int)VentStep.kCloseVentValves,    CloseVentGasFinalValves,                                    _delay_2s);            return Runner.Status;        }        private bool ClosePVValves()        {            _chamber.OpenValve(ValveType.Guage, false);            return _chamber.TurnPendulumValve(false);        }        private bool CloseVentGasFinalValves()        {            _chamber.OpenValve(ValveType.GasFinal, false);            _chamber.OpenValve(ValveType.N2, false);            return true;        }        public void Abort()        {            CloseAllValves();        }    }}
 |