Browse Source

fix routing bugs.

sangwq 1 year ago
parent
commit
88b91b4ea3
2 changed files with 17 additions and 14 deletions
  1. 15 12
      Venus/Venus_RT/Modules/AutoCycle.cs
  2. 2 2
      Venus/Venus_RT/Modules/EFEM/EfemSwapRoutine.cs

+ 15 - 12
Venus/Venus_RT/Modules/AutoCycle.cs

@@ -1001,7 +1001,7 @@ namespace Venus_RT.Modules
                     }
                 }
             }
-                    
+
             return _movingItems.Count > 0;
         }
 
@@ -1145,10 +1145,10 @@ namespace Venus_RT.Modules
             if (wafer.IsEmpty || wafer.ProcessJob == null || wafer.ProcessJob.Sequence == null || wafer.NextSequenceStep >= wafer.ProcessJob.Sequence.Steps.Count)
                 return false;
 
-            if(wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Contains(ll))
+            if (wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Contains(ll))
             {
                 var slotNumber = ll == ModuleName.LLA ? _LLASlotNumber : _LLBSlotNumber;
-                for(int slot = 0; slot < slotNumber; slot++)
+                for (int slot = 0; slot < slotNumber; slot++)
                 {
                     if ((WaferManager.Instance.CheckNoWafer(ll, slot) && !_movingItems.Exists(item => item.DestinationModule == ll && item.DestinationSlot == slot)) ||
                         (WaferManager.Instance.CheckHasWafer(ll, slot) && _movingItems.Exists(item => item.SourceModule == ll && item.SourceSlot == slot)))
@@ -1172,12 +1172,12 @@ namespace Venus_RT.Modules
 
             foreach (var mod in _vacModules)
             {
-                if(ModuleHelper.IsPm(mod.Key) && _vacSchedulers[mod.Key].IsAvailable && _vacModules[mod.Key].MovingStatus == MovingStatus.Idle)
+                if (ModuleHelper.IsPm(mod.Key) && _vacSchedulers[mod.Key].IsAvailable && _vacModules[mod.Key].MovingStatus == MovingStatus.Idle)
                 {
                     if (wafer.ProcessJob.Sequence.Steps[wafer.NextSequenceStep].StepModules.Contains(mod.Key))
                     {
                         if ((WaferManager.Instance.CheckNoWafer(mod.Key, 0) && !_movingItems.Exists(item => item.DestinationModule == mod.Key)) ||
-                            (WaferManager.Instance.CheckHasWafer(mod.Key, 0) && _movingItems.Exists(item => item.SourceModule == mod.Key)))
+                            (WaferManager.Instance.CheckHasWafer(mod.Key, 0) && _movingItems.Exists(item => item.SourceModule == mod.Key) && !_movingItems.Exists(item => item.DestinationModule == mod.Key)))
                         {
                             inSlot.Module = mod.Key;
                             inSlot.Slot = 0;
@@ -1199,9 +1199,9 @@ namespace Venus_RT.Modules
 
                 if (ModuleHelper.IsPm(module.Key) && _vacSchedulers[module.Key].IsAvailable && _vacModules[module.Key].MovingStatus == MovingStatus.Idle)
                 {
-                    if(WaferManager.Instance.CheckHasWafer(module.Key, 0))
+                    if (WaferManager.Instance.CheckHasWafer(module.Key, 0))
                     {
-                        if(SearchOutLLSlot(module.Key, ll, out SlotItem outSlot))
+                        if (SearchOutLLSlot(module.Key, ll, out SlotItem outSlot))
                         {
                             outWaferCount++;
                             _movingItems.Add(new MoveItem(module.Key, 0, outSlot.Module, outSlot.Slot, Hand.None));
@@ -1209,15 +1209,15 @@ namespace Venus_RT.Modules
                     }
                 }
             }
-            
+
             return _movingItems.Count > 0;
         }
 
         private bool ForwardLLWaferToPMs(ModuleName ll)
         {
             int inWaferCount = 0;
-            var slots =(_vacSchedulers[ll] as SchedulerLoadLock).GetOrderedOutSlot();
-            foreach(var slot in slots)
+            var slots = (_vacSchedulers[ll] as SchedulerLoadLock).GetOrderedOutSlot();
+            foreach (var slot in slots)
             {
                 if (slot >= (ll == ModuleName.LLA ? _LLASlotNumber : _LLBSlotNumber))
                     continue;
@@ -1225,13 +1225,13 @@ namespace Venus_RT.Modules
                 if (inWaferCount >= 2)
                     break;
 
-                if(SearchValidInPM(ll, slot, out SlotItem inSlot))
+                if (SearchValidInPM(ll, slot, out SlotItem inSlot))
                 {
                     inWaferCount++;
                     _movingItems.Add(new MoveItem(ll, slot, inSlot.Module, inSlot.Slot, Hand.None));
                 }
             }
-                
+
             return _movingItems.Count > 0;
         }
 
@@ -1244,6 +1244,9 @@ namespace Venus_RT.Modules
 
         private void RoutingInnerPart()
         {
+            if (_tmRobot.RobotStatus == RState.Running || !_tmRobot.IsAvailable)
+                return;
+
             if (PushTMRobotWafers())
                 return;
 

+ 2 - 2
Venus/Venus_RT/Modules/EFEM/EfemSwapRoutine.cs

@@ -237,8 +237,8 @@ namespace Venus_RT.Modules.EFEM
                     bAutoPump = true;
                 }
                 else if (_sequencePattern == SequenceLLInOutPath.DInDOut &&
-                    waferStatus.processed   >= _autoPumpOptOutWafer &&
-                    waferStatus.unprocessed <= _autoPumpOptInWafer)
+                    waferStatus.processed   <= _autoPumpOptOutWafer &&
+                    waferStatus.unprocessed >= _autoPumpOptInWafer)
                 {
                     bAutoPump = true;
                 }