|
@@ -3399,14 +3399,14 @@ namespace Venus_RT.Modules
|
|
|
|
|
|
|
|
|
|
|
|
- var readyReturnWafer = _lstWaferTasks.Find(wt => ModuleHelper.IsPm(wt.currentMod) && ModuleHelper.IsLoadPort(wt.destMod) && _dictModuleTask[wt.currentMod].TimeToReady <= 2);
|
|
|
- if(readyReturnWafer != null)
|
|
|
+ var readyReturnWafers = _lstWaferTasks.Where(wt => ModuleHelper.IsPm(wt.currentMod) && ModuleHelper.IsLoadPort(wt.destMod) && _dictModuleTask[wt.currentMod].TimeToReady <= 2);
|
|
|
+ foreach(var pmWafer in readyReturnWafers)
|
|
|
{
|
|
|
- var readyLL = lls.Where(ll => GetLLFixedReadyInOutSlots(ll.Key).tInSlot.Count > 0 && ll.Value.TimeToReady <= 2).OrderBy(ll => ll.Value.Scheduler.IsVac ? 0 : 1);
|
|
|
+ var readyLL = lls.Where(ll => CanWaferGotoLL(pmWafer, ll.Key) && GetLLFixedReadyInOutSlots(ll.Key).tInSlot.Count > 0 && ll.Value.TimeToReady <= 2).OrderBy(ll => ll.Value.Scheduler.IsVac ? 0 : 1);
|
|
|
if(readyLL.Count() > 0)
|
|
|
{
|
|
|
var validHand = (Hand)(1 - robotWafers.First().currentSlot);
|
|
|
- _tmSchdActions.Enqueue(new List<MoveItem> { new MoveItem(readyReturnWafer.currentMod, 0, ModuleName.TMRobot, (int)validHand, validHand) });
|
|
|
+ _tmSchdActions.Enqueue(new List<MoveItem> { new MoveItem(pmWafer.currentMod, 0, ModuleName.TMRobot, (int)validHand, validHand) });
|
|
|
_tmSchdActions.Enqueue(new List<MoveItem> { new MoveItem(ModuleName.TMRobot, (int)validHand , readyLL.First().Key, GetLLFixedReadyInOutSlots(readyLL.First().Key).tInSlot.First(), validHand) });
|
|
|
return;
|
|
|
}
|
|
@@ -3618,14 +3618,14 @@ namespace Venus_RT.Modules
|
|
|
}
|
|
|
|
|
|
|
|
|
- var readyReturnWafer = _lstWaferTasks.Find(wt => ModuleHelper.IsPm(wt.currentMod) && ModuleHelper.IsLoadPort(wt.destMod) && _dictModuleTask[wt.currentMod].TimeToReady <= 2);
|
|
|
- if (readyReturnWafer != null)
|
|
|
+ var readyReturnWafers = _lstWaferTasks.Where(wt => ModuleHelper.IsPm(wt.currentMod) && ModuleHelper.IsLoadPort(wt.destMod) && _dictModuleTask[wt.currentMod].TimeToReady <= 2);
|
|
|
+ foreach (var pmWafer in readyReturnWafers)
|
|
|
{
|
|
|
- var readyLL = lls.Where(ll => GetLLFixedReadyInOutSlots(ll.Key).tInSlot.Count > 0 && ll.Value.TimeToReady <= 2).OrderBy(ll => ll.Value.Scheduler.IsVac ? 0 : 1);
|
|
|
+ var readyLL = lls.Where(ll => CanWaferGotoLL(pmWafer, ll.Key) && GetLLFixedReadyInOutSlots(ll.Key).tInSlot.Count > 0 && ll.Value.TimeToReady <= 2).OrderBy(ll => ll.Value.Scheduler.IsVac ? 0 : 1);
|
|
|
if (readyLL.Count() > 0)
|
|
|
{
|
|
|
var validHand = (Hand)(1 - robotWafers.First().currentSlot);
|
|
|
- _tmSchdActions.Enqueue(new List<MoveItem> { new MoveItem(readyReturnWafer.currentMod, 0, ModuleName.TMRobot, (int)validHand, validHand) });
|
|
|
+ _tmSchdActions.Enqueue(new List<MoveItem> { new MoveItem(pmWafer.currentMod, 0, ModuleName.TMRobot, (int)validHand, validHand) });
|
|
|
_tmSchdActions.Enqueue(new List<MoveItem> { new MoveItem(ModuleName.TMRobot, (int)validHand, readyLL.First().Key, GetLLFixedReadyInOutSlots(readyLL.First().Key).tInSlot.First(), validHand) });
|
|
|
return;
|
|
|
}
|