Browse Source

自动补液逻辑添加checkTime,默认1s,可配置

jiangjy 3 days ago
parent
commit
3a4a29c82c

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

@@ -4,6 +4,7 @@
 		<config default="true" name="IsSimulatorMode" description="Is Simulator Mode" max="" min="" paramter="" tag="" unit="" type="Bool" />
 		<config default="true" name="AddRobotDelay" description="AddRobotDelay" max="" min="" paramter="" tag="" unit="" type="Bool"  visible="false"/>
 		<config default="0.5" name="RobotDelayTime" description="RobotDelayTime" max="" min="" paramter="" tag="" unit="" type="String" visible="false"  />
+		<config default="1" name="AutoTankDelayTime" description="AutoTankDelayTime" max="" min="" paramter="" tag="" unit="" type="String" visible="false"  />
 		<config default="120" name="BackUpFileMaxNumber" description="BackUpFileMaxNumber" max="1000" min="0" paramter="" tag="" unit="" type="Integer"   />
 		<!--检测断线报警时间-->
 		<config default="10" name="PLCConnectSensorFoolTime" description="PLC Connect Sensor Fool Time" max="1000" min="0" paramter="" tag="" unit="" type="Integer"   visible="false"/>

+ 10 - 8
Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

@@ -47,12 +47,13 @@ namespace FurnaceRT.Equipments.PMs
         private N2PurgeModeEnum _currentPhase;
         private double _manualPhase2StabilityTime = 0;
         private double _manualPhase4StabilityTime = 0;
-
         private bool _enableAbortN2purge = true;
 
         private int _phase1CycleCount = 0;
         private int _phase1CycleCountSC = 0;
         private bool _canSwitchToPhase2 = true;
+        private FilterChecker _filterCheckerTank1 = new FilterChecker();
+        private FilterChecker _filterCheckerTank2 = new FilterChecker();
 
         private Dictionary<string, Stopwatch> _allTimeDict = new Dictionary<string, Stopwatch>();
         private void InitN2PurgeData()
@@ -82,6 +83,9 @@ namespace FurnaceRT.Equipments.PMs
                 var enumCurrentPhase = (N2PurgeModeEnum)Enum.Parse(typeof(N2PurgeModeEnum), currentPhase);
                 _currentPhase = enumCurrentPhase;
             }
+
+            _filterCheckerTank1.CheckInterval = 1;
+            _filterCheckerTank2.CheckInterval = 1;
         }
 
         private void InitN2PurgeConfigData()
@@ -136,9 +140,8 @@ namespace FurnaceRT.Equipments.PMs
         }
         private void MonitorTank1LeakAgeExec()
         {
-
-            tank1_TRIG.CLK = SensorHCDTANKH != null && SensorHCDTANKH.Value;
-            if (tank1_TRIG.Q)
+            _filterCheckerTank1.Monitor(SensorHCDTANKH != null && SensorHCDTANKH.Value);
+            if (_filterCheckerTank1.Trig)
             {
                 LOG.Info($"SensorHCDTANKH trigger:{SensorHCDTANKH.Value}");
                 SetHREFEnable(new object[1] { false });
@@ -175,9 +178,8 @@ namespace FurnaceRT.Equipments.PMs
         }
         private void MonitorTank2LeakAgeExec()
         {
-
-            tank2_TRIG.CLK = SensorCSOURCETANKH != null && SensorCSOURCETANKH.Value;
-            if (tank2_TRIG.Q)
+            _filterCheckerTank2.Monitor(SensorCSOURCETANKH != null && SensorCSOURCETANKH.Value);
+            if (_filterCheckerTank2.Trig)
             {
                 LOG.Info($"SensorCSOURCETANKH trigger:{SensorCSOURCETANKH.Value}");
                 SetCREFEnable(new object[1] { false });
@@ -768,7 +770,7 @@ namespace FurnaceRT.Equipments.PMs
                 var time = (float)SC.GetValue<double>("PM1.N2Purge.O2DetectorFOUPToFOUPTime");
                 TrigN2PurgeExchangeFOUPTOFOUPWaitTime.SetAOTrigger(time, out _);
             }
-            
+
             SetN2PurgeModePhase(n2PurgeModeEnum);
             //这2个SV下发值应该根据什么阶段下发什么值
             if (n2PurgeModeEnum == N2PurgeModeEnum.WaferCharge.ToString())