Browse Source

FIMS 压氧load 添加LA 浓度检测判断

jiangjy 2 weeks ago
parent
commit
ba01484f34

+ 17 - 8
Furnace/FurnaceRT/Equipments/FIMSs/FIMSLoadRoutine.cs

@@ -2,6 +2,7 @@
 using Aitex.Core.RT.Routine;
 using Aitex.Core.RT.SCCore;
 using Aitex.Core.Util;
+using Caliburn.Micro.Core;
 using FurnaceRT.Equipments.PMs;
 using FurnaceRT.Equipments.Systems;
 using MECF.Framework.Common.Equipment;
@@ -58,6 +59,18 @@ namespace FurnaceRT.Equipments.FIMSs
                     return Result.FAIL;
                 }
             }
+            if (_isNeedN2Purge)
+            {
+                if (!(Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule).FIMSLoadCheckLAO2(out string reason))
+                {
+                    _fimsModule.LoadFailAlarm.Set(reason);
+                    return Result.FAIL;
+                }
+                _pmModule?.SetN2PurgeParameters();
+            }
+
+            _pmModule?.SetN2PurgeProcess(_isNeedN2Purge);
+          
             if (_fimsModule.FIMSDevice.IsLoadCompleted)
             {
                 EV.PostInfoLog(Module, $"{Module} already at load position");
@@ -70,18 +83,14 @@ namespace FurnaceRT.Equipments.FIMSs
             {
                 _timeout = (int)SC.GetValue<double>("PM1.N2Purge.FOUPOpenerStableWaitTime");
             }
-
-
-            Notify($"{_fimsModule.Name} {Name} start");
             _fimsModule.FIMSDevice.IsLoadCompleted = false;
             _fimsModule.FIMSDevice.IsUnloadCompleted = false;
 
 
-            if (_isNeedN2Purge)
-            {
-                _pmModule?.SetN2PurgeParameters();
-            }
-            _pmModule?.SetN2PurgeProcess(_isNeedN2Purge);
+    
+
+            Notify($"{_fimsModule.Name} {Name} start");
+          
 
 
             return Result.RUN;

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

@@ -555,7 +555,18 @@ namespace FurnaceRT.Equipments.PMs
             if (TrigN2PurgeFOUPO2CheckSV != null)
                 TrigN2PurgeFOUPO2CheckSV?.SetAOTrigger(value, out _);
         }
+        public bool FIMSLoadCheckLAO2(out string reason)
+        {
+            var scLAO2 = (float)SC.GetValue<double>("PM1.N2Purge.N2PurgeLAO2CheckSV");
+            reason = $"LA O2 concentration has not reached below {scLAO2}ppm";
+            if (SensorO2DetectSideLA == null || !SensorO2DetectSideLA.Value)
+            {
+                reason = $"Oxygen analyzer not switched to LA";
+                return false;
+            }
 
+            return ((int)(ConcentrationO2.Value)) < scLAO2;
+        }
         public void SetAVParameter(ModuleName fims, bool isEable)
         {
             if (fims == ModuleName.FIMS1)