修正AbortJob后新的Job无法启动的问题。

AutoTransfer的Clear和Reset函数新增对WaferRobot和TrayRobot的处理。
This commit is contained in:
DESKTOP-GPE37UV\THINKAPD 2022-12-23 17:55:48 +08:00
parent 129bb47366
commit ec50fc1b16
2 changed files with 60 additions and 4 deletions

View File

@ -189,9 +189,14 @@ namespace SicRT.Modules
_buffer.ResetTask();
_cassetteBL.ResetTask();
_waferRobot.ResetTask();
_trayRobot.ResetTask();
_lstControlJobs.Clear();
_lstProcessJobs.Clear();
_bufferWaferInfo.Clear();
}
public void ResetTask()
@ -227,6 +232,12 @@ namespace SicRT.Modules
cass.ResetTask();
}
}
if(!_waferRobot.IsOnline)
_waferRobot.ResetTask();
if(!_trayRobot.IsOnline)
_trayRobot.ResetTask();
}
public void GetConfig()
@ -1002,6 +1013,8 @@ namespace SicRT.Modules
_dbCallback.LotFinished(cj);
JobDataRecorder.EndCJ(cj.InnerId.ToString(), aborted_cj, unprocessed_cj);
Clear();
}
public void ResumeJob(string jobName)
@ -1822,6 +1835,12 @@ namespace SicRT.Modules
{
if (_unload.CheckWaferTraySeparated())
{
if (!_unload.IsAvailable)
{
return;
}
// 如果Sequence下一步是UnLoad,并且W&T已冷却和分离
if (!_unload.CheckPurgedBeforeTrayPicking()
&& !_load.IsInPumping)
@ -1832,10 +1851,20 @@ namespace SicRT.Modules
return;
}
if (!_unload.IsAvailable)
{
return;
}
// 如果Tray拿走以前还没Purge先Purge在让TMRobot取Tray
if (!_unload.CheckPurgedBeforeTrayPicking())
return;
if (!_unload.IsAvailable)
{
return;
}
if (!_unload.IsReadyForPick(ModuleName.TMRobot, 0)
&& !_load.IsInPumping)
{
@ -1849,6 +1878,13 @@ namespace SicRT.Modules
{
if (_unload.CheckWaferTraySeparated() )
{
if (!_unload.IsAvailable)
{
return;
}
// 如果取Wafer前还未Purge先Purge
if (!_unload.CheckPurgedBeforeWaferPicking() &&
_unload.CheckWaferNextStepIsThis(ModuleName.UnLoad, 0)
@ -1861,6 +1897,11 @@ namespace SicRT.Modules
return;
}
if (!_unload.IsAvailable)
{
return;
}
if (_unload.CheckPurgedBeforeWaferPicking()
&& !_unload.IsReadyForPick(ModuleName.WaferRobot, 0)
&& !_load.IsInPumping)
@ -1874,6 +1915,11 @@ namespace SicRT.Modules
}
else // 如果UnLoad里啥也没有则准备好下次TMRobot喂 W&T
{
if (!_unload.IsAvailable)
{
return;
}
// 如果Wafer取完后还没有Purge先Purge
if (!_unload.CheckPurgedAfterWaferPicked() && !_load.IsInPumping)
{
@ -1882,11 +1928,21 @@ namespace SicRT.Modules
_unload.PurgeAfterWaferPicked(cycle, pumpDelay);
}
if (!_unload.IsAvailable)
{
return;
}
// 如果Wafer取完后还没有Purge则终止后去操作。
if (!_unload.CheckPurgedAfterWaferPicked())
return;
if (!_unload.IsAvailable)
{
return;
}
if (!_unload.IsReadyForPlace(ModuleName.TMRobot, 0)
&& !_load.IsInPumping)
{

View File

@ -800,7 +800,7 @@ namespace SicRT.Equipments.Systems
{
EV.ClearAlarmEvent();
if (FsmState == (int)RtState.AutoRunning)
if (FsmState == (int)RtState.AutoRunning || FsmState == (int)RtState.AutoIdle)
{
_auto.ResetTask();
}