PreProcess.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using Aitex.Core.RT.Routine;
  2. using MECF.Framework.Common.Equipment;
  3. using System;
  4. using Aitex.Core.RT.SCCore;
  5. using FurnaceRT.Equipments.PMs.Routines;
  6. using System.Collections.Generic;
  7. using FurnaceRT.Equipments.Systems;
  8. using Aitex.Core.Util;
  9. namespace FurnaceRT.Equipments.PMs.RecipeExecutions
  10. {
  11. public class PreProcess : PMBaseRoutine, IRoutine
  12. {
  13. public enum Routine
  14. {
  15. ToReadyProcessState,
  16. Pump,
  17. PinDown,
  18. }
  19. private string _recipeName;
  20. private int _liftTimeout;
  21. private bool _isProcessRecipe;
  22. public PreProcess(ModuleName module, PMModule pm) : base(module, pm)
  23. {
  24. Module = module.ToString();
  25. Name = "PreProcess";
  26. }
  27. public void Init(string recipeName, bool isProcessRecipe = true)
  28. {
  29. _recipeName = recipeName;
  30. _isProcessRecipe = isProcessRecipe;
  31. }
  32. public override Result Start(params object[] objs)
  33. {
  34. RecipeHead recipeHead;
  35. List<RecipeStep> recipeSteps;
  36. Dictionary<int, List<RecipeStep>> abortRecipe;
  37. Dictionary<int, string> abortRecipeName;
  38. Dictionary<int, List<RecipeStep>> subRecipe;
  39. Dictionary<int, string> subRecipeName;
  40. string reason = string.Empty;
  41. if (_isProcessRecipe)
  42. {
  43. if (!RecipeParser.Parse(_recipeName, Module, out recipeHead, out recipeSteps, out reason, "Process"))
  44. {
  45. PMModule.PreprocessStartFailedWarning.Set($"Load process recipe {_recipeName} failed, {reason}");
  46. return Result.FAIL;
  47. }
  48. #region MyRegion
  49. var isScheduleMaintenance = SC.ContainsItem("System.EnableScheduleMaintenance") && SC.GetValue<bool>("System.EnableScheduleMaintenance");
  50. if (isScheduleMaintenance)
  51. {
  52. var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
  53. pm.GetAllDBRecord();
  54. pm.CheckRecipeThicknessMoreThan(_recipeName, out var isPause);
  55. if (isPause)
  56. return Result.FAIL;
  57. pm.CheckRecipeExecuteFreqMoreThan(_recipeName, out var isPause1);
  58. if (isPause1)
  59. return Result.FAIL;
  60. foreach (var item in recipeSteps)
  61. {
  62. pm.CheckRecipeStepFreqMoreThan(item.StepName, out var isPause2);
  63. if (isPause2)
  64. return Result.FAIL;
  65. pm.CheckRecipeStepTimeMoreThan(item.StepName, out var isPause3);
  66. if (isPause3)
  67. return Result.FAIL;
  68. pm.CheckRecipeStepGroupThicknessMoreThan(item.StepName, out var isPause4);
  69. if (isPause4)
  70. return Result.FAIL;
  71. }
  72. }
  73. #endregion
  74. PMModule.RecipeRunningInfo.MainRecipeName = _recipeName;
  75. PMModule.RecipeRunningInfo.Head = recipeHead;
  76. PMModule.RecipeRunningInfo.RecipeStepList = recipeSteps;
  77. }
  78. Reset();
  79. Notify($"Start");
  80. return Result.RUN;
  81. }
  82. public override Result Monitor()
  83. {
  84. try
  85. {
  86. //ToReadyProcessState((int)Routine.ToReadyProcessState, PMModule, _liftTimeout);
  87. //ExecuteRoutine((int)Routine.Pump, _pumpRoutine);
  88. //MovePinDown((int)Routine.PinDown, PMModule, _liftTimeout);
  89. }
  90. catch (RoutineBreakException)
  91. {
  92. return Result.RUN;
  93. }
  94. catch (RoutineFaildException)
  95. {
  96. return Result.FAIL;
  97. }
  98. return Result.DONE;
  99. }
  100. public override void Abort()
  101. {
  102. }
  103. }
  104. }