Browse Source

1.run recipe 参数bool改recipetype
2.SchedulerPM里面loadrecipe加RecipeType类型

lixiang 1 year ago
parent
commit
9e1de0e343

+ 1 - 1
Venus/Venus_MainPages/ViewModels/OverKepler2200AViewModel.cs

@@ -1629,7 +1629,7 @@ namespace Venus_MainPages.ViewModels
             IsHasWafer= CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.HasWafer");
             WaferID = IsHasWafer ? ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].SourceName : "";
 
-            if (PMCurrentState == PMState.Processing)
+            if (PMCurrentState == PMState.Processing || PMCurrentState == PMState.Clean)
             {
                 CurrentRecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, $"{ModuleName}.CurrentRecipeResult");
                 if (CurrentRecipeResult.RecipeStepNumber != null && CurrentRecipeResult.RecipeStepNumber != currentRecipeNumber)

+ 1 - 1
Venus/Venus_MainPages/ViewModels/OverKepler2300ViewModel.cs

@@ -1635,7 +1635,7 @@ namespace Venus_MainPages.ViewModels
             IsHasWafer = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.HasWafer");
 
 
-            if (PMCurrentState == PMState.Processing)
+            if (PMCurrentState == PMState.Processing || PMCurrentState == PMState.Clean)
             {
                 CurrentRecipeResult = CommonFunction.GetValue<RecipeResult>(RtDataValues, $"{ModuleName}.CurrentRecipeResult");
                 if (CurrentRecipeResult.RecipeStepNumber != null && CurrentRecipeResult.RecipeStepNumber != currentRecipeNumber)

+ 1 - 1
Venus/Venus_MainPages/ViewModels/OverVenusViewModel.cs

@@ -1623,7 +1623,7 @@ namespace Venus_MainPages.ViewModels
                 IsHasWafer = CommonFunction.GetValue<bool>(RtDataValues, $"{ModuleName}.HasWafer");
                 WaferID = IsHasWafer ? ModuleManager.ModuleInfos[ModuleName].WaferManager.Wafers[0].SourceName : "";
 
-                if (PMCurrentState == PMState.Processing)
+                if (PMCurrentState == PMState.Processing || PMCurrentState == PMState.Clean)
                 {
 
 

+ 4 - 4
Venus/Venus_RT/Modules/PMs/PMEntity.cs

@@ -277,18 +277,18 @@ namespace Venus_RT.Modules.PMs
             return (int)FSM_MSG.NONE;
         }
 
-        public int InvokeClean(string recipeName, string waferID, bool withWafer)
+        public int InvokeClean(string recipeName, string waferID, RecipeType recipeType)
         {
-            if (CheckToPostMessage((int)MSG.Clean, recipeName, waferID, withWafer))
+            if (CheckToPostMessage((int)MSG.Clean, recipeName, waferID, recipeType))
             {
                 return (int)MSG.Clean;
             }
             return (int)FSM_MSG.NONE;
         }
 
-        public int InvokeProcess(string recipeName, string waferID, bool withWafer)
+        public int InvokeProcess(string recipeName, string waferID, RecipeType recipeType)
         {
-            if (CheckToPostMessage((int)MSG.RunRecipe, recipeName, waferID, withWafer))
+            if (CheckToPostMessage((int)MSG.RunRecipe, recipeName, waferID, recipeType))
                 return (int)MSG.RunRecipe;
 
             return (int)FSM_MSG.NONE;

+ 15 - 1
Venus/Venus_RT/Modules/PMs/PMProcessRoutine.cs

@@ -60,6 +60,7 @@ namespace Venus_RT.Modules.PMs
         public bool isMaualEndStep;
         private RecipeFACallback _faCallback;
         private JetChamber _jetChamber;
+        private RecipeType _recipeType;
 
         private double ChillerTemp
         {
@@ -134,8 +135,21 @@ namespace Venus_RT.Modules.PMs
             string recipeName = (string)objs[0];
             if (objs.Length >= 2)
             {
-                _withWafer = (bool)objs[2];
+                _recipeType = (RecipeType)Enum.Parse(typeof(RecipeType), objs[2].ToString());
+                if (_recipeType == RecipeType.Clean)
+                {
+                    _withWafer = false;
+                }
+                else
+                {
+                    _withWafer = true;
+                }
             }
+
+            //if (objs.Length >= 2)
+            //{
+            //    _withWafer = (bool)objs[2];
+            //}
             if (_withWafer && WaferManager.Instance.CheckNoWafer(Module, 0))
             {
                 Stop($"can not run process, no wafer at {Module}");

+ 2 - 1
Venus/Venus_RT/Modules/Schedulers/SchedulerModule.cs

@@ -15,6 +15,7 @@ using Venus_RT.Modules;
 using MECF.Framework.Common.Schedulers;
 using Venus_RT.Devices;
 using Aitex.Core.Common;
+using Venus_Core;
 
 namespace Venus_RT.Scheduler
 {
@@ -212,7 +213,7 @@ namespace Venus_RT.Scheduler
             return true;
         }
 
-        public virtual bool Process(string recipeName, bool isCleanRecipe, bool withDummyWafer, WaferInfo wafer)
+        public virtual bool Process(string recipeName, bool isCleanRecipe, RecipeType recipeType, WaferInfo wafer)
         {
             return true;
         }

+ 26 - 13
Venus/Venus_RT/Modules/Schedulers/SchedulerPM.cs

@@ -21,6 +21,8 @@ using MECF.Framework.Common.Schedulers;
 using MECF.Framework.Common.SubstrateTrackings;
 using Venus_RT.Devices;
 using Venus_Core;
+using MECF.Framework.Common.DataCenter;
+using System.IO;
 
 namespace Venus_RT.Scheduler
 {
@@ -191,8 +193,17 @@ namespace Venus_RT.Scheduler
             return _entityTaskToken != (int)FSM_MSG.NONE;
         }
 
-        public override bool Process(string recipeName, bool isCleanRecipe, bool withWafer, WaferInfo wafer)
+        public override bool Process(string recipeName, bool isCleanRecipe, RecipeType recipeType, WaferInfo wafer)
         {
+            bool withWafer;
+            if (recipeType == RecipeType.Clean)
+            {
+                withWafer = false;
+            }
+            else
+            {
+                withWafer = true;
+            }
             _task = TaskType.Process;
             LogTaskStart(_task, $"recipe: {recipeName}, clean: {isCleanRecipe}, with wafer: {withWafer}");
 
@@ -211,11 +222,11 @@ namespace Venus_RT.Scheduler
             {
                 if(isCleanRecipe)
                 {
-                    _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
+                    _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
                 }
                 else
                 {
-                    _entityTaskToken = _entity.InvokeProcess(recipeName,  wafer.WaferOrigin, true);
+                    _entityTaskToken = _entity.InvokeProcess(recipeName,  wafer.WaferOrigin, RecipeType.Process);
                 }
                 
                 return _entityTaskToken != (int)FSM_MSG.NONE;
@@ -295,7 +306,7 @@ namespace Venus_RT.Scheduler
         {
             _task = TaskType.IdlePurgeProcess;
 
-            _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
+            _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
 
             LogTaskStart(_task, $"recipe: {recipeName}, clean: {false}, with wafer: {false}");
 
@@ -306,7 +317,7 @@ namespace Venus_RT.Scheduler
         {
             _task = TaskType.IdleCleanProcess;
 
-            _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
+            _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
 
             LogTaskStart(_task, $"recipe: {recipeName}, clean: {true}, with wafer: {false}");
             return _entityTaskToken != (int)FSM_MSG.NONE;
@@ -321,7 +332,7 @@ namespace Venus_RT.Scheduler
         {
             _task = TaskType.PreJobProcess;
 
-            _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
+            _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
 
             LogTaskStart(_task, $"recipe: {recipeName}, clean: {true}, with wafer: {false}");
             return _entityTaskToken != (int)FSM_MSG.NONE;
@@ -332,7 +343,7 @@ namespace Venus_RT.Scheduler
         {
             _task = TaskType.CompleteJobProcess;
 
-            _entityTaskToken = _entity.InvokeClean(recipeName, "", false);
+            _entityTaskToken = _entity.InvokeClean(recipeName, "", RecipeType.Clean);
 
             LogTaskStart(_task, $"recipe: {recipeName}, clean: {true}, with wafer: {false}");
             return _entityTaskToken != (int)FSM_MSG.NONE;
@@ -344,7 +355,7 @@ namespace Venus_RT.Scheduler
             string recipeName = wafer.ProcessJob.Sequence.GetRecipe(Module);
             if(recipeName.Length > 0)
             {
-                Process(recipeName, false, true, wafer);
+                Process(recipeName, false, RecipeType.Process, wafer);
             }
         }
 
@@ -412,7 +423,7 @@ namespace Venus_RT.Scheduler
                 TimeSpan span = DateTime.Now - _lastRunTime;
                 if(span.TotalHours >= _idleCleanHourSetPoint)
                 {
-                    Process(_idleCleanRecipe, true, false, null);
+                    Process(_idleCleanRecipe, true, RecipeType.Clean, null);
                     ResetIdleCleanCounter();
                     return true;
                 }
@@ -421,7 +432,7 @@ namespace Venus_RT.Scheduler
             {
                 if(_idleCleanWaferCount >= _idleCleanWaferSetPoint)
                 {
-                    Process(_idleCleanRecipe, true, false, null);
+                    Process(_idleCleanRecipe, true, RecipeType.Clean, null);
                     ResetIdleCleanCounter();
                     return true;
                 }
@@ -433,8 +444,10 @@ namespace Venus_RT.Scheduler
         public bool RunJobCleanTask(string jobCleanRecipe)
         {
             // validate the job clean recipe name
-            string recipeContent = RecipeFileManager.Instance.LoadRecipe(Module.ToString(), jobCleanRecipe, false);
-            if(recipeContent.Length == 0)
+            //string recipeContent = RecipeFileManager.Instance.LoadRecipe(Module.ToString(), jobCleanRecipe, false);
+            string path = Path.Combine( "Recipes", Module.ToString(),"Clean" , $"{jobCleanRecipe}.rcp");
+            string recipeContent = RecipeFileManager.Instance.LoadRecipeByPath(path);
+            if (recipeContent.Length == 0)
             {
                 return false;
             }
@@ -445,7 +458,7 @@ namespace Venus_RT.Scheduler
                 return false;
             }
 
-            return Process(jobCleanRecipe, true, false, null);
+            return Process(jobCleanRecipe, true, RecipeType.Clean, null);
         }
 
         #endregion