|
@@ -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;
|
|
|
|