MFControlPressureRoutine.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using Aitex.Core.RT.Routine;
  2. using Aitex.Core.RT.SCCore;
  3. using MECF.Framework.Common.Equipment;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using Venus_Core;
  10. using Venus_RT.Devices;
  11. using Venus_RT.Modules.PMs;
  12. namespace Venus_RT.Modules.TM
  13. {
  14. class MFControlPressureRoutine : ModuleRoutineBase, IRoutine
  15. {
  16. private enum ControlPressureStep
  17. {
  18. PumpDown,
  19. Delay1s,
  20. StartControlPressure,
  21. End
  22. }
  23. private readonly JetTM _JetTM;
  24. private readonly MFPumpRoutine _pumpDownRoutine;
  25. private int _controlPressureCheckPoint = 100;
  26. private int _controlPressureSetPoint = 90;
  27. private int _controlFlowSetPoint = 90;
  28. public MFControlPressureRoutine(JetTM jetTM, MFPumpRoutine pumpDownRoutine) : base(ModuleName.TM)
  29. {
  30. _JetTM = jetTM;
  31. _pumpDownRoutine = pumpDownRoutine;
  32. }
  33. public RState Start(params object[] objs)
  34. {
  35. _controlPressureCheckPoint= SC.GetValue<int>($"TM.ControlPressureCheckPoint");
  36. _controlPressureSetPoint= SC.GetValue<int>($"TM.ControlPressureSetPoint");
  37. _controlFlowSetPoint= SC.GetValue<int>($"TM.TM_MFC1.DefaultSetPoint");
  38. return Runner.Start(Module, Name);
  39. }
  40. public RState Monitor()
  41. {
  42. Runner.Run((int)ControlPressureStep.PumpDown, PumpingDown, StopPumpDone)
  43. .Delay((int)ControlPressureStep.Delay1s, _delay_1s)
  44. .Run((int)ControlPressureStep.StartControlPressure, StartControlPressure)
  45. .End((int)ControlPressureStep.End, End);
  46. return Runner.Status;
  47. }
  48. private bool PumpingDown()
  49. {
  50. return _pumpDownRoutine.Start() == RState.Running;
  51. }
  52. private bool StopPumpDone()
  53. {
  54. var status = _pumpDownRoutine.Monitor();
  55. if (_JetTM.TMPressure <= _controlPressureCheckPoint && status == RState.End)
  56. {
  57. _JetTM.TurnSoftPumpValve(ModuleName.TM, false);
  58. _JetTM.TurnFastPumpValve(ModuleName.TM, false);
  59. _JetTM.TurnFastPumpValve(ModuleName.TM,true);
  60. return true;
  61. }
  62. else
  63. {
  64. return false;
  65. }
  66. }
  67. private bool StartControlPressure()
  68. {
  69. _JetTM.TurnN2Valve(true);
  70. _JetTM.TurnPurgeValve(ModuleName.TM, true);
  71. if (_JetTM.AllPMSlitDoorClosed)
  72. {
  73. _JetTM.SwitchTMPressureMode(true);
  74. _JetTM.SetTMPressure(_controlPressureSetPoint);
  75. }
  76. else
  77. {
  78. _JetTM.SwitchTMPressureMode(false);
  79. _JetTM.SetTMFlow(_controlFlowSetPoint);
  80. }
  81. return true;
  82. }
  83. private bool End()
  84. {
  85. return true;
  86. }
  87. public void Abort()
  88. {
  89. if(_JetTM != null)
  90. {
  91. _JetTM.TurnFastPumpValve(ModuleName.TM, false);
  92. _JetTM.TurnN2Valve(false);
  93. _JetTM.TurnPurgeValve(ModuleName.TM, false);
  94. _JetTM.SetTMPressure(0);
  95. _JetTM.SetTMFlow(0);
  96. }
  97. }
  98. }
  99. }