| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 | 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()        {            switch (jetChamber)            {                //case JetChamber.Venus:                case JetChamber.VenusSE:                    Runner.Delay(PumpStep.kDelay_2s, _delay_2s)                          .Run(PumpStep.kCloseISOValve, HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false), _delay_2s)                          .Run(PumpStep.kSoftPump, 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);                    break;                case JetChamber.Kepler2300:                case JetChamber.Kepler2200A:                case JetChamber.Kepler2200B:                    Runner.Delay(PumpStep.kDelay_2s, _delay_2s)                          .Run(PumpStep.kCloseISOValve, HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false), _delay_2s)                          .Run(PumpStep.kSoftPump, HOFs.WrapAction(_chamber.OpenValve, ValveType.SoftPump, true), () => { return _chamber.ChamberPressure < _roughPumpPressure; })                          .Run(PumpStep.kFastPump, OpenFastPump,  () => { return _chamber.ChamberPressure < _vHe2FlowPressure; })                          .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);                    break;                case 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);                    break;            }            //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.FastPump, false);            _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();        }    }}
 |