| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 | 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,            kOpenTurboPump,            kGasFinal,            kFinalStep,            kEnd,         }        //private int _ventTime;        private int _pump_delay = 5000;        private int _roughPumpPressure = 75000;        private int _vHe2FlowPressure = 200;        private int _basePressure = 10;        private JetChamber jetChamber = JetChamber.None;        private bool needsoft = true;        public PumpDownRoutine(JetPMBase chamber) : base(chamber)        {            jetChamber = (JetChamber)SC.GetValue<int>($"{chamber.Name}.ChamberType");            Name = "PumpDown";            if (jetChamber == JetChamber.VenusDE)            {                needsoft = false;            }        }        public RState Start(params object[] objs)        {            if (CheckLid() &&                CheckSlitDoor())            {                Reset();                _chamber.CloseValves();                _roughPumpPressure = SC.GetValue<int>($"{Module}.Pump.PumpCrossingPressure");                _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);                if (jetChamber == JetChamber.Venus)                {                    _chamber.OpenValve(ValveType.HeISO, false);                    _chamber.OpenValve(ValveType.PVHe3, false);                }                _vHe2FlowPressure = SC.GetValue<int>($"{Module}.Pump.PumpVHe2FlowPressure");                return Runner.Start(Module, Name);            }            return RState.Failed;        }        public RState Monitor()        {            if (jetChamber == JetChamber.VenusDE)            {                Runner.Delay(PumpStep.kDelay_2s, _delay_2s)                .Run(PumpStep.kCloseISOValve, HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false), _delay_2s)                .Run(PumpStep.kPVHe2, OpenHe2Valve, _delay_5s)                .Run(PumpStep.kFastPump, OpenFastPump, () => { return _chamber.ChamberPressure < _vHe2FlowPressure; })                .Run(PumpStep.kISOValve, OpenISOValve, _delay_5s)                .Run(PumpStep.kOpenTurboPump, OpenTurboValve, _delay_3s)                .Run(PumpStep.kVATValve, OpenVATValve, _delay_2s)                .Run(PumpStep.kOpenTurboPump, OpenGuageGasFinalValve, _delay_3s)                .Run(PumpStep.kFinalStep, FinalStep, () => { return _chamber.ChamberPressure < _basePressure; })                .End(PumpStep.kEnd, NullFun, _delay_1s);            }            else            {                Runner.Delay(PumpStep.kDelay_2s, _delay_2s)                    .Run(PumpStep.kCloseISOValve, HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false), _delay_2s)                    .RunIf(PumpStep.kSoftPump, needsoft, HOFs.WrapAction(_chamber.OpenValve, ValveType.SoftPump, true), () => { return _chamber.ChamberPressure < _roughPumpPressure; })                    .Run(PumpStep.kFastPump, OpenFastPump, () => { return _chamber.ChamberPressure < _vHe2FlowPressure; })                    .Run(PumpStep.kPVHe2, OpenHe2Valve, _delay_2s)                    .Run(PumpStep.kISOValve, OpenISOValve, _delay_2s)                    .Run(PumpStep.kVATValve, OpenVATValve, _delay_5s)                    .Run(PumpStep.kOpenTurboPumpPurgeGasFinal, OpenTurboPumpPurgeGasFinalValve, _delay_3s)                    .Run(PumpStep.kFinalStep, FinalStep, () => { return _chamber.ChamberPressure < _basePressure; })                    .End(PumpStep.kEnd, NullFun, _delay_1s);            }            return Runner.Status;        }        private bool OpenTurboPumpPurgeGasFinalValve()        {            _chamber.OpenValve(ValveType.TurboPumpPurge, true);            _chamber.OpenValve(ValveType.GasFinal, true);            return true;        }        private bool OpenTurboValve()        {            _chamber.OpenValve(ValveType.TurboPumpPurge, true);            return true;        }        private bool OpenGuageGasFinalValve()        {            _chamber.OpenValve(ValveType.GasFinal, true);            _chamber.OpenValve(ValveType.Guage, true);            return true;        }        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);            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();        }    }}
 |