Explorar el Código

fix 1阶段切二阶段 瞬间判断采用滤波判断(氧气分析仪出现读数波动问题)

jiangjy hace 2 semanas
padre
commit
e3f0a88ee6
Se han modificado 1 ficheros con 7 adiciones y 2 borrados
  1. 7 2
      Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

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

@@ -12,6 +12,7 @@ using FurnaceRT.Equipments.PMs.Devices;
 using FurnaceRT.Extraction;
 using MECF.Framework.Common.CommonData.SorterDefines;
 using MECF.Framework.Common.Equipment;
+using MECF.Framework.Common.Tolerance;
 using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.TDK;
 using System;
 using System.Collections.Generic;
@@ -30,6 +31,7 @@ namespace FurnaceRT.Equipments.PMs
         private R_TRIG _trigN2AirDownRD = new R_TRIG();
         private R_TRIG _trigN2AirDownTwoRD = new R_TRIG();
         private R_TRIG _trigSelectN2PurgeModeD = new R_TRIG();
+        private FilterChecker _filterChecker = new FilterChecker();
 
         private Dictionary<string, Tuple<R_TRIG, List<Tuple<IDevice, string>>>> _n2PurgeSequenceAction;
         private Dictionary<string, Func<bool>> _n2PurgeSequenceStatus;
@@ -142,7 +144,7 @@ namespace FurnaceRT.Equipments.PMs
             {
                 return _n2ToAirData;
             }
-       
+
             return ConcentrationO2.Value;
         }
         private void SetN2PurgeModeAction(string selectN2PurgeMode)
@@ -154,7 +156,10 @@ namespace FurnaceRT.Equipments.PMs
             {
                 if (_currentPhase == N2PurgeModeEnum.Manual_phase1)
                 {
-                    if (CheckN2PurgePhase2() && _canSwitchToPhase2)
+                    _filterChecker.CheckInterval = 3;
+                    _filterChecker.Monitor(CheckN2PurgePhase2());
+
+                    if (_filterChecker.Trig && _canSwitchToPhase2)
                     {
                         LOG.Info($" N2PurgeMode Trigger from Manual_phase1 to Manual_phase2,O2:{ConcentrationO2.Value}");
                         SetN2PurgeValveData(N2PurgeModeEnum.Manual_phase2.ToString());