LoadLockPumpRoutine.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. kPump,
  14. kClosePumpValves,
  15. }
  16. private int _basePressureLL = 100;
  17. private int _pumpTimeLimitLL = 120;
  18. public LoadLockPumpRoutine(JetPM chamber) : base(chamber)
  19. {
  20. Name = "Loadlock Pump";
  21. }
  22. public RState Start(params object[] objs)
  23. {
  24. if (CheckLidLoadLock() &&
  25. CheckSlitDoor() &&
  26. CheckDryPump())
  27. {
  28. Reset();
  29. _chamber.CloseValves();
  30. _basePressureLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpBasePressure");
  31. _pumpTimeLimitLL = SC.GetValue<int>($"{Module}.Pump.LoadLockPumpTimeLimit");
  32. return Runner.Start(Module, Name);
  33. }
  34. return RState.Failed;
  35. }
  36. public RState Monitor()
  37. {
  38. Runner.Delay((int)PumpStep.kCloseValves, _delay_1s)
  39. .Run((int)PumpStep.kPump, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, true), () => { return _chamber.LoadlockPressure <= _basePressureLL; }, _pumpTimeLimitLL * 1000)
  40. .End((int)PumpStep.kClosePumpValves, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockPumping, false), _delay_1s);
  41. return Runner.Status;
  42. }
  43. public void Abort()
  44. {
  45. CloseAllValves();
  46. }
  47. }
  48. }