VentRoutine.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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.ChamberType == JetChamber.VenusSE || _chamber.ChamberType == JetChamber.VenusDE)
  70. {
  71. _chamber.OpenValve(ValveType.PVN22, true);
  72. }
  73. if (_chamber.PendulumValveIsOpen())
  74. {
  75. return _chamber.TurnPendulumValve(false);
  76. }
  77. return true;
  78. }
  79. private bool CloseVentGasFinalValves()
  80. {
  81. if (_chamber.ChamberType == JetChamber.VenusSE || _chamber.ChamberType == JetChamber.VenusDE)
  82. {
  83. _chamber.OpenValve(ValveType.PVN22,false);
  84. }
  85. _chamber.OpenValve(ValveType.GasFinal, false);
  86. _chamber.OpenValve(ValveType.N2, false);
  87. return true;
  88. }
  89. public void Abort()
  90. {
  91. CloseAllValves();
  92. }
  93. }
  94. }