LoadLockPumpRoutine.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using Aitex.Core.RT.Routine;
  2. using Aitex.Core.RT.SCCore;
  3. using Venus_RT.Devices;
  4. using MECF.Framework.Common.Routine;
  5. using Venus_Core;
  6. namespace Venus_RT.Modules.PMs
  7. {
  8. class LoadLockPumpRoutine : PMRoutineBase, IRoutine
  9. {
  10. private enum PumpStep
  11. {
  12. kCloseValves,
  13. KCloseISO,
  14. kPump,
  15. kClosePumpValves,
  16. }
  17. private int _basePressureLL = 100;
  18. private int _pumpTimeLimitLL = 120;
  19. public LoadLockPumpRoutine(JetPMBase chamber) : base(chamber)
  20. {
  21. Name = "Loadlock Pump";
  22. }
  23. public RState Start(params object[] objs)
  24. {
  25. if (CheckLidLoadLock() &&
  26. CheckSlitDoor() &&
  27. CheckDryPump())
  28. {
  29. Reset();
  30. _chamber.CloseValves();
  31. _basePressureLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpBasePressure");
  32. _pumpTimeLimitLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpTimeLimit");
  33. if (_chamber.PendulumValveIsOpen() == true)
  34. {
  35. _chamber.TurnPendulumValve(false);
  36. }
  37. _chamber.OpenValve(ValveType.TurboPumpPurge, false);
  38. return Runner.Start(Module, Name);
  39. }
  40. return RState.Failed;
  41. }
  42. public RState Monitor()
  43. {
  44. Runner.Delay((int)PumpStep.kCloseValves, _delay_1s)
  45. .Run((int)PumpStep.KCloseISO, HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false))
  46. .Run((int)PumpStep.kPump, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true), () => { return _chamber.LoadlockPressure <= _basePressureLL; }, _pumpTimeLimitLL * 1000)
  47. .End((int)PumpStep.kClosePumpValves, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, false), _delay_1s);
  48. return Runner.Status;
  49. }
  50. public void Abort()
  51. {
  52. CloseAllValves();
  53. }
  54. }
  55. }