Browse Source

update abortN2purge

jiangjy 3 weeks ago
parent
commit
4f41b9b291

+ 8 - 0
Furnace/FurnaceRT/Config/IO/ELK/DeviceModelPM.xml

@@ -1140,6 +1140,14 @@
 
 		<IoSensor id="SensorLADoorSw1" display="LA door sw1" di="DI_SL05001LAdoorsw1"/>
 		
+		<IoSensor id="SensorSL02001gasboxdoorsw11" display="SensorSL02001gasboxdoorsw11" di="DI_SL02001gasboxdoorsw11"/>
+		<IoSensor id="SensorSL02001gasboxdoorsw12" display="SensorSL02001gasboxdoorsw12" di="DI_SL02001gasboxdoorsw12"/>
+		<IoSensor id="SensorSL02002gasboxdoorsw11" display="SensorSL02002gasboxdoorsw11" di="DI_SL02002gasboxdoorsw11"/>
+		<IoSensor id="SensorSL02002gasboxdoorsw12" display="SensorSL02002gasboxdoorsw12" di="DI_SL02002gasboxdoorsw12"/>
+		
+		<IoSensor id="SensorSL05002LAdoorsw2" display="SL05002LAdoorsw2" di="DI_SL05002LAdoorsw2"/>
+		<IoSensor id="SensorSL05004LAfurnacedoorsw" display="SL05004LAfurnacedoorsw" di="DI_SL05004LAfurnacedoorsw"/>
+		
 		<IoSensor id="SensorPLCHeartBeatPC" display="PLCHeartBeatPC" di="DI_PLCHeartBeatPC"/>
 
 

+ 2 - 0
Furnace/FurnaceRT/Config/System.sccfg

@@ -4620,6 +4620,8 @@
 
 		</configs>
 		<configs name="N2Purge" visible="false">
+			<config default="false" name="EnableAbortN2purge"  description="" max="0" min="0" paramter="" tag="" unit="" type="Bool"/>
+
 			<config default="1" name="TransferRoomArrivalWaitTime" description="LA O2 CheckTime" max="360" min="1" paramter="" tag="" unit="s" type="Double" />
 			<config default="1" name="TransferRoomStableWaitTime" description="LA O2 OverTime" max="360" min="1" paramter="" tag="" unit="s" type="Double" />
 			<config default="1" name="FOUPOpenerArrivalWaitTime" description="FOUP O2 CheckTime" max="360" min="1" paramter="" tag="" unit="s" type="Double" />

+ 13 - 0
Furnace/FurnaceRT/Equipments/PMs/PMModuleDevice.cs

@@ -947,6 +947,19 @@ namespace FurnaceRT.Equipments.PMs
 
         [Tag("SensorPLCHeartBeatPC")]
         public IoSensor SensorPLCHeartBeatPC { get; set; }
+
+        [Tag("SensorSL02001gasboxdoorsw11")]
+        public IoSensor SensorSL02001gasboxdoorsw11 { get; set; }
+        [Tag("SensorSL02001gasboxdoorsw12")]
+        public IoSensor SensorSL02001gasboxdoorsw12 { get; set; }
+        [Tag("SensorSL02002gasboxdoorsw11")]
+        public IoSensor SensorSL02002gasboxdoorsw11 { get; set; }
+        [Tag("SensorSL02002gasboxdoorsw12")]
+        public IoSensor SensorSL02002gasboxdoorsw12 { get; set; }
+        [Tag("SensorSL05002LAdoorsw2")]
+        public IoSensor SensorSL05002LAdoorsw2 { get; set; }
+        [Tag("SensorSL05004LAfurnacedoorsw")]
+        public IoSensor SensorSL05004LAfurnacedoorsw { get; set; }
         //[Tag("SensorNH3PressureOK")]
         //public IoAlarmSignal SignalLeak { get; set; }
 

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

@@ -10,6 +10,7 @@ using FurnaceRT.Equipments.PMs.Devices;
 using FurnaceRT.Extraction;
 using MECF.Framework.Common.CommonData.SorterDefines;
 using MECF.Framework.Common.Equipment;
+using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.TDK;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
@@ -39,6 +40,7 @@ namespace FurnaceRT.Equipments.PMs
         private double _manualPhase4StabilityTime = 0;
         private bool _manualPhase2NeedCheck = true;
         private bool _manualPhase4NeedCheck = true;
+        private bool _enableAbortN2purge = true;
 
         private Dictionary<string, Stopwatch> _allTimeDict = new Dictionary<string, Stopwatch>();
         private void InitN2PurgeData()
@@ -55,6 +57,7 @@ namespace FurnaceRT.Equipments.PMs
             _n2PurgeData = SC.ContainsItem($"System.N2PurgeData") ? SC.GetValue<double>("System.N2PurgeData") : 20;
             _n2ToAirData = SC.ContainsItem($"System.N2PurgeData") ? SC.GetValue<double>("System.N2ToAirData") : 185000;
 
+            _enableAbortN2purge = SC.ContainsItem($"PM1.N2Purge.EnableAbortN2purge") ? SC.GetValue<bool>("PM1.N2Purge.EnableAbortN2purge") : false;
             _manualPhase2StabilityTime = SC.ContainsItem($"PM1.N2Purge.Manual_phase2.StabilityTime") ? SC.GetValue<double>("PM1.N2Purge.Manual_phase2.StabilityTime") : 0;
             _manualPhase2NeedCheck = _manualPhase2StabilityTime > 0;
 
@@ -91,6 +94,11 @@ namespace FurnaceRT.Equipments.PMs
 
         private void MonitorN2Purge()
         {
+            if (IsAbortN2purge())
+            {
+                SC.SetItemValue("PM1.SelectN2PurgeMode", N2PurgeModeEnum.ATMMode.ToString());
+            }
+
             var selectN2PurgeMode = SC.ContainsItem("PM1.SelectN2PurgeMode") ? SC.GetStringValue("PM1.SelectN2PurgeMode") : "";
             if (string.IsNullOrEmpty(selectN2PurgeMode))
             {
@@ -318,7 +326,22 @@ namespace FurnaceRT.Equipments.PMs
         {
             return GetN2PurgeAIRTo20PPMStatus() && GetN2PurgeUnder20PPMStatus() && FIMS2.IsFoupExist && FIMS2.CollisionAvoidanceUpDownStatus == DeviceStatus.Down; ;
         }
+        public bool IsAbortN2purge()
+        {
+            if (!_enableAbortN2purge)
+            {
+                return false;
+            }
 
+            if (SensorSL02001gasboxdoorsw11.Value || SensorSL02001gasboxdoorsw12.Value || SensorSL02002gasboxdoorsw11.Value || SensorSL02002gasboxdoorsw12.Value || SensorSL05002LAdoorsw2.Value || SensorSL05004LAfurnacedoorsw.Value)
+            {
+                return true;
+            }
+
+
+            return false;
+
+        }
 
         public void SetN2PurgeLAO2CheckFirstEnable(bool isEable)
         {