Browse Source

update robot 光感

jiangjy 3 weeks ago
parent
commit
4b8b0a1ed2

+ 1 - 1
Furnace/FurnaceRT/Equipments/FIMSs/FIMSLoadRoutine.cs

@@ -69,7 +69,7 @@ namespace FurnaceRT.Equipments.FIMSs
 
             if (_fimsModule.FIMSDevice.DoorOpenCloseStatus == Devices.DeviceStatus.Close && _fimsModule.IsWaferOnRobot)
             {
-                _fimsModule.UnloadFailAlarm.Set($"wafer robot inside {Module}");
+                _fimsModule.LoadFailAlarm.Set($"The wafer on {Module} has shifted");
                 return Result.FAIL;
             }
 

+ 2 - 2
Furnace/FurnaceRT/Equipments/FIMSs/FIMSModule.cs

@@ -208,8 +208,8 @@ namespace FurnaceRT.Equipments.FIMSs
         {
             OP.Subscribe($"{Module}.Abort", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Abort));
             OP.Subscribe($"{Module}.Home", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Home));
-            OP.Subscribe($"{Module}.Load", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Load));
-            OP.Subscribe($"{Module}.Unload", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Unload));
+            OP.Subscribe($"{Module}.Load", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Load, args));
+            OP.Subscribe($"{Module}.Unload", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Unload, args));
             OP.Subscribe($"{Module}.Reset", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Reset));
             OP.Subscribe($"{Module}.Cycle", (string cmd, object[] args) => CheckToPostMessage((int)MSG.Cycle));
             OP.Subscribe($"{Module}.SetOnline", (string cmd, object[] args) =>

+ 5 - 1
Furnace/FurnaceRT/Equipments/FIMSs/FIMSUnloadRoutine.cs

@@ -80,7 +80,11 @@ namespace FurnaceRT.Equipments.FIMSs
             {
                 _timeout = (int)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerStableWaitTime");
             }
-
+            if (_fimsModule.FIMSDevice.DoorOpenCloseStatus == Devices.DeviceStatus.Close && _fimsModule.IsWaferOnRobot)
+            {
+                _fimsModule.UnloadFailAlarm.Set($"The wafer on {Module} has shifted");
+                return Result.FAIL;
+            }
             if (_isNeedN2Purge)
                 _pmModule?.SetN2PurgeParameters();
             _pmModule?.SetN2PurgeFIMS1O2CheckEnable(ModuleHelper.Converter(Module), _isNeedN2Purge);

+ 11 - 7
Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

@@ -141,6 +141,10 @@ namespace FurnaceRT.Equipments.PMs
             }
             while (stopwatch.ElapsedMilliseconds < millisecondsTimeout)
             {
+                if (!_allTimeDict[modeKey].IsRunning)
+                {
+                    return true;
+                }
                 if (!condition())
                 {
                     _allTimeDict[modeKey].Stop();
@@ -403,43 +407,43 @@ namespace FurnaceRT.Equipments.PMs
         {
             if (SC.ContainsItem("PM1.N2Purge.TransferRoomArrivalWaitTime") && TrigN2PurgeLAO2CheckTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.TransferRoomArrivalWaitTime") * 1000;
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.TransferRoomArrivalWaitTime") ;
                 TrigN2PurgeLAO2CheckTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.TransferRoomStableWaitTime") && TrigN2PurgeLAO2OverTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.TransferRoomStableWaitTime") * 1000;
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.TransferRoomStableWaitTime") ;
                 TrigN2PurgeLAO2OverTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.FOUPOpenerArrivalWaitTime") && TrigN2PurgeFOUPO2CheckTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerArrivalWaitTime") * 1000;
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerArrivalWaitTime") ;
                 TrigN2PurgeFOUPO2CheckTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.FOUPOpenerStableWaitTime") && TrigN2PurgeFOUPO2OverTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerStableWaitTime") * 1000;
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerStableWaitTime") ;
                 TrigN2PurgeFOUPO2OverTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.O2DetectorTransferRoomToFOUPTime") && TrigN2PurgeExchangeLATOFOUPWaitTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorTransferRoomToFOUPTime") * 1000;
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorTransferRoomToFOUPTime") ;
                 TrigN2PurgeExchangeLATOFOUPWaitTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.O2DetectorFOUPToTransferRoomTime") && TrigN2PurgeExchangeFOUPTOLAWaitTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorFOUPToTransferRoomTime") * 1000;
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorFOUPToTransferRoomTime") ;
                 TrigN2PurgeExchangeFOUPTOLAWaitTime.SetAOTrigger(time, out _);
             }
 
             if (SC.ContainsItem("PM1.N2Purge.O2DetectorFOUPToFOUPTime") && TrigN2PurgeExchangeFOUPTOFOUPWaitTime != null)
             {
-                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorFOUPToFOUPTime") * 1000;
+                var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorFOUPToFOUPTime") ;
                 TrigN2PurgeExchangeFOUPTOFOUPWaitTime.SetAOTrigger(time, out _);
             }
         }

+ 5 - 1
Furnace/FurnaceRT/Equipments/WaferRobots/WaferRobotMap.cs

@@ -119,12 +119,16 @@ namespace FurnaceRT.Equipments.WaferRobots
                     }
 
                     var fims = Singleton<EquipmentManager>.Instance.Modules[_mapFIMS] as FIMSModule;
-                    
+
                     if (fims != null && !fims.CheckReadyForTransfer(ModuleHelper.Converter(Module), _blade, 0, EnumTransferType.Map, out string reason))
                     {
                         _waferRobotModule.MapFailAlarm.Set(reason);
                         return Result.FAIL;
                     }
+                    if (fims != null && fims.IsWaferOnRobot)
+                    {
+                        _waferRobotModule.MapFailAlarm.Set($"The wafer on {Module} has shifted");
+                    }
 
                     fims.IsMapping = true;
                 }

+ 10 - 6
Furnace/FurnaceRT/Equipments/WaferRobots/WaferRobotPick.cs

@@ -198,10 +198,10 @@ namespace FurnaceRT.Equipments.WaferRobots
                     }
                     else
                     {
-                        if (_waferRobotModule.WaferRobotDevice.IsWaferPresenceOnBlade1 || 
-                            _waferRobotModule.WaferRobotDevice.IsWaferPresenceOnBlade2 || 
-                            _waferRobotModule.WaferRobotDevice.IsWaferPresenceOnBlade3 || 
-                            _waferRobotModule.WaferRobotDevice.IsWaferPresenceOnBlade4 || 
+                        if (_waferRobotModule.WaferRobotDevice.IsWaferPresenceOnBlade1 ||
+                            _waferRobotModule.WaferRobotDevice.IsWaferPresenceOnBlade2 ||
+                            _waferRobotModule.WaferRobotDevice.IsWaferPresenceOnBlade3 ||
+                            _waferRobotModule.WaferRobotDevice.IsWaferPresenceOnBlade4 ||
                             _waferRobotModule.WaferRobotDevice.IsWaferPresenceOnBlade5 ||
                             !WaferManager.Instance.CheckNoWafer(ModuleName.WaferRobot, 0) ||
                             !WaferManager.Instance.CheckNoWafer(ModuleName.WaferRobot, 1) ||
@@ -267,6 +267,10 @@ namespace FurnaceRT.Equipments.WaferRobots
                         _waferRobotModule.PickWaferFailAlarm.Set(reason);
                         return Result.FAIL;
                     }
+                    if (fims != null&&fims.IsWaferOnRobot)
+                    {
+                        _waferRobotModule.PickWaferFailAlarm.Set($"The wafer on {Module} has shifted");
+                    }
                 }
             }
 
@@ -340,7 +344,7 @@ namespace FurnaceRT.Equipments.WaferRobots
                     Singleton<EquipmentManager>.Instance.SetUIWaferCount(fims1FoupInfo, ModuleName.FIMS1, out var wafers);
 
                     Singleton<EquipmentManager>.Instance.SetVisibility(fims1FoupInfo, true);
-                    
+
                 }
                 if (fims2 != null && fims2.CheckReadyForTransfer(ModuleName.WaferRobot, _blade, 0, EnumTransferType.Place, out reason))
                 {
@@ -462,7 +466,7 @@ namespace FurnaceRT.Equipments.WaferRobots
             _needStartCheck = false;
         }
 
-        private void Pick(int id,  ModuleName source, int slot, Hand hand, int timeout)
+        private void Pick(int id, ModuleName source, int slot, Hand hand, int timeout)
         {
             _routineStep = (RoutineStep)Enum.Parse(typeof(RoutineStep), id.ToString());
             Tuple<bool, Result> ret = ExecuteAndWait(id, () =>

+ 4 - 0
Furnace/FurnaceRT/Equipments/WaferRobots/WaferRobotPlace.cs

@@ -271,6 +271,10 @@ namespace FurnaceRT.Equipments.WaferRobots
                         _waferRobotModule.PlaceWaferFailAlarm.Set(reason);
                         return Result.FAIL;
                     }
+                    if (fims != null&&fims.IsWaferOnRobot)
+                    {
+                        _waferRobotModule.PlaceWaferFailAlarm.Set($"The wafer on {Module} has shifted");
+                    }
                 }
             }