StartDryPumpRoutine.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using Aitex.Core.RT.Routine;
  2. using Aitex.Core.RT.SCCore;
  3. using Venus_RT.Devices;
  4. using MECF.Framework.Common.Routine;
  5. namespace Venus_RT.Modules.PMs
  6. {
  7. class StartDryPumpRoutine : PMRoutineBase, IRoutine
  8. {
  9. private enum DryPumpStep
  10. {
  11. kCheckForeLine,
  12. kEnd,
  13. }
  14. private double _chamberForelinePressureThreshold;
  15. private int _chamberForelinePressureTimeout;
  16. public StartDryPumpRoutine(JetPM chamber) : base(chamber)
  17. {
  18. Name = "Start DryPump";
  19. }
  20. public RState Start(params object[] objs)
  21. {
  22. if (_chamber.IsPumpRunning)
  23. {
  24. Stop("泵已经运行");
  25. return RState.Failed;
  26. }
  27. Reset();
  28. _chamber.OpenValve(ValveType.FastPump, false);
  29. _chamber.OpenValve(ValveType.SoftPump, false);
  30. _chamberForelinePressureThreshold = SC.GetValue<double>($"{Module}.DryPump.ChamberForelinePressureThreshold");
  31. _chamberForelinePressureTimeout = SC.GetValue<int>($"{Module}.DryPump.ChamberForelinePressureTimeout");
  32. _chamber.TurnDryPump(true);
  33. return Runner.Start(Module, Name);
  34. }
  35. public RState Monitor()
  36. {
  37. Runner.Wait((int)DryPumpStep.kCheckForeLine, () => { return _chamber.ForelinePressure < _chamberForelinePressureThreshold; }, _chamberForelinePressureTimeout)
  38. .End((int)DryPumpStep.kEnd, NullFun, _delay_50ms);
  39. return Runner.Status;
  40. }
  41. public void Abort()
  42. {
  43. _chamber.CloseValves();
  44. _chamber.TurnDryPump(false);
  45. }
  46. }
  47. }