From 08e23806241605cdc9294047fde62e40c240c9c1 Mon Sep 17 00:00:00 2001 From: HCL <1625932291@qq.com> Date: Thu, 28 Mar 2024 13:24:05 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=BF=9B=E5=BA=A6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PMs/Routines/PMPostTransferRoutine.cs | 6 +++ .../TMs/Routines/TMPressureBalanceRoutine.cs | 37 +++++++++++++------ .../TMs/Routines/TMSlitValveRoutine.cs | 33 ++++++++++------- Modules/Mainframe/UnLoads/UnLoadModule.cs | 2 +- SicRT/Equipments/Schedulers/SchedulerPM.cs | 6 +-- 5 files changed, 54 insertions(+), 30 deletions(-) diff --git a/Modules/Mainframe/PMs/Routines/PMPostTransferRoutine.cs b/Modules/Mainframe/PMs/Routines/PMPostTransferRoutine.cs index 0a4590f6..2f374bff 100644 --- a/Modules/Mainframe/PMs/Routines/PMPostTransferRoutine.cs +++ b/Modules/Mainframe/PMs/Routines/PMPostTransferRoutine.cs @@ -121,6 +121,12 @@ namespace SicModules.PMs.Routines hasWafer = WaferManager.Instance.CheckHasWafer(Module, 0); + if (SC.GetValue("System.IsATMMode")) + { + _psuHeatEnable = false; + _scrHeatEnable = false; + } + Reset(); Notify("Start"); diff --git a/Modules/Mainframe/TMs/Routines/TMPressureBalanceRoutine.cs b/Modules/Mainframe/TMs/Routines/TMPressureBalanceRoutine.cs index 9855d6eb..0af53dd1 100644 --- a/Modules/Mainframe/TMs/Routines/TMPressureBalanceRoutine.cs +++ b/Modules/Mainframe/TMs/Routines/TMPressureBalanceRoutine.cs @@ -45,7 +45,8 @@ namespace SicModules.TMs.Routines private double _slowFastPumpSwitchPressure; //慢快抽切换压力 private int _fastPumpTime; private int _slowPumpTimeout; - private bool isAtmMode = false; + private bool _isAtmMode = false; + private double _atmPressureBase; public TMPressureBalanceRoutine() { @@ -81,19 +82,36 @@ namespace SicModules.TMs.Routines _fastPumpTime = SC.GetValue("TM.Pump.FastPumpTimeout"); _slowPumpTimeout = SC.GetValue("TM.Pump.PumpSlowTimeout"); - //_needPumpDown = !_tm.CheckVacuum(); maxDifferent = SC.GetValue("TM.PressureBalance.BalanceMaxDiffPressure"); - isAtmMode = SC.GetValue("System.IsATMMode"); + _atmPressureBase = SC.GetValue("TM.AtmPressureBase"); - if ((Math.Abs(_tm.ChamberPressure - _balancePressure) < maxDifferent) && _balancePressure != 0) + _isAtmMode = SC.GetValue("System.IsATMMode"); + + if(_isAtmMode) { - return Result.DONE; + if(_tm.ChamberPressure >= _atmPressureBase) + { + return Result.DONE; + } + else + { + _needPumpDown = false; + _needMfcVent = true; + _balancePressure = _atmPressureBase; + } } + else + { + if ((Math.Abs(_tm.ChamberPressure - _balancePressure) < maxDifferent) && _balancePressure != 0) + { + return Result.DONE; + } - _needPumpDown = (_tm.ChamberPressure > _balancePressure) || _balancePressure == 0; + _needPumpDown = (_tm.ChamberPressure > _balancePressure) || _balancePressure == 0; - _needMfcVent = _balancePressure > 10; + _needMfcVent = _balancePressure > 10; + } Notify("Start"); return Result.RUN; @@ -104,11 +122,6 @@ namespace SicModules.TMs.Routines { try { - if (SC.GetValue("System.IsATMMode")) - { - return Result.DONE; - } - if (_needPumpDown) { if (_balancePressure < _slowFastPumpSwitchPressure) diff --git a/Modules/Mainframe/TMs/Routines/TMSlitValveRoutine.cs b/Modules/Mainframe/TMs/Routines/TMSlitValveRoutine.cs index 4945eed6..7b9d96b0 100644 --- a/Modules/Mainframe/TMs/Routines/TMSlitValveRoutine.cs +++ b/Modules/Mainframe/TMs/Routines/TMSlitValveRoutine.cs @@ -217,11 +217,11 @@ namespace SicModules.TMs.Routines if (isAtmMode) { - if (_pmPT1.FeedBack < atmBase) - { - EV.PostWarningLog(Module, $"can not open slit valve, running in ATM mode, but {_paramTarget} not in ATM"); - return Result.FAIL; - } + //if (_pmPT1.FeedBack < atmBase) + //{ + // EV.PostWarningLog(Module, $"can not open slit valve, running in ATM mode, but {_paramTarget} not in ATM"); + // return Result.FAIL; + //} } else { @@ -286,9 +286,10 @@ namespace SicModules.TMs.Routines { TimeDelay((int)RoutineStep.Delay2, 1); ExecuteRoutine((int)RoutineStep.LLRoutine, _llVentTo); - SetTmToLoadLockVent((int)RoutineStep.OpenTMToLLVent, true, _tm, _paramTarget, 5); } + SetTmToLoadLockVent((int)RoutineStep.OpenTMToLLVent, true, _tm, _paramTarget, 5); + TimeDelay((int)RoutineStep.Delay3, 1); CheckPressureCondition((int)RoutineStep.CheckPressureCondition, _tm, _paramTarget); } @@ -308,9 +309,11 @@ namespace SicModules.TMs.Routines { TimeDelay((int)RoutineStep.Delay2, 1); ExecuteRoutine((int)RoutineStep.LLRoutine, _unLoadVentTo); - SetTmToUnLoadVent((int)RoutineStep.OpenTMToLLVent, true, _tm, _paramTarget, 10); + } + SetTmToUnLoadVent((int)RoutineStep.OpenTMToLLVent, true, _tm, _paramTarget, 10); + TimeDelay((int)RoutineStep.Delay3, 1); CheckPressureCondition((int)RoutineStep.CheckPressureCondition, _tm, _paramTarget); } @@ -326,19 +329,18 @@ namespace SicModules.TMs.Routines WaitPVTempratureBelowSet((int)RoutineStep.WaitPVTempBelowSet, 600); + ExecuteRoutine((int)RoutineStep.ChamberBalance, _balanceRoutine); + SetPmToTmV70((int)RoutineStep.OpenTMToPMV70, true, _tm, _paramTarget, 5); + if (_needPressureBalance && !_isAtmMode) { - ExecuteRoutine((int)RoutineStep.ChamberBalance, _balanceRoutine); - SetTmMfc((int)RoutineStep.SetTmMfc, _tmMfcFlow); - SetPmToTmV70((int)RoutineStep.OpenTMToPMV70, true, _tm, _paramTarget, 5); SetSlowVentValve((int)RoutineStep.SetV77, _tm, _paramIsOpen, _timeout); TimeDelay((int)RoutineStep.Delay1, _tmV77DelayTime); //5秒可配置 } CheckPressureCondition((int)RoutineStep.CheckPressureCondition, _tm, _paramTarget); } - SetSlitValve((int)RoutineStep.SetSlitValve, TMDevice, _paramTarget, _paramIsOpen, _timeout); if (!_paramIsOpen) { @@ -355,13 +357,16 @@ namespace SicModules.TMs.Routines if (!_paramIsOpen) { + if(_isATMMode) + { + _pmPostTrasferNeedEnableHeat = false; + } SetPostTransfer((int)RoutineStep.SetPostTransfer, _pmPostTrasferNeedEnableHeat); TimeDelay((int)RoutineStep.Delay4, 2); } } else if(_isBuffer) { - //CheckPressureCondition((int)RoutineStep.CheckPressureCondition, _tm, _paramTarget); SetSlitValve((int)RoutineStep.SetSlitValve, TMDevice, _paramTarget, _paramIsOpen, _timeout); } @@ -713,8 +718,8 @@ namespace SicModules.TMs.Routines return true; }, () => { - string pm1Status = DATA.Poll($"{_targetModule}.Status") == null ? "" : DATA.Poll($"{_targetModule}.Status").ToString(); - return pm1Status == "ProcessIdle" || pm1Status == "Idle"; + string pmStatus = DATA.Poll($"{_targetModule}.Status") == null ? "" : DATA.Poll($"{_targetModule}.Status").ToString(); + return pmStatus == "ProcessIdle" || pmStatus == "Idle"; }, timeout * 1000); diff --git a/Modules/Mainframe/UnLoads/UnLoadModule.cs b/Modules/Mainframe/UnLoads/UnLoadModule.cs index 24dc1b1b..0c10b975 100644 --- a/Modules/Mainframe/UnLoads/UnLoadModule.cs +++ b/Modules/Mainframe/UnLoads/UnLoadModule.cs @@ -442,7 +442,7 @@ namespace SicModules.UnLoads private bool FsmStartPrepareTransfer(object[] param) { - Result ret = StartRoutine(_prepareTransferRoutine); + Result ret = StartRoutine(_prepareTransferRoutine,param); if (ret == Result.FAIL || ret == Result.DONE) return false; return ret == Result.RUN; diff --git a/SicRT/Equipments/Schedulers/SchedulerPM.cs b/SicRT/Equipments/Schedulers/SchedulerPM.cs index d60e008e..888c4678 100644 --- a/SicRT/Equipments/Schedulers/SchedulerPM.cs +++ b/SicRT/Equipments/Schedulers/SchedulerPM.cs @@ -18,9 +18,9 @@ namespace SicRT.Scheduler { get { - if (Singleton.Instance.IsAutoMode) + if (SC.GetValue("System.IsATMMode")) { - return _pm.IsProcessIdle && _pm.IsOnline && CheckTaskDone(); + return (_pm.IsProcessIdle || _pm.IsIdle) && _pm.IsOnline && CheckTaskDone(); } else { @@ -91,7 +91,7 @@ namespace SicRT.Scheduler if (SC.GetValue("System.IsATMMode")) { - _timer.Start(5000); + _timer.Start(3000); _entityTaskToken = (int)FSM_MSG.TIMER;