From 8b9724541bbacb578a9af20ae696fa74e60c175b Mon Sep 17 00:00:00 2001 From: "DESKTOP-GPE37UV\\THINKAPD" Date: Fri, 16 Dec 2022 15:27:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4Sequence=E4=B8=ADBuffer?= =?UTF-8?q?=E6=A7=BD=E4=BD=8D=E7=9A=84=E9=99=90=E5=88=B6=E3=80=82=20AutoTr?= =?UTF-8?q?ansfer=E4=B8=AD=E7=9A=84UnLoad=E4=BB=BB=E5=8A=A1=E6=96=B0?= =?UTF-8?q?=E5=A2=9EWafer=E5=88=A4=E6=96=AD=EF=BC=8C=E5=A6=82=E6=9E=9CWafe?= =?UTF-8?q?rRobot=E3=80=81Aligner=E6=88=96Load=E4=BB=BB=E6=84=8F=E6=A8=A1?= =?UTF-8?q?=E7=BB=84=E4=B8=8A=E6=9C=89=E9=9C=80=E8=A6=81=E5=81=9A=E5=B7=A5?= =?UTF-8?q?=E8=89=BA=E7=9A=84Wafer=EF=BC=8C=E5=88=99=E4=B8=8D=E6=89=A7?= =?UTF-8?q?=E8=A1=8CUnLoad=E4=BB=BB=E5=8A=A1=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Modules/Mainframe/EFEMs/EFEMModule.cs | 3 ++- SicRT/Equipments/AutoTransfer.cs | 27 ++++++++++++++++----------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/Modules/Mainframe/EFEMs/EFEMModule.cs b/Modules/Mainframe/EFEMs/EFEMModule.cs index 9e1db2e..c6a9faf 100644 --- a/Modules/Mainframe/EFEMs/EFEMModule.cs +++ b/Modules/Mainframe/EFEMs/EFEMModule.cs @@ -42,6 +42,7 @@ namespace Mainframe.EFEMs public WaferRobotModule WaferRobotModule { get; set; } + public TrayRobotModule TrayRobotModule { get; set; } @@ -264,7 +265,7 @@ namespace Mainframe.EFEMs private bool FsmStartHome(object[] param) { - return WaferRobotModule.Home(out _) && TrayRobotModule.Home(out _); + return WaferRobotModule.Home(out _) && TrayRobotModule.Home(out _); } private bool FsmMonitorHomeTask(object[] param) diff --git a/SicRT/Equipments/AutoTransfer.cs b/SicRT/Equipments/AutoTransfer.cs index d535f48..5e56607 100644 --- a/SicRT/Equipments/AutoTransfer.cs +++ b/SicRT/Equipments/AutoTransfer.cs @@ -655,11 +655,11 @@ namespace SicRT.Modules return false; } - if(sequence.Steps[currentIndex].StepParameter["SlotSelection"].ToString().Contains("3")) + /*if(sequence.Steps[currentIndex].StepParameter["SlotSelection"].ToString().Contains("3")) { reason = $"Invalid sequence {seqs[i]},{currentIndex + 1}st step the option '3' cannot be selected in parameter 'SlotSelection' of Buffer."; return false; - } + }*/ if (!sequence.Steps[currentIndex].StepParameter.ContainsKey("BufferType") || !sequence.Steps[currentIndex].StepParameter["BufferType"].ToString().Contains("Heat")) { @@ -1779,16 +1779,17 @@ namespace SicRT.Modules _unload.ResetPurgedAndSeparatedStatus(); } - - // 如果Load等着TMRobot来拿盘,先保障Load - /*if ( _load.CheckWaferNeedProcess(0) - || (GetWaferInJobQueue() != null && GetRunWaferCount() < _maxTrayCount)) // 还有盘要做工艺并且整个腔体里的盘数量不足_maxTrayCount,则不要占用Pump2 - return;*/ - - // 当Load有Wafer时,并且Buffer或Cass还有可用的Tray时,不要再占用Pump2. 优先保证给PM喂盘 - if (_load.CheckWaferNeedProcess(0) && !CheckNoTrayAvailableInBufferAndCass()) + // 当Load, Aligner, WaferRobot有Wafer时,并且Buffer或Cass还有可用的Tray时,不要再占用Pump2. 优先保证给PM喂盘 + if ( + (_load.CheckWaferNeedProcess(0) || _aligner.CheckWaferNeedProcess(0) || _waferRobot.CheckWaferNeedProcess(0)) + && !CheckNoTrayAvailableInBufferAndCass()) return; + if (!_unload.IsAvailable) + { + return; + } + // TM把Wafer和Tray放如UnLoad后,先冷却,再分离,然后取Tray前Purge if (_unload.HasWafer(0) && _unload.HasTray(0)) { @@ -1812,6 +1813,11 @@ namespace SicRT.Modules } } + if (!_unload.IsAvailable) + { + return; + } + if (_unload.HasTray(0)) // UnLoad有Tray,先让TMRobot取Tray { if (_unload.CheckWaferTraySeparated()) @@ -2838,7 +2844,6 @@ namespace SicRT.Modules //place UnLoad没有Tray,Load没有Tray,Robot有Tray,Cassette或Aligner有任务未完成 bool canPlace = _load.NoTray(0) && _trayRobot.HasTrayAndNotExceedProcessCount(0) - && _unload.NoTray(0) && _load.HasWafer(0) && (GetWaferInJobQueue() != null || (_aligner.HasWafer(0) && _aligner.CheckWaferNeedProcess(0)) || (_waferRobot.HasWafer(0) && _waferRobot.CheckWaferNeedProcess(0)) || (_load.HasWafer(0) && _load.CheckWaferNeedProcess(0))); if (canPlace)