LoadLockVentRoutine.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 LoadLockVentRoutine : PMRoutineBase, IRoutine
  9. {
  10. private enum VentStep
  11. {
  12. kClosePendulumValve,
  13. kCloseValves,
  14. kVent,
  15. kOverVent,
  16. kCloseVentValves,
  17. }
  18. private int _overVentTime = 2000;
  19. private int _checkATMTimeout = 90000;
  20. //private int _ATMPressureLL = 720000;
  21. public LoadLockVentRoutine(JetPMBase chamber) : base(chamber)
  22. {
  23. Name = "Loadlock Vent";
  24. }
  25. public RState Start(params object[] objs)
  26. {
  27. if (CheckLidLoadLock()&&
  28. CheckSlitDoor()&&
  29. CheckATMLoadLock())
  30. {
  31. Reset();
  32. // _chamber.CloseValves();
  33. //_chamber.TurnPendulumValve(false);
  34. _checkATMTimeout = SC.GetValue<int>($"{Module}.CheckATMTimeout") * 1000;
  35. _overVentTime = SC.GetValue<int>($"{Module}.OverVentTime");
  36. return Runner.Start(Module, Name);
  37. }
  38. return RState.Failed;
  39. }
  40. public RState Monitor()
  41. {
  42. Runner.Run(VentStep.kClosePendulumValve, ClosePendulumValve, _delay_1s)
  43. .Run(VentStep.kCloseValves, CloseValves, _delay_1s)
  44. //.Run(VentStep.kVent, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true), () => { return _chamber.LoadlockPressure >= _ATMPressureLL; }, _checkATMTimeout)
  45. .Run(VentStep.kVent, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, true), () => { return _chamber.IsATMLoadlock; }, _checkATMTimeout)
  46. .Delay(VentStep.kOverVent, _overVentTime)
  47. .End(VentStep.kCloseVentValves, HOFs.WrapAction(_chamber.OpenValve, ValveType.LoadlockVent, false), _delay_1s);
  48. return Runner.Status;
  49. }
  50. public void Abort()
  51. {
  52. CloseAllValves();
  53. }
  54. public bool ClosePendulumValve()
  55. {
  56. if (_chamber.PendulumValveIsOpen() == true)
  57. {
  58. _chamber.TurnPendulumValve(false);
  59. }
  60. _chamber.OpenValve(ValveType.TurboPumpPurge, false);
  61. _chamber.OpenValve(ValveType.Guage, false);
  62. return true;
  63. }
  64. public bool CloseValves()
  65. {
  66. _chamber.OpenValve(ValveType.TurboPumpPumping, false);
  67. return true;
  68. }
  69. public bool CheckATMLoadLock()
  70. {
  71. if (_chamber.IsATMLoadlock)
  72. {
  73. this.Stop("LoadLock 是ATM状态");
  74. return false;
  75. }
  76. return true;
  77. }
  78. }
  79. }