//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 LoadLockPurgeRoutine : PMRoutineBase, IRoutine // { // private enum PurgeStep // { // kCloseValves, // kPumpToBase, // kPurgeDelay_1, // kPurgeVent, // kPurgeDelay_2, // kPurgePumpToBase, // kPurgePumpDelay, // kPurgeEnd, // kEnd, // } // public int PurgeCounter { get; private set; } // private int _basePressureLL = 100; // private int _purgeVentPressureLL = 10; // private int _purgeCycleCounter = 30; // private int _purgePumpTime = 120; // public LoadLockPurgeRoutine(JetPMBase chamber) : base(chamber) // { // Name = "Loadlock Purge"; // } // public RState Start(params object[] objs) // { // if (CheckLidLoadLock() && // CheckSlitDoor() && // CheckDryPump()) // { // Reset(); // _chamber.CloseValves(); // _basePressureLL = SC.GetValue($"{Module}.Pump.LoadLockPumpBasePressure"); // _purgeVentPressureLL = SC.GetValue($"{Module}.Pump.LoadLockPurgeVentPressure"); // _purgeCycleCounter = SC.GetValue($"{Module}.Pump.LoadLockPurgeCycleCount"); // _purgePumpTime = SC.GetValue($"{Module}.Pump.LoadLockPurgePumpTime"); // PurgeCounter = 0; // return Runner.Start(Module, Name); // } // return RState.Failed; // } // public RState Monitor() // { // Runner.Delay(PurgeStep.kCloseValves, _delay_1s) // .Run(PurgeStep.kPumpToBase, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true), () => { return _chamber.LoadlockPressure < _basePressureLL; }) // .LoopStart(PurgeStep.kPurgeDelay_1, "Purge", _purgeCycleCounter, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, false), _delay_1s) // .LoopRun(PurgeStep.kPurgeVent, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true), () => { return _chamber.LoadlockPressure >= _purgeVentPressureLL; }) // .LoopRun(PurgeStep.kPurgeDelay_2, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, false), _delay_1s) // .LoopRun(PurgeStep.kPurgePumpToBase, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true), () => { return _chamber.LoadlockPressure < _basePressureLL; }) // .LoopRun(PurgeStep.kPurgePumpDelay, NullFun, _purgePumpTime * 1000) // .LoopEnd(PurgeStep.kPurgeEnd, ClosePumpValve, _delay_1s) // .End(PurgeStep.kEnd, NullFun, _delay_50ms); // return Runner.Status; // } // public void Abort() // { // CloseAllValves(); // } // private bool ClosePumpValve() // { // _chamber.OpenValve(ValveType.LoadlockPumping, false); // return true; // } // } //}