VentRoutine.cs 2.5 KB

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