StartPumpRoutine.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using Aitex.Core.RT.Event;
  2. using Aitex.Core.RT.Routine;
  3. using Aitex.Core.RT.SCCore;
  4. using VirgoRT.Devices;
  5. namespace VirgoRT.Modules.PMs
  6. {
  7. class StartPumpRoutine : PMRoutineBase, IRoutine
  8. {
  9. private enum StartPumpSequence
  10. {
  11. kCheckForelinePressure,
  12. kCloseSoftPumpValve,
  13. kFastPumpValve,
  14. kCloseValves,
  15. kEnd
  16. }
  17. private double _chamberForelinePressureThreshold;
  18. private int _chamberForelinePressureTimeout;
  19. public StartPumpRoutine(JetPM chamber) : base(chamber)
  20. {
  21. Name = "LaunchPump";
  22. bUINotify = true;
  23. }
  24. public void Terminate()
  25. {
  26. }
  27. public Result Start(params object[] objs)
  28. {
  29. try
  30. {
  31. if (_chamber.IsPumpRunning)
  32. {
  33. Stop("泵已经运行");
  34. return Result.FAIL;
  35. }
  36. Reset();
  37. _chamberForelinePressureThreshold = SC.GetValue<double>($"{Module}.DryPump.ChamberForelinePressureThreshold");
  38. _chamberForelinePressureTimeout = SC.GetValue<int>($"{Module}.DryPump.ChamberForelinePressureTimeout");
  39. _chamber.StartPump(true);
  40. _chamber.SetValveOnOff(ValveType.FAST_PUMP, false);
  41. _chamber.SetValveOnOff(ValveType.SOFT_PUMP, false);
  42. Notify("开始");
  43. return Result.RUN;
  44. }
  45. catch
  46. {
  47. return Result.FAIL;
  48. }
  49. }
  50. public Result Monitor()
  51. {
  52. try
  53. {
  54. CheckForeline((int)StartPumpSequence.kCheckForelinePressure, (uint)_chamberForelinePressureThreshold, _chamberForelinePressureTimeout);
  55. End((int)StartPumpSequence.kEnd);
  56. }
  57. catch (RoutineBreakException)
  58. {
  59. return Result.RUN;
  60. }
  61. catch (RoutineFaildException)
  62. {
  63. Notify("出错 ");
  64. return Result.FAIL;
  65. }
  66. catch (System.Exception ex)
  67. {
  68. Stop(ex.Message);
  69. return Result.FAIL;
  70. }
  71. Notify("结束");
  72. return Result.DONE;
  73. }
  74. public override void Abort()
  75. {
  76. _chamber.CloseValves();
  77. _chamber.StartPump(false);
  78. }
  79. }
  80. }