VpwManualRecipeRoutine.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. }
  45. /// <summary>
  46. /// 中止
  47. /// </summary>
  48. public void Abort()
  49. {
  50. Runner.Stop("Manual stop");
  51. }
  52. /// <summary>
  53. /// 监控
  54. /// </summary>
  55. /// <returns></returns>
  56. public RState Monitor()
  57. {
  58. Runner.Run(RecipeStep.Prepare, Prepare, _delay_1ms)
  59. .WaitWithStopCondition(RecipeStep.WaitPrepare, ()=>CommonFunction.CheckRoutineEndState(_manualPrepareRoutine),
  60. ()=>CommonFunction.CheckRoutineStopState(_manualPrepareRoutine))
  61. .Run(RecipeStep.VacuumPrewet,VacuumPrewet)
  62. .WaitWithStopCondition(RecipeStep.WaitVacuumPrewet, () => CommonFunction.CheckRoutineEndState(_vacuumPrewetRoutine),
  63. () => CommonFunction.CheckRoutineStopState(_vacuumPrewetRoutine))
  64. .End(RecipeStep.End, NullFun, _delay_1ms);
  65. return Runner.Status;
  66. }
  67. /// <summary>
  68. /// Prepare
  69. /// </summary>
  70. /// <returns></returns>
  71. private bool Prepare()
  72. {
  73. return _manualPrepareRoutine.Start(_recipe) == RState.Running;
  74. }
  75. /// <summary>
  76. /// Vacuum Prewet
  77. /// </summary>
  78. /// <returns></returns>
  79. private bool VacuumPrewet()
  80. {
  81. return _vacuumPrewetRoutine.Start(_recipe) == RState.Running;
  82. }
  83. /// <summary>
  84. /// 启动
  85. /// </summary>
  86. /// <param name="objs"></param>
  87. /// <returns></returns>
  88. public RState Start(params object[] objs)
  89. {
  90. _recipe = objs[0] as VpwRecipe;
  91. return Runner.Start(Module, "start run recipe");
  92. }
  93. }
  94. }