using Aitex.Core.RT.Routine; using Aitex.Core.RT.SCCore; using MECF.Framework.Common.Equipment; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Venus_Core; using Venus_RT.Devices; using Venus_RT.Modules.PMs; namespace Venus_RT.Modules.PMs { class PMControlPressureRoutine : PMRoutineBase, IRoutine { private enum ControlPressureStep { Delay1s, StartControlPressure, End } private readonly JetPMBase _chamber; private int _controlPressureSetPoint = 90; private int _controlFlowSetPoint = 90; public PMControlPressureRoutine(JetPMBase chamber) : base(chamber) { _chamber = chamber; } public RState Start(params object[] objs) { if (!CheckTurboPump()) { return RState.Failed; } if (_chamber.GetPVPosition() == 0) { Stop("钟摆阀没有打开"); return RState.Failed; } Reset(); // open process final valve and flow Notify("Open valve and flow mfc"); _chamber.OpenValve(ValveType.GasFinal, true); _controlPressureSetPoint = SC.GetValue($"{Module}.ControlPressureSetPoint"); _controlFlowSetPoint= SC.GetValue($"{Module}.ControlPressureN2FlowSetPoint"); return Runner.Start(Module, Name); } public RState Monitor() { Runner.Delay(ControlPressureStep.Delay1s, _delay_1s) .Run(ControlPressureStep.StartControlPressure, StartControlPressure) .End(ControlPressureStep.End, End); return Runner.Status; } private bool StartControlPressure() { _chamber.StartControlPressure(_controlPressureSetPoint, _controlFlowSetPoint); return true; } private bool End() { return true; } public void Abort() { _chamber.AbortControlPressure(); } } }