Browse Source

Merge branch 'Master_ELK02_Release_Development' of http://git.jetplasma-oa.com/Jet/FurnaceELK into Master_ELK02_Release_Development

huangping 1 week ago
parent
commit
c8b971be5e

+ 2 - 0
FrameworkLocal/Common/CommonData/SorterDefines/N2PurgeModeEnum.cs

@@ -27,5 +27,7 @@ namespace MECF.Framework.Common.CommonData.SorterDefines
         FoupEnter,
         WaferCharge,
         WaferDisCharge,
+        BoatLoad,
+        BoatUnLoad,
     }
 }

+ 10 - 64
Furnace/FurnaceRT/Equipments/Boats/BoatMove.cs

@@ -147,7 +147,7 @@ namespace FurnaceRT.Equipments.Boats
                     case "boatcap2":
                         AutoShutterOpen((int)RoutineStep.AutoShutterOpen, true, _shutterTimeout);
 
-                        CheckBoatLoadO2Desity((int)RoutineStep.Load, _zAxisTimeout);
+                        CheckBoatMoveO2Desity((int)RoutineStep.Load, _zAxisTimeout, N2PurgeModeEnum.BoatLoad.ToString());
 
                         var position = (BoatPosition)Enum.Parse(typeof(BoatPosition), _position);
 
@@ -157,7 +157,7 @@ namespace FurnaceRT.Equipments.Boats
                     case "boatloaderhome":
                         AutoShutterOpen((int)RoutineStep.AutoShutterOpen, true, _shutterTimeout);
 
-                        CheckBoatUnLoadO2Desity((int)RoutineStep.Unload, _zAxisTimeout);
+                        CheckBoatMoveO2Desity((int)RoutineStep.Unload, _zAxisTimeout, N2PurgeModeEnum.BoatUnLoad.ToString());
 
                         //CheckPrepareMove((int)RoutineStep.CheckPrepareMove, 2);
 
@@ -198,89 +198,34 @@ namespace FurnaceRT.Equipments.Boats
             Notify("Finished");
             return Result.DONE;
         }
-        private void CheckBoatUnLoadO2Desity(int id, int timeout)
+        private void CheckBoatMoveO2Desity(int id, int timeout, string boatMoveN2Purge)
         {
             var reason = "";
             Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
             {
-                Notify($"Check Boat UnLoad O2Desity");
+                Notify($"Check {boatMoveN2Purge} O2Desity");
                 return true;
             }, () =>
             {
                 var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
 
-                if (!pm.IsProcessing)
-                {
-                    LOG.Info($"boat Unload Check O2Desity,IsProcessing={pm.IsProcessing}");
-                    return true;
-                }
-                var isCheckO2Enbale = pm.GetBoatUnLoadCheckO2DensityConfig();
+                var isCheckO2Enbale = pm.CheckBoatMoveIsNeedOxygenPressure(boatMoveN2Purge, pm.IsProcessing, out var o2LimtData);
                 if (!isCheckO2Enbale)
                     return true;
 
-                var o2LimtData = pm.GetBoatUnLoadLAO2CheckSV();
                 _filterChecker.Monitor(pm.GetN2PurgeUnder20PPMStatus(o2LimtData));
                 if (_filterChecker.Trig)
                 {
                     pm.IsWait = false;
-                    LOG.Info($"boat Check O2Desity,boatUnLoad TransferRoomO2DensityCheckEnable={isCheckO2Enbale},LA LimtData={o2LimtData},Wait BoatUnLoad。A");
+                    LOG.Info($"{boatMoveN2Purge} Check O2Desity,TransferRoomO2DensityCheckEnable={isCheckO2Enbale},LA LimtData={o2LimtData},Wait {boatMoveN2Purge}。A");
                     _filterChecker.Restart();
                     return true;
                 }
-                pm.IsWait = true;
-                return false; ;
-
-
-            }, timeout * 1000);
-
-            if (ret.Item1)
-            {
-                if (ret.Item2 == Result.FAIL)
-                {
-                    throw (new RoutineFaildException());
-                }
-                else if (ret.Item2 == Result.TIMEOUT) //timeout
-                {
-                    _boatModule.BoatZAxisMoveFailedForInterlock.Set($"CheckO2Desity timeout={timeout}");
-                    throw (new RoutineFaildException());
-                }
-                else
-                    throw (new RoutineBreakException());
-            }
-        }
-
-        private void CheckBoatLoadO2Desity(int id, int timeout)
-        {
-            var reason = "";
-            Tuple<bool, Result> ret = ExecuteAndWait(id, () =>
-            {
-                Notify($"Check O2");
-                return true;
-            }, () =>
-            {
-                var pm = (Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule);
-
-                if (!pm.IsProcessing)
+                if (!pm.IsWait)
                 {
-                    LOG.Info($"boat load Check O2Desity,IsProcessing={pm.IsProcessing}");
-                    return true;
+                    pm.IsWait = true;
                 }
 
-                var isCheckO2Enbale = pm.GetBoatLoadCheckO2DensityConfig();
-                if (!isCheckO2Enbale)
-                    return true;
-
-                var o2LimtData = pm.GetBoatLoadLAO2CheckSV();
-                _filterChecker.Monitor(pm.GetN2PurgeUnder20PPMStatus(o2LimtData));
-                if (_filterChecker.Trig)
-                {
-                    pm.IsWait = false;
-                    _filterChecker.Restart();
-                    LOG.Info($"boat load Check O2Desity,boatLoad TransferRoomO2DensityCheckEnable={isCheckO2Enbale},LA LimtData={o2LimtData},Wait BoatLoad。A");
-                    return true;
-                }
-             
-                pm.IsWait = true;
                 return false; ;
 
 
@@ -294,7 +239,7 @@ namespace FurnaceRT.Equipments.Boats
                 }
                 else if (ret.Item2 == Result.TIMEOUT) //timeout
                 {
-                    _boatModule.BoatZAxisMoveFailedForInterlock.Set($"CheckO2Desity timeout={timeout}");
+                    _boatModule.BoatZAxisMoveFailedForInterlock.Set($"{boatMoveN2Purge} CheckO2Desity timeout={timeout}");
                     throw (new RoutineFaildException());
                 }
                 else
@@ -302,6 +247,7 @@ namespace FurnaceRT.Equipments.Boats
             }
         }
 
+
         private void CheckPrepareMove(int id, int timeout)
         {
             var reason = "";

+ 38 - 1
Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

@@ -16,6 +16,7 @@ using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.Tolerance;
 using MECF.Framework.Common.Utilities;
 using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.TDK;
+using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.PMs;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
@@ -854,6 +855,41 @@ namespace FurnaceRT.Equipments.PMs
             return false;
         }
 
+        /// <summary>
+        /// boat Move时候是否Check氧气浓度
+        /// </summary>
+        /// <param name="n2PurgeModeEnumStr"></param>
+        /// <param name="isProcessing"></param>
+        /// <param name="limitO2Data"></param>
+        /// <returns></returns>
+        public bool CheckBoatMoveIsNeedOxygenPressure(string n2PurgeModeEnumStr,bool isProcessing, out double limitO2Data)
+        {
+            limitO2Data = 0;
+
+            if (!CheckIsLASide())
+                return false;
+
+            if (!isProcessing)
+                return false;
+
+            if (n2PurgeModeEnumStr == N2PurgeModeEnum.BoatLoad.ToString())
+            {
+                var isCheckO2Enbale = GetBoatLoadCheckO2DensityConfig();
+                limitO2Data = GetBoatLoadLAO2CheckSV();
+                return isCheckO2Enbale;
+            }
+            if (n2PurgeModeEnumStr == N2PurgeModeEnum.BoatUnLoad.ToString())
+            {
+                var isCheckO2Enbale = GetBoatUnLoadCheckO2DensityConfig();
+                limitO2Data = GetBoatUnLoadLAO2CheckSV();
+                return isCheckO2Enbale;
+
+            }
+
+            return false;
+
+
+        }
 
 
 
@@ -954,7 +990,8 @@ namespace FurnaceRT.Equipments.PMs
         }
 
 
-   
+
+
 
     }
 }