VentRoutine.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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 readonly int _defaut_timeout = 5000;
  20. private double _ventTimeDelay = 1;
  21. private int _checkATMTimeout = 90;
  22. public VentRoutine(JetPM chamber) : base(chamber)
  23. {
  24. Name = "PM Vent";
  25. }
  26. public RState Start(params object[] objs)
  27. {
  28. if (CheckLid() &&
  29. CheckSlitDoor() &&
  30. CheckCDA() &&
  31. CheckATM())
  32. {
  33. Reset();
  34. _chamber.CloseValves();
  35. _chamber.OpenValve(ValveType.TurboPumpPumping, true);
  36. _checkATMTimeout = SC.GetValue<int>($"{Module}.CheckATMTimeout");
  37. _ventTimeDelay = SC.GetValue<double>($"{Module}.OverVentTime");
  38. return Runner.Start(Module, Name);
  39. }
  40. return RState.Failed;
  41. }
  42. public RState Monitor()
  43. {
  44. Runner.Run((int)VentStep.kISODelay, NullFun, _delay_2s)
  45. .Run( (int)VentStep.kClosePVValves, ClosePVValves, _delay_5s)
  46. .Run( (int)VentStep.kOpenVentValves, HOFs.Apply(TurnVentValves, true), ()=> { return _chamber.IsATM; }, _checkATMTimeout * 1000)
  47. .Delay( (int)VentStep.kDelay_2, (int)_ventTimeDelay)
  48. .End( (int)VentStep.kCloseVentValves, HOFs.Apply(TurnVentValves, false), _defaut_timeout);
  49. return Runner.Status;
  50. }
  51. private bool ClosePVValves()
  52. {
  53. return _chamber.TurnPendulumValve(false);
  54. }
  55. private bool TurnVentValves(bool bOpen)
  56. {
  57. _chamber.OpenValve(ValveType.GasFinal, bOpen);
  58. _chamber.OpenValve(ValveType.N2, bOpen);
  59. _chamber.OpenValve(ValveType.PVN22, bOpen);
  60. return true;
  61. }
  62. public void Abort()
  63. {
  64. CloseAllValves();
  65. }
  66. }
  67. }