VpwManualRecipeRoutine.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using Aitex.Core.RT.Routine;
  2. using MECF.Framework.Common.RecipeCenter;
  3. using MECF.Framework.Common.Routine;
  4. using MECF.Framework.Common.Utilities;
  5. using PunkHPX8_Core;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace PunkHPX8_RT.Modules.VpwCell
  12. {
  13. public class VpwManualRecipeRoutine : RoutineBase, IRoutine
  14. {
  15. private enum RecipeStep
  16. {
  17. Prepare,
  18. WaitPrepare,
  19. VacuumPrewet,
  20. WaitVacuumPrewet,
  21. End
  22. }
  23. #region 内部变量
  24. /// <summary>
  25. /// 手动Prepare routine
  26. /// </summary>
  27. private VpwManualPrepareRoutine _manualPrepareRoutine;
  28. /// <summary>
  29. /// Vacuum prewet routine
  30. /// </summary>
  31. private VpwVacuumPrewetRoutine _vacuumPrewetRoutine;
  32. /// <summary>
  33. /// recipe
  34. /// </summary>
  35. private VpwRecipe _recipe;
  36. #endregion
  37. /// <summary>
  38. /// 构造函数
  39. /// </summary>
  40. /// <param name="module"></param>
  41. public VpwManualRecipeRoutine(string module) : base(module)
  42. {
  43. _manualPrepareRoutine = new VpwManualPrepareRoutine(module);
  44. _vacuumPrewetRoutine=new VpwVacuumPrewetRoutine(module);
  45. }
  46. /// <summary>
  47. /// 中止
  48. /// </summary>
  49. public void Abort()
  50. {
  51. Runner.Stop("Manual stop");
  52. }
  53. /// <summary>
  54. /// 监控
  55. /// </summary>
  56. /// <returns></returns>
  57. public RState Monitor()
  58. {
  59. Runner.Run(RecipeStep.Prepare, Prepare, _delay_1ms)
  60. .WaitWithStopCondition(RecipeStep.WaitPrepare, ()=>CommonFunction.CheckRoutineEndState(_manualPrepareRoutine),
  61. ()=>CommonFunction.CheckRoutineStopState(_manualPrepareRoutine))
  62. .Run(RecipeStep.VacuumPrewet,VacuumPrewet)
  63. .WaitWithStopCondition(RecipeStep.WaitVacuumPrewet, () => CommonFunction.CheckRoutineEndState(_vacuumPrewetRoutine),
  64. () => CommonFunction.CheckRoutineStopState(_vacuumPrewetRoutine))
  65. .End(RecipeStep.End, NullFun, _delay_1ms);
  66. return Runner.Status;
  67. }
  68. /// <summary>
  69. /// Prepare
  70. /// </summary>
  71. /// <returns></returns>
  72. private bool Prepare()
  73. {
  74. return _manualPrepareRoutine.Start(_recipe) == RState.Running;
  75. }
  76. /// <summary>
  77. /// Vacuum Prewet
  78. /// </summary>
  79. /// <returns></returns>
  80. private bool VacuumPrewet()
  81. {
  82. return _vacuumPrewetRoutine.Start(_recipe) == RState.Running;
  83. }
  84. /// <summary>
  85. /// 启动
  86. /// </summary>
  87. /// <param name="objs"></param>
  88. /// <returns></returns>
  89. public RState Start(params object[] objs)
  90. {
  91. _recipe = objs[0] as VpwRecipe;
  92. return Runner.Start(Module, "start run recipe");
  93. }
  94. }
  95. }