From daced771644586c2d97b615a8f7ea6d1c8f250b6 Mon Sep 17 00:00:00 2001 From: HCL <1625932291@qq.com> Date: Thu, 11 Apr 2024 14:12:31 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=95=B4=E7=90=86PJ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SicRT/Equipments/AutoTransfer.cs | 90 ++++++------------- .../Equipments/Schedulers/SchedulerModule.cs | 11 +-- 2 files changed, 27 insertions(+), 74 deletions(-) diff --git a/SicRT/Equipments/AutoTransfer.cs b/SicRT/Equipments/AutoTransfer.cs index f49a46f4..7c9561f3 100644 --- a/SicRT/Equipments/AutoTransfer.cs +++ b/SicRT/Equipments/AutoTransfer.cs @@ -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() diff --git a/SicRT/Equipments/Schedulers/SchedulerModule.cs b/SicRT/Equipments/Schedulers/SchedulerModule.cs index 152a7d16..4404dcc5 100644 --- a/SicRT/Equipments/Schedulers/SchedulerModule.cs +++ b/SicRT/Equipments/Schedulers/SchedulerModule.cs @@ -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 {