LoadLockPumpRoutine.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. kClosePendulumValve,
  13. kCloseValves,
  14. KCloseISO,
  15. kPump,
  16. kClosePumpValves,
  17. }
  18. private int _basePressureLL = 100;
  19. private int _pumpTimeLimitLL = 120;
  20. public LoadLockPumpRoutine(JetPMBase chamber) : base(chamber)
  21. {
  22. Name = "Loadlock Pump";
  23. }
  24. public RState Start(params object[] objs)
  25. {
  26. if (CheckLidLoadLock() &&
  27. CheckSlitDoor() &&
  28. CheckDryPump())
  29. {
  30. Reset();
  31. //_chamber.CloseValves();
  32. _basePressureLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpBasePressure");
  33. _pumpTimeLimitLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpTimeLimit");
  34. return Runner.Start(Module, Name);
  35. }
  36. return RState.Failed;
  37. }
  38. public RState Monitor()
  39. {
  40. Runner.Run(PumpStep.kClosePendulumValve, ClosePendulumValve, _delay_1s)
  41. .Run(PumpStep.kCloseValves, CloseValves, _delay_1s)
  42. .Run(PumpStep.KCloseISO, HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false))
  43. .Run(PumpStep.kPump, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true), () => { return _chamber.LoadlockPressure <= _basePressureLL; }, _pumpTimeLimitLL * 1000)
  44. .End(PumpStep.kClosePumpValves, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, false), _delay_1s);
  45. return Runner.Status;
  46. }
  47. public bool ClosePendulumValve()
  48. {
  49. if (_chamber.PendulumValveIsOpen() == true)
  50. {
  51. _chamber.TurnPendulumValve(false);
  52. }
  53. _chamber.OpenValve(ValveType.TurboPumpPurge, false);
  54. _chamber.OpenValve(ValveType.Guage, false);
  55. return true;
  56. }
  57. public bool CloseValves()
  58. {
  59. _chamber.OpenValve(ValveType.TurboPumpPumping, false);
  60. return true;
  61. }
  62. public void Abort()
  63. {
  64. CloseAllValves();
  65. }
  66. }
  67. }