VentRoutine.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. kClosePVValveDelay,
  16. KCloseTurboPurgeValve,
  17. KCloseISOValve,
  18. kOpenVentValves,
  19. kDelay_2,
  20. kCloseVentValves,
  21. }
  22. //private int _ventTime;
  23. private int _ventTimeDelay = 1;
  24. private int _checkATMTimeout = 90;
  25. public bool VentingFlag => _ventingflag;
  26. private bool _ventingflag = false;
  27. public VentRoutine(JetPMBase chamber) : base(chamber)
  28. {
  29. Name = "PM Vent";
  30. }
  31. public RState Start(params object[] objs)
  32. {
  33. if (CheckLid() &&
  34. CheckSlitDoor() &&
  35. CheckCDA() &&
  36. CheckATM())
  37. {
  38. Reset();
  39. _chamber.CloseValves();
  40. //_chamber.OpenValve(ValveType.TurboPumpPumping, true);
  41. //_chamber.OpenValve(ValveType.TurboPumpPurge, true);
  42. //_chamber.OpenValve(ValveType.PVN22, true);
  43. //_chamber.OpenValve(ValveType.N2, true);
  44. //_chamber.OpenValve(ValveType.GasFinal, true);
  45. _checkATMTimeout = SC.GetValue<int>($"{Module}.CheckATMTimeout");
  46. _ventTimeDelay = SC.GetValue<int>($"{Module}.OverVentTime");
  47. if (Runner.Start(Module, Name) == RState.Running)
  48. {
  49. _ventingflag = true;
  50. return RState.Running;
  51. }
  52. else
  53. {
  54. _ventingflag = false;
  55. return RState.Failed;
  56. }
  57. }
  58. return RState.Failed;
  59. }
  60. public RState Monitor()
  61. {
  62. Runner
  63. .Run(VentStep.kClosePVValves, ClosePVValves, PVIsOpen)
  64. .Delay(VentStep.kClosePVValveDelay, _delay_2s)
  65. .Run(VentStep.KCloseTurboPurgeValve, HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPurge, false), _delay_1s)
  66. .Run(VentStep.KCloseISOValve, HOFs.WrapAction(_chamber.OpenValve, ValveType.TurboPumpPumping, false), _delay_1s)
  67. .Run(VentStep.kOpenVentValves, OpenValve, () => { return _chamber.IsATM; }, _checkATMTimeout * 1000)
  68. .Delay(VentStep.kDelay_2, _ventTimeDelay)
  69. .End(VentStep.kCloseVentValves, CloseVentGasFinalValves, _delay_2s);
  70. _ventingflag = Runner.Status == RState.Running;
  71. return Runner.Status;
  72. }
  73. private bool ClosePVValves()
  74. {
  75. _chamber.OpenValve(ValveType.Guage, false);
  76. if (_chamber.PendulumValveIsOpen())
  77. {
  78. return _chamber.TurnPendulumValve(false);
  79. }
  80. _chamber.OpenValve(ValveType.TurboPumpPumping, false);
  81. _chamber.OpenValve(ValveType.TurboPumpPurge, false);
  82. _chamber.OpenValve(ValveType.FastPump, false);
  83. _chamber.OpenValve(ValveType.SoftPump, false);
  84. return true;
  85. }
  86. private bool PVIsOpen()
  87. {
  88. return !_chamber.PendulumValveIsOpen();
  89. }
  90. private bool OpenValve()
  91. {
  92. if (_chamber.ChamberType == JetChamber.VenusSE || _chamber.ChamberType == JetChamber.VenusDE)
  93. {
  94. _chamber.OpenValve(ValveType.PVN22, true);
  95. }
  96. _chamber.OpenValve(ValveType.PVN22, true);
  97. _chamber.OpenValve(ValveType.N2, true);
  98. _chamber.OpenValve(ValveType.GasFinal, true);
  99. return true;
  100. }
  101. private bool CloseVentGasFinalValves()
  102. {
  103. //if (_chamber.ChamberType == JetChamber.VenusSE || _chamber.ChamberType == JetChamber.VenusDE)
  104. //{
  105. // _chamber.OpenValve(ValveType.PVN22, false);
  106. //}
  107. _chamber.OpenValve(ValveType.GasFinal, false);
  108. _chamber.OpenValve(ValveType.N2, false);
  109. _chamber.OpenValve(ValveType.PVN22, false);
  110. return true;
  111. }
  112. public void Abort()
  113. {
  114. CloseAllValves();
  115. }
  116. }
  117. }