123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- 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 PMGaslinePurgeRoutine : PMRoutineBase, IRoutine
- {
- private enum GaslinePurgeStep
- {
- kPreTurnValves,
- kOpenPVN21_PV12_1,
- kFlowMFC1_2,
- kClosePV12_3,
- kOpenPV22_4,
- kFlowMFC2_5,
- kClosePV22_6,
- kOpenPV32_7,
- kFlowMFC3_8,
- kClosePV32_9,
- kOpenPV42_10,
- kFlowMFC4_11,
- kClosePV42_12,
- kClosePVN21_13,
- kOpenMFC1_14,
- kCloseMFC1_15,
- kOpenMFC2_16,
- kCloseMFC2_17,
- kOpenMFC3_18,
- kCloseMFC3_19,
- kOpenMFC4_20,
- kCloseMFC4_21,
- kEnd,
- }
- private int _gasPurgeFlowTime = 5;
- private int _gasPurgePumpTime = 10;
- private int _gasPurgeCycleCount = 30;
- private readonly double _GasFlow = 1.0;
- bool Flow_MFC1() => _chamber.FlowGas(1, _GasFlow);
- bool Flow_MFC2() => _chamber.FlowGas(2, _GasFlow);
- bool Flow_MFC3() => _chamber.FlowGas(3, _GasFlow);
- bool Flow_MFC4() => _chamber.FlowGas(4, _GasFlow);
- public PMGaslinePurgeRoutine(JetPM chamber) : base(chamber)
- {
- Name = "GasLine Purge";
- }
- public RState Start(params object[] objs)
- {
- if (CheckLidLoadLock() &&
- CheckSlitDoor() &&
- CheckDryPump() &&
- CheckTurboPump())
- {
- _gasPurgeFlowTime = SC.GetValue<int>($"{Module}.Purge.GasPurgeFlowTime");
- _gasPurgePumpTime = SC.GetValue<int>($"{Module}.Purge.GasPurgePumpTime");
- _gasPurgeCycleCount = SC.GetValue<int>($"{Module}.Purge.GasPurgeCycleCount");
- Reset();
- PreTurnValves();
- return Runner.Start(Module, Name);
- }
- return RState.Failed;
- }
- public RState Monitor()
- {
- Runner.Delay((int)GaslinePurgeStep.kPreTurnValves, _delay_1s)
- .LoopStart((int)GaslinePurgeStep.kOpenPVN21_PV12_1, "Gas Purge Cycle", _gasPurgeCycleCount, OpenPVN21_PV12, _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kFlowMFC1_2, Flow_MFC1, _gasPurgeFlowTime * 1000)
- .LoopRun((int)GaslinePurgeStep.kClosePV12_3, HOFs.WrapAction(_chamber.OpenValve, ValveType.PV12, false), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kOpenPV22_4, HOFs.WrapAction(_chamber.OpenValve, ValveType.PV22, true), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kFlowMFC2_5, Flow_MFC2, _gasPurgeFlowTime * 1000)
- .LoopRun((int)GaslinePurgeStep.kClosePV22_6, HOFs.WrapAction(_chamber.OpenValve, ValveType.PV22, false), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kOpenPV32_7, HOFs.WrapAction(_chamber.OpenValve, ValveType.PV32, true), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kFlowMFC3_8, Flow_MFC3, _gasPurgeFlowTime * 1000)
- .LoopRun((int)GaslinePurgeStep.kClosePV32_9, HOFs.WrapAction(_chamber.OpenValve, ValveType.PV32, false), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kOpenPV42_10, HOFs.WrapAction(_chamber.OpenValve, ValveType.PV42, true), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kFlowMFC4_11, Flow_MFC4, _gasPurgeFlowTime * 1000)
- .LoopRun((int)GaslinePurgeStep.kClosePV42_12, HOFs.WrapAction(_chamber.OpenValve, ValveType.PV42, false), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kClosePVN21_13, HOFs.WrapAction(_chamber.OpenValve, ValveType.PV21, false), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kOpenMFC1_14, HOFs.WrapAction(_chamber.OpenValve, ValveType.Mfc1, true), _gasPurgePumpTime * 1000)
- .LoopRun((int)GaslinePurgeStep.kCloseMFC1_15, HOFs.WrapAction(_chamber.OpenValve, ValveType.Mfc1, false), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kOpenMFC2_16, HOFs.WrapAction(_chamber.OpenValve, ValveType.Mfc2, true), _gasPurgePumpTime * 1000)
- .LoopRun((int)GaslinePurgeStep.kCloseMFC2_17, HOFs.WrapAction(_chamber.OpenValve, ValveType.Mfc2, false), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kOpenMFC3_18, HOFs.WrapAction(_chamber.OpenValve, ValveType.Mfc3, true), _gasPurgePumpTime * 1000)
- .LoopRun((int)GaslinePurgeStep.kCloseMFC3_19, HOFs.WrapAction(_chamber.OpenValve, ValveType.Mfc3, false), _delay_1s)
- .LoopRun((int)GaslinePurgeStep.kOpenMFC4_20, HOFs.WrapAction(_chamber.OpenValve, ValveType.Mfc4, true), _gasPurgePumpTime * 1000)
- .LoopEnd((int)GaslinePurgeStep.kCloseMFC4_21, StopAllGas, _delay_1s)
- .End((int)GaslinePurgeStep.kEnd, NullFun, _delay_50ms);
- return Runner.Status;
- }
- public void Abort()
- {
- CloseAllValves();
- }
- private void PreTurnValves()
- {
- _chamber.OpenValve(ValveType.Guage, false);
- _chamber.OpenValve(ValveType.SoftPump, false);
- _chamber.OpenValve(ValveType.FastPump, false);
- _chamber.TurnPendulumValve(false);
- _chamber.OpenValve(ValveType.GasFinal, false);
- _chamber.OpenValve(ValveType.N2, false);
- _chamber.OpenValve(ValveType.PVN22, false);
- _chamber.OpenValve(ValveType.TurboPumpPumping, true);
- _chamber.OpenValve(ValveType.TurboPumpPurge, true);
- }
- private bool OpenPVN21_PV12()
- {
- _chamber.OpenValve(ValveType.PVN21, true);
- _chamber.OpenValve(ValveType.PV12, true);
- return true;
- }
- private bool StopAllGas()
- {
- _chamber.StopGas(1);
- _chamber.StopGas(2);
- _chamber.StopGas(3);
- _chamber.StopGas(4);
- return true;
- }
- }
- }
|