1.整理PJ

This commit is contained in:
HCL 2024-04-11 14:12:31 +08:00
parent 69b4d03abb
commit daced77164
2 changed files with 27 additions and 74 deletions

View File

@ -742,7 +742,6 @@ namespace SicRT.Modules
return;
}
if (!_pm2.IsOnline)
{
EV.PostWarningLog("Scheduler", "can not start job, pm2 is not in online");
@ -763,6 +762,21 @@ namespace SicRT.Modules
cj.LotInnerId = Guid.NewGuid();
_dbCallback.LotCreated(cj);
foreach (var pjName in cj.ProcessJobNameList)
{
var pj = _processJobList.Find(x => x.Name == pjName);
if (pj == null)
{
LOG.Error($"Not find pj named {pjName} in {cj.Name}");
continue;
}
if (pj.State == EnumProcessJobState.Queued)
{
ActiveProcessJob(pj);
}
}
cj.SetState(EnumControlJobState.Executing);
}
}
@ -835,8 +849,6 @@ namespace SicRT.Modules
UpdateControlJobStatus();
StartNewJob();
return Result.RUN;
}
@ -847,8 +859,10 @@ namespace SicRT.Modules
var wafer = GetModule(GetWaferReturnedCassette(pj.SlotWafers[i].Item1)).GetWaferInfo(pj.SlotWafers[i].Item2);
if (wafer.IsWaferEmpty)
return false;
if (checkAllProcessed && GetModule(GetWaferReturnedCassette(pj.SlotWafers[i].Item1)).CheckWaferNeedProcess(pj.SlotWafers[i].Item2))
return false;
if (wafer.ProcessJob == null || wafer.ProcessJob.InnerId != pj.InnerId)
{
return false;
@ -860,18 +874,12 @@ namespace SicRT.Modules
private ModuleName GetWaferReturnedCassette(ModuleName moduleFrom)
{
//wafer CassAL和CassAR互换
if (CassetteFromAToB)
{
if (moduleFrom == ModuleName.CassAL)
{
return ModuleName.CassAR;
}
else if (moduleFrom == ModuleName.CassAR)
{
return ModuleName.CassAL;
}
return moduleFrom == ModuleName.CassAL ? ModuleName.CassAR : ModuleName.CassAL;
}
return moduleFrom;
}
@ -916,30 +924,18 @@ namespace SicRT.Modules
{
if (pj.State == EnumProcessJobState.Processing)
{
if (CheckAllWaferReturned(pj, true) && CheckAllPmCleaned(pj) && CheckAllDummyWaferReturned())
if (CheckAllWaferReturned(pj, true))
{
if (_unload.IsAvailable && _buffer.IsAvailable && _tmRobot.IsAvailable && _load.IsAvailable
&& _waferRobot.IsAvailable && _unload.NoTray(0)
&& _trayRobot.IsAvailable && _tmRobot.NoTray(0)
&& _load.NoTray(0) && _waferRobot.NoWafer(0) && _trayRobot.NoTray(0))
{
pj.SetState(EnumProcessJobState.ProcessingComplete);
JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
}
pj.SetState(EnumProcessJobState.ProcessingComplete);
JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
}
}
else if (pj.State == EnumProcessJobState.Stopping)
{
if (CheckAllWaferReturned(pj, false) && CheckAllPmCleaned(pj) && CheckAllDummyWaferReturned())
if (CheckAllWaferReturned(pj, false))
{
if (_unload.IsAvailable && _buffer.IsAvailable && _tmRobot.IsAvailable && _load.IsAvailable
&& _waferRobot.IsAvailable && _unload.NoTray(0)
&& _trayRobot.IsAvailable && _tmRobot.NoTray(0)
&& _load.NoTray(0) && _waferRobot.NoWafer(0) && _trayRobot.NoTray(0))
{
pj.SetState(EnumProcessJobState.ProcessingComplete);
JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
}
pj.SetState(EnumProcessJobState.ProcessingComplete);
JobDataRecorder.EndPJ(pj.InnerId.ToString(), 0, 0);
}
}
}
@ -1058,40 +1054,6 @@ namespace SicRT.Modules
_controlJobList.Remove(cj);
}
//ControlJobInfo cjActived = null;
//foreach (var cj in _lstControlJobs)
//{
// if (cj.State == EnumControlJobState.Executing)
// {
// cjActived = cj;
// break;
// }
//}
}
private void StartNewJob()
{
foreach (var cj in _controlJobList)
{
if (cj.State == EnumControlJobState.Executing)
{
foreach (var pjName in cj.ProcessJobNameList)
{
var pj = _processJobList.Find(x => x.Name == pjName);
if (pj == null)
{
LOG.Error($"Not find pj named {pjName} in {cj.Name}");
continue;
}
if (pj.State == EnumProcessJobState.Queued)
{
ActiveProcessJob(pj);
}
}
}
}
}
public bool CheckAllJobDone()

View File

@ -411,15 +411,6 @@ namespace SicRT.Modules.Schedulers
if (wafer.IsWaferEmpty)
return false;
//if (wafer.Status == WaferStatus.Dummy && wafer.ProcessState == WaferProcessStatus.Wait)
//{
// if (ModuleHelper.IsPm(processIn))
// {
// return (CheckNeedRunClean(out bool withWafer, out _) && withWafer);
// }
// return true;
//}
if (wafer.ProcessJob == null || wafer.ProcessJob.Sequence == null || wafer.ProcessJob.Sequence.Steps == null)
return false;
@ -434,7 +425,7 @@ namespace SicRT.Modules.Schedulers
{
if (processIn != ModuleName.System)
{
return stepModule == processIn ? true : false;
return stepModule == processIn;
}
else
{