VentRoutine.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. using Aitex.Core.RT.DataCenter;
  7. namespace Venus_RT.Modules.PMs
  8. {
  9. class VentRoutine : PMRoutineBase, IRoutine
  10. {
  11. private enum VentStep
  12. {
  13. kISODelay,
  14. kClosePVValves,
  15. kOpenVentValves,
  16. kDelay_2,
  17. kCloseVentValves,
  18. }
  19. //private int _ventTime;
  20. private double _ventTimeDelay = 1;
  21. private int _checkATMTimeout = 90;
  22. public bool VentingFlag=> _ventingflag;
  23. private bool _ventingflag = false;
  24. public VentRoutine(JetPMBase chamber) : base(chamber)
  25. {
  26. Name = "PM Vent";
  27. }
  28. public RState Start(params object[] objs)
  29. {
  30. if (CheckLid() &&
  31. CheckSlitDoor() &&
  32. CheckCDA() &&
  33. CheckATM())
  34. {
  35. Reset();
  36. _chamber.CloseValves();
  37. _chamber.OpenValve(ValveType.TurboPumpPumping, true);
  38. _chamber.OpenValve(ValveType.TurboPumpPurge, true);
  39. _chamber.OpenValve(ValveType.PVN22, true);
  40. _chamber.OpenValve(ValveType.GasFinal, true);
  41. _checkATMTimeout = SC.GetValue<int>($"{Module}.CheckATMTimeout");
  42. _ventTimeDelay = SC.GetValue<double>($"{Module}.OverVentTime");
  43. if (Runner.Start(Module, Name) == RState.Running)
  44. {
  45. _ventingflag = true;
  46. return RState.Running;
  47. }
  48. else
  49. {
  50. _ventingflag = false;
  51. return RState.Failed;
  52. }
  53. }
  54. return RState.Failed;
  55. }
  56. public RState Monitor()
  57. {
  58. Runner.Delay(VentStep.kISODelay, _delay_2s)
  59. .Run(VentStep.kClosePVValves, ClosePVValves, _delay_10s)
  60. .Run(VentStep.kOpenVentValves, HOFs.WrapAction(_chamber.OpenValve, ValveType.N2, true), ()=> { return _chamber.IsATM; }, _checkATMTimeout * 1000)
  61. .Delay(VentStep.kDelay_2, (int)_ventTimeDelay)
  62. .End(VentStep.kCloseVentValves, CloseVentGasFinalValves, _delay_2s);
  63. _ventingflag = Runner.Status == RState.Running;
  64. return Runner.Status;
  65. }
  66. private bool ClosePVValves()
  67. {
  68. _chamber.OpenValve(ValveType.Guage, false);
  69. if (_chamber.PendulumValveIsOpen())
  70. {
  71. return _chamber.TurnPendulumValve(false);
  72. }
  73. return true;
  74. }
  75. private bool CloseVentGasFinalValves()
  76. {
  77. _chamber.OpenValve(ValveType.GasFinal, false);
  78. _chamber.OpenValve(ValveType.N2, false);
  79. return true;
  80. }
  81. public void Abort()
  82. {
  83. CloseAllValves();
  84. }
  85. }
  86. }