PreProcess.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. #region MyRegion
  44. var isScheduleMaintenance = SC.ContainsItem("System.EnableScheduleMaintenance") && SC.GetValue<bool>("System.EnableScheduleMaintenance");
  45. if (isScheduleMaintenance)
  46. {
  47. var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
  48. pm.CheckRecipeThicknessMoreThan(_recipeName, out var isPause);
  49. if (isPause)
  50. return Result.FAIL;
  51. pm.CheckRecipeExecuteFreqMoreThan(_recipeName, out isPause);
  52. if (isPause)
  53. return Result.FAIL;
  54. }
  55. #endregion
  56. if (!RecipeParser.Parse(_recipeName, Module, out recipeHead, out recipeSteps, out reason, "Process"))
  57. {
  58. PMModule.PreprocessStartFailedWarning.Set($"Load process recipe {_recipeName} failed, {reason}");
  59. return Result.FAIL;
  60. }
  61. PMModule.RecipeRunningInfo.MainRecipeName = _recipeName;
  62. PMModule.RecipeRunningInfo.Head = recipeHead;
  63. PMModule.RecipeRunningInfo.RecipeStepList = recipeSteps;
  64. }
  65. Reset();
  66. Notify($"Start");
  67. return Result.RUN;
  68. }
  69. public override Result Monitor()
  70. {
  71. try
  72. {
  73. //ToReadyProcessState((int)Routine.ToReadyProcessState, PMModule, _liftTimeout);
  74. //ExecuteRoutine((int)Routine.Pump, _pumpRoutine);
  75. //MovePinDown((int)Routine.PinDown, PMModule, _liftTimeout);
  76. }
  77. catch (RoutineBreakException)
  78. {
  79. return Result.RUN;
  80. }
  81. catch (RoutineFaildException)
  82. {
  83. return Result.FAIL;
  84. }
  85. return Result.DONE;
  86. }
  87. public override void Abort()
  88. {
  89. }
  90. }
  91. }