Browse Source

enhance the routing algorithm.

sangwq 9 months ago
parent
commit
5014ced260
1 changed files with 4 additions and 3 deletions
  1. 4 3
      Venus/Venus_RT/Modules/SystemDispatcher.cs

+ 4 - 3
Venus/Venus_RT/Modules/SystemDispatcher.cs

@@ -2134,9 +2134,10 @@ namespace Venus_RT.Modules
             }
 
             // keep two raw atm wafer, try match a double place to LL
-            var atmWaferCount = _lstWaferTasks.Count(wt => ModuleHelper.IsPm(wt.destMod) && (ModuleHelper.IsLoadPort(wt.currentMod) || ModuleHelper.IsAligner(wt.currentMod) || ModuleHelper.IsEFEMRobot(wt.currentMod)));
+            var atmWaferCount = _lstWaferTasks.Count(wt => ModuleHelper.IsPm(wt.destMod) && (ModuleHelper.IsLoadPort(wt.currentMod) || ModuleHelper.IsAligner(wt.currentMod) || ModuleHelper.IsEFEMRobot(wt.currentMod) || ModuleHelper.IsLoadLock(wt.currentMod)));
             if (atmWaferCount < 2)
             {
+                var busyPMs = oderedPMs.Where(pv => pv.Value == 1 && _dictModuleTask[pv.Key].HasWafer).OrderBy(pv => _dictModuleTask[pv.Key].TimeToReady);
                 foreach (var runningJob in runningJobs)
                 {
                     foreach (var wafer in runningJob.LotWafers)
@@ -2144,9 +2145,9 @@ namespace Venus_RT.Modules
                         if (wafer.IsEmpty || wafer.ProcessJob == null)
                             continue;
 
-                        if (wafer.ProcessJob.Sequence.PMs.Contains(oderedPMs.First().Key) && wafer.NextSequenceStep == 0 && !_lstWaferTasks.Exists(task => task.sourceMod == (ModuleName)wafer.OriginStation && task.sourceSlot == wafer.OriginSlot))
+                        if (wafer.ProcessJob.Sequence.PMs.Contains(busyPMs.First().Key) && wafer.NextSequenceStep == 0 && !_lstWaferTasks.Exists(task => task.sourceMod == (ModuleName)wafer.OriginStation && task.sourceSlot == wafer.OriginSlot))
                         {
-                            CreateWaferTasks(wafer, oderedPMs.First().Key);
+                            CreateWaferTasks(wafer, busyPMs.First().Key);
                             return;
                         }
                     }