| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | 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.TM{       class MFControlPressureRoutine : ModuleRoutineBase, IRoutine    {        private enum ControlPressureStep        {            PumpDown,            Delay1s,            StartControlPressure,            End        }        private readonly JetTM _JetTM;        private readonly MFPumpRoutine _pumpDownRoutine;        private int _controlPressureCheckPoint = 100;        private int _controlPressureSetPoint = 90;        private int  _controlFlowSetPoint = 90;        public MFControlPressureRoutine(JetTM jetTM, MFPumpRoutine pumpDownRoutine) : base(ModuleName.TM)        {            _JetTM = jetTM;            _pumpDownRoutine = pumpDownRoutine;        }        public RState Start(params object[] objs)        {            _controlPressureCheckPoint= SC.GetValue<int>($"TM.ControlPressureCheckPoint");            _controlPressureSetPoint= SC.GetValue<int>($"TM.ControlPressureSetPoint");            _controlFlowSetPoint= SC.GetValue<int>($"TM.TM_MFC1.DefaultSetPoint");            return Runner.Start(Module, Name);        }        public RState Monitor()        {            Runner.Run(ControlPressureStep.PumpDown,              PumpingDown,          StopPumpDone)                .Delay(ControlPressureStep.Delay1s,               _delay_1s)                .Run(ControlPressureStep.StartControlPressure,    StartControlPressure)                .End(ControlPressureStep.End,                     End);            return Runner.Status;        }        private bool PumpingDown()        {            return _pumpDownRoutine.Start() == RState.Running;        }        private bool StopPumpDone()        {            var status = _pumpDownRoutine.Monitor();            if (_JetTM.TMPressure <= _controlPressureCheckPoint && status == RState.End)            {                _JetTM.TurnSoftPumpValve(ModuleName.TM, false);                _JetTM.TurnFastPumpValve(ModuleName.TM, false);                _JetTM.TurnFastPumpValve(ModuleName.TM,true);                return true;            }            else            {                return false;            }        }        private bool StartControlPressure()        {            _JetTM.TurnN2Valve(true);            _JetTM.TurnPurgeValve(ModuleName.TM, true);            if (_JetTM.AllPMSlitDoorClosed)            {                _JetTM.SwitchTMPressureMode(true);                             _JetTM.SetTMPressure(_controlPressureSetPoint);            }            else            {                _JetTM.SwitchTMPressureMode(false);                _JetTM.SetTMFlow(_controlFlowSetPoint);            }            return true;        }        private bool End()        {            return true;        }        public void Abort()        {            if(_JetTM != null)            {                _JetTM.TurnFastPumpValve(ModuleName.TM, false);                _JetTM.TurnN2Valve(false);                _JetTM.TurnPurgeValve(ModuleName.TM, false);                _JetTM.SetTMPressure(0);                _JetTM.SetTMFlow(0);            }        }    }}
 |