From 08753d5bae8833843a012fb7cbca1603e3031567 Mon Sep 17 00:00:00 2001 From: hanqiangqiang <1364346467@qq.com> Date: Thu, 25 Jul 2024 15:59:44 +0800 Subject: [PATCH] =?UTF-8?q?1=20=E4=BF=AE=E6=94=B9SC=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=AD=E5=8E=8B=E5=8A=9B=E5=8D=95=E4=BD=8D=202=20Load?= =?UTF-8?q?=E8=85=94=E4=B8=AD=E6=B7=BB=E5=8A=A0=E6=9C=BA=E6=A2=B0=E6=89=8B?= =?UTF-8?q?=E5=8F=96=E6=89=98=E7=9B=98Tray=E9=98=B2=E5=91=86=203=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=9B=E5=BB=BA=E5=92=8C=E5=88=A0=E9=99=A4?= =?UTF-8?q?tray=20Wafer=E5=AF=B9=E5=BA=94=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Modules/Mainframe/TMs/Routines/Base/TMBaseRoutine.cs | 6 ++++++ Modules/Mainframe/TMs/Routines/TMRobotPickRoutine.cs | 10 ++++++++-- Modules/Mainframe/TMs/Routines/TMRobotPlaceRoutine.cs | 4 ++-- SicRT/Config/System.sccfg | 4 ++-- SicRT/Equipments/Systems/EquipmentManager.cs | 9 +++++++++ 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/Modules/Mainframe/TMs/Routines/Base/TMBaseRoutine.cs b/Modules/Mainframe/TMs/Routines/Base/TMBaseRoutine.cs index 94ff88bf..3caec422 100644 --- a/Modules/Mainframe/TMs/Routines/Base/TMBaseRoutine.cs +++ b/Modules/Mainframe/TMs/Routines/Base/TMBaseRoutine.cs @@ -16,6 +16,7 @@ using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.RobotBase; using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.TMs; +using SicModules.Devices; using IoInterLock = SicModules.Devices.IoInterLock; namespace SicModules.TMs.Routines.Base @@ -44,6 +45,8 @@ namespace SicModules.TMs.Routines.Base get { return _trayClaw; } } + protected bool IsTrayLoad => _ioLoadRotation.IsMoveDone; + protected IoLift4 UnLoadLift { get { return _unLoadLift; } @@ -67,6 +70,7 @@ namespace SicModules.TMs.Routines.Base private IoLift4 _loadLift; private IoLift4 _unLoadLift; private IoClaw _trayClaw; + private IoLoadRotation _ioLoadRotation; protected SicMultipleServo _sicServo; @@ -87,6 +91,8 @@ namespace SicModules.TMs.Routines.Base _unLoadLift = DEVICE.GetDevice($"{ModuleName.UnLoad}.UnLoadLift"); _trayClaw = DEVICE.GetDevice("LoadLock.LLTrayClaw"); + _ioLoadRotation = DEVICE.GetDevice("Load.Rotation"); + _reactorSuspectorCheckPM1 = DEVICE.GetDevice($"PM1.SensorReactorSuspectorCheck"); _reactorSuspectorCheckPM2 = DEVICE.GetDevice($"PM2.SensorReactorSuspectorCheck"); } diff --git a/Modules/Mainframe/TMs/Routines/TMRobotPickRoutine.cs b/Modules/Mainframe/TMs/Routines/TMRobotPickRoutine.cs index 57cbd91a..aa894ebd 100644 --- a/Modules/Mainframe/TMs/Routines/TMRobotPickRoutine.cs +++ b/Modules/Mainframe/TMs/Routines/TMRobotPickRoutine.cs @@ -205,6 +205,12 @@ namespace SicModules.TMs.Routines EV.PostWarningLog(Module, $"Can not place, Load is clamp!"); return Result.FAIL; } + + if (!IsTrayLoad) + { + EV.PostWarningLog(Module, $"Can not place, tray is not at load angle !"); + return Result.FAIL; + } } else if (_target == ModuleName.UnLoad) { @@ -302,11 +308,11 @@ namespace SicModules.TMs.Routines WaitSicServoLoadAngleRun((int)RoutineStep.SicServoLoadAngleRun, _sicServoLoadAngle, 90); RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmLowAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Picking, false,true,60);//先进去,停在高位 - TimeDelay((int)RoutineStep.TimeDelay3, 3); + TimeDelay((int)RoutineStep.TimeDelay3, 10); //等磁流体开始旋转,释放Tray盘 WaitSicServoUnloadAngleRun((int)RoutineStep.SicServoUnloadAngleRun, _sicServoUnloadAngle, 90);//开始旋转,释放Tray盘 - TimeDelay((int)RoutineStep.TimeDelay4, 10); + TimeDelay((int)RoutineStep.TimeDelay4, 3); RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmHighAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Picking, true,false,60);//从高位退出去 diff --git a/Modules/Mainframe/TMs/Routines/TMRobotPlaceRoutine.cs b/Modules/Mainframe/TMs/Routines/TMRobotPlaceRoutine.cs index 7d303f3a..9817900f 100644 --- a/Modules/Mainframe/TMs/Routines/TMRobotPlaceRoutine.cs +++ b/Modules/Mainframe/TMs/Routines/TMRobotPlaceRoutine.cs @@ -195,7 +195,7 @@ namespace SicModules.TMs.Routines //Place之前先,根据Sensor检测是否有盘 if (!SC.GetValue("System.IsSimulatorMode")) { - if (_target ==ModuleName.LoadLock&& SensorLLTrayPresence.Value) + if ((_target ==ModuleName.LoadLock || _target == ModuleName.Load) && SensorLLTrayPresence.Value) { EV.PostWarningLog(Module, $"Can not place, LLTrayPresence sensor has tray"); return Result.FAIL; @@ -284,7 +284,7 @@ namespace SicModules.TMs.Routines RobotMoveSingleStepAndWait((int)RoutineStep.RobotGotoPmLowAndWait, RobotDevice, _target, _targetSlot, _blade, RobotAction.Placing,false, true,60);//先进去,停在高位 - TimeDelay((int)RoutineStep.TimeDelay4, 0); + TimeDelay((int)RoutineStep.TimeDelay4, 20); WaitSicServoLoadAngleRun((int)RoutineStep.WaitSicServoLoadAngleRun, _sicServoLoadAngleRun, 90);//机械手到高位,磁流体旋转锁紧Tray盘 TimeDelay((int)RoutineStep.TimeDelay5, 3); diff --git a/SicRT/Config/System.sccfg b/SicRT/Config/System.sccfg index 58a500fd..843544ca 100644 --- a/SicRT/Config/System.sccfg +++ b/SicRT/Config/System.sccfg @@ -543,7 +543,7 @@ - + @@ -1144,7 +1144,7 @@ - + diff --git a/SicRT/Equipments/Systems/EquipmentManager.cs b/SicRT/Equipments/Systems/EquipmentManager.cs index 9136cd48..f13fa1a7 100644 --- a/SicRT/Equipments/Systems/EquipmentManager.cs +++ b/SicRT/Equipments/Systems/EquipmentManager.cs @@ -1183,6 +1183,10 @@ namespace SicRT.Equipments.Systems if (WaferManager.Instance.IsWaferSlotLocationValid(chamber, slot)) { + if (!WaferManager.Instance.CheckHasTray(chamber, slot)) + { + WaferManager.Instance.CreateTray(chamber, slot); + } if (WaferManager.Instance.CheckHasWafer(chamber, slot)) { EV.PostInfoLog("System", string.Format("{0} slot {1} already has wafer.create wafer is not valid", chamber, slot)); @@ -1266,6 +1270,11 @@ namespace SicRT.Equipments.Systems } else { + if (WaferManager.Instance.CheckHasWafer(chamber, slot)) + { + WaferManager.Instance.DeleteWafer(chamber, slot); + EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot); + } WaferManager.Instance.DeleteTray(chamber, slot); //EV.PostMessage(ModuleName.System.ToString(), EventEnum.WaferDelete, chamber.ToString(), slot); }