移除Sequence中Buffer槽位的限制。
AutoTransfer中的UnLoad任务新增Wafer判断,如果WaferRobot、Aligner或Load任意模组上有需要做工艺的Wafer,则不执行UnLoad任务。
This commit is contained in:
parent
6cca130761
commit
8b9724541b
|
@ -42,6 +42,7 @@ namespace Mainframe.EFEMs
|
|||
|
||||
|
||||
public WaferRobotModule WaferRobotModule { get; set; }
|
||||
|
||||
public TrayRobotModule TrayRobotModule { get; set; }
|
||||
|
||||
|
||||
|
@ -264,7 +265,7 @@ namespace Mainframe.EFEMs
|
|||
|
||||
private bool FsmStartHome(object[] param)
|
||||
{
|
||||
return WaferRobotModule.Home(out _) && TrayRobotModule.Home(out _);
|
||||
return WaferRobotModule.Home(out _) && TrayRobotModule.Home(out _);
|
||||
}
|
||||
|
||||
private bool FsmMonitorHomeTask(object[] param)
|
||||
|
|
|
@ -655,11 +655,11 @@ namespace SicRT.Modules
|
|||
return false;
|
||||
}
|
||||
|
||||
if(sequence.Steps[currentIndex].StepParameter["SlotSelection"].ToString().Contains("3"))
|
||||
/*if(sequence.Steps[currentIndex].StepParameter["SlotSelection"].ToString().Contains("3"))
|
||||
{
|
||||
reason = $"Invalid sequence {seqs[i]},{currentIndex + 1}st step the option '3' cannot be selected in parameter 'SlotSelection' of Buffer.";
|
||||
return false;
|
||||
}
|
||||
}*/
|
||||
|
||||
if (!sequence.Steps[currentIndex].StepParameter.ContainsKey("BufferType") || !sequence.Steps[currentIndex].StepParameter["BufferType"].ToString().Contains("Heat"))
|
||||
{
|
||||
|
@ -1779,16 +1779,17 @@ namespace SicRT.Modules
|
|||
_unload.ResetPurgedAndSeparatedStatus();
|
||||
}
|
||||
|
||||
|
||||
// 如果Load等着TMRobot来拿盘,先保障Load
|
||||
/*if ( _load.CheckWaferNeedProcess(0)
|
||||
|| (GetWaferInJobQueue() != null && GetRunWaferCount() < _maxTrayCount)) // 还有盘要做工艺并且整个腔体里的盘数量不足_maxTrayCount,则不要占用Pump2
|
||||
return;*/
|
||||
|
||||
// 当Load有Wafer时,并且Buffer或Cass还有可用的Tray时,不要再占用Pump2. 优先保证给PM喂盘
|
||||
if (_load.CheckWaferNeedProcess(0) && !CheckNoTrayAvailableInBufferAndCass())
|
||||
// 当Load, Aligner, WaferRobot有Wafer时,并且Buffer或Cass还有可用的Tray时,不要再占用Pump2. 优先保证给PM喂盘
|
||||
if (
|
||||
(_load.CheckWaferNeedProcess(0) || _aligner.CheckWaferNeedProcess(0) || _waferRobot.CheckWaferNeedProcess(0))
|
||||
&& !CheckNoTrayAvailableInBufferAndCass())
|
||||
return;
|
||||
|
||||
if (!_unload.IsAvailable)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// TM把Wafer和Tray放如UnLoad后,先冷却,再分离,然后取Tray前Purge
|
||||
if (_unload.HasWafer(0) && _unload.HasTray(0))
|
||||
{
|
||||
|
@ -1812,6 +1813,11 @@ namespace SicRT.Modules
|
|||
}
|
||||
}
|
||||
|
||||
if (!_unload.IsAvailable)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_unload.HasTray(0)) // UnLoad有Tray,先让TMRobot取Tray
|
||||
{
|
||||
if (_unload.CheckWaferTraySeparated())
|
||||
|
@ -2838,7 +2844,6 @@ namespace SicRT.Modules
|
|||
//place UnLoad没有Tray,Load没有Tray,Robot有Tray,Cassette或Aligner有任务未完成
|
||||
bool canPlace = _load.NoTray(0)
|
||||
&& _trayRobot.HasTrayAndNotExceedProcessCount(0)
|
||||
&& _unload.NoTray(0)
|
||||
&& _load.HasWafer(0)
|
||||
&& (GetWaferInJobQueue() != null || (_aligner.HasWafer(0) && _aligner.CheckWaferNeedProcess(0)) || (_waferRobot.HasWafer(0) && _waferRobot.CheckWaferNeedProcess(0)) || (_load.HasWafer(0) && _load.CheckWaferNeedProcess(0)));
|
||||
if (canPlace)
|
||||
|
|
Loading…
Reference in New Issue