| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 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        {            kCloseValves,            kVent,            kOverVent,            kCloseVentValves,        }        private int _overVentTime = 2000;        private int _checkATMTimeout = 90000;        private int _ATMPressureLL = 720000;        public LoadLockVentRoutine(JetPM chamber) : base(chamber)        {            Name = "Loadlock Vent";        }        public RState Start(params object[] objs)        {            if (CheckLidLoadLock()&&                CheckSlitDoor()&&                CheckATMLoadLock())            {                Reset();                _chamber.CloseValves();                _checkATMTimeout = SC.GetValue<int>($"{Module}.CheckATMTimeout") * 1000;                _overVentTime = SC.GetValue<int>($"{Module}.OverVentTime");                return Runner.Start(Module, Name);            }            return RState.Failed;        }        public RState Monitor()        {            Runner.Delay((int)VentStep.kCloseValves,    _delay_1s)                .Run((int)VentStep.kVent,               HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true),      () => { return _chamber.LoadlockPressure >= _ATMPressureLL; }, _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 CheckATMLoadLock()        {            if (_chamber.IsATMLoadlock)            {                this.Stop("LoadLock 是ATM状态");                return false;            }            return true;        }    }}
 |