1.整理PJ
This commit is contained in:
parent
69b4d03abb
commit
daced77164
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue