| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | using System;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 PumpDownRoutine : PMRoutineBase, IRoutine    {        private enum PumpStep        {            kDelay_2s,            kCloseISOValve,            kSoftPump,            kFastPump,            kPVHe2,            kISOValve,            kTurboN2Purge,            kVATValve,            kOpenTurboPumpPurgeGasFinal,            kFinalStep,            kEnd,        }        //private int _ventTime;        private int _pump_delay = 5000;        private int _roughPumpPressure = 75000;        private int _vHe2FlowPressure = 200;        private int _basePressure = 10;        public PumpDownRoutine(JetPM chamber) : base(chamber)        {            Name = "PumpDown";        }        public RState Start(params object[] objs)        {            if (CheckLid() &&                CheckSlitDoor())            {                Reset();                _chamber.CloseValves();                _roughPumpPressure = SC.GetValue<int>($"{Module}.Pump.RoughPumpDownPressure") * 1000;                _vHe2FlowPressure = SC.GetValue<int>($"{Module}.Pump.PumpVHe2FlowPressure");                _pump_delay = SC.GetValue<int>($"{Module}.Pump.PumpValveDelay") * 1000;                _basePressure = (objs.Length >= 1) ? Convert.ToInt32(objs[0]) : SC.GetValue<int>($"{Module}.Pump.PumpBasePressure");                _chamber.OpenValve(ValveType.PVN22, true);                _chamber.OpenValve(ValveType.TurboPumpPumping, true);                _chamber.TurnPendulumValve(false);                                return Runner.Start(Module, Name);            }            return RState.Failed;        }        public RState Monitor()        {            Runner.Delay((int)PumpStep.kDelay_2s, _delay_2s)                .Run((int)PumpStep.kCloseISOValve, HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false), _delay_2s)                .Run((int)PumpStep.kSoftPump, HOFs.WrapAction(_chamber.OpenValve, ValveType.SoftPump, true), () => { return _chamber.ChamberPressure < _roughPumpPressure; })                .Run((int)PumpStep.kFastPump, OpenFastPump, () => { return _chamber.ChamberPressure < _vHe2FlowPressure; })                .Run((int)PumpStep.kPVHe2, OpenHe2Valve, _delay_2s)                .Run((int)PumpStep.kISOValve, OpenISOValve, _delay_2s)                .Run((int)PumpStep.kVATValve, OpenVATValve, _delay_5s)                .Run((int)PumpStep.kOpenTurboPumpPurgeGasFinal, () =>                 {                    _chamber.OpenValve(ValveType.TurboPumpPurge, true);                    _chamber.OpenValve(ValveType.GasFinal, true);                    return true;                }, 3000)                .Run((int)PumpStep.kFinalStep,      FinalStep,                                                              () => { return _chamber.ChamberPressure < _basePressure; })                .End((int)PumpStep.kEnd,            NullFun,                                                                _delay_1s);            return Runner.Status;        }        private bool OpenFastPump()        {            _chamber.OpenValve(ValveType.SoftPump, false);            _chamber.OpenValve(ValveType.FastPump, true);            return true;        }        private bool OpenHe2Valve()        {            _chamber.OpenValve(ValveType.FastPump, false);            _chamber.OpenValve(ValveType.PVHe2, true);            return true;        }        private bool OpenISOValve()        {                        _chamber.OpenValve(ValveType.PVHe2, false);            // ISO Valve            _chamber.OpenValve(ValveType.TurboPumpPumping, true);            _chamber.OpenValve(ValveType.Guage, true);            return true;        }        private bool OpenVATValve()        {            return _chamber.TurnPendulumValve(true);        }        private bool FinalStep()        {            _chamber.OpenValve(ValveType.Guage, true);            //2023/04/25修改            //_chamber.OpenValve(ValveType.TurboPumpPurge, true);            //_chamber.OpenValve(ValveType.GasFinal, true);            return true;        }        public void Abort()        {            CloseAllValves();        }    }}
 |