| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 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<int>($"{Module}.CheckATMTimeout") * 1000;                _overVentTime = SC.GetValue<int>($"{Module}.OverVentTime");                return Runner.Start(Module, Name);            }            return RState.Failed;        }        public RState Monitor()        {          Runner.Run(VentStep.kClosePendulumValve,      ClosePendulumValve,                                                     _delay_1s)                .Run(VentStep.kCloseValves,             CloseValves,                                                            _delay_1s)                //.Run(VentStep.kVent, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true), () => { return _chamber.LoadlockPressure >= _ATMPressureLL; }, _checkATMTimeout)                .Run(VentStep.kVent,                    HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true),      () => { return _chamber.IsATMLoadlock; }, _checkATMTimeout)                .Delay(VentStep.kOverVent,              _overVentTime)                .End(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;        }    }}
 |