| 
					
				 | 
			
			
				@@ -53,7 +53,10 @@ namespace FurnaceRT.Equipments.PMs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private int _phase1CycleCountSC = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private bool _canSwitchToPhase2 = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private FilterChecker _filterCheckerTank1 = new FilterChecker();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private FilterChecker _filterCheckerCompulsoryTank1 = new FilterChecker();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private FilterChecker _filterCheckerTank2 = new FilterChecker();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private FilterChecker _filterCheckerCompulsoryTank2 = new FilterChecker();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private Dictionary<string, Stopwatch> _allTimeDict = new Dictionary<string, Stopwatch>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void InitN2PurgeData()
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -84,8 +87,10 @@ namespace FurnaceRT.Equipments.PMs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 _currentPhase = enumCurrentPhase;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            _filterCheckerTank1.CheckInterval = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            _filterCheckerTank2.CheckInterval = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _filterCheckerCompulsoryTank1.CheckInterval = double.Parse(SC.ContainsItem("System.AutoTankDelayTime") ? SC.GetStringValue("System.AutoTankDelayTime") : "0");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _filterCheckerTank1.CheckInterval = double.Parse(SC.ContainsItem("System.AutoTankDelayTime") ? SC.GetStringValue("System.AutoTankDelayTime") : "0");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _filterCheckerCompulsoryTank2.CheckInterval = double.Parse(SC.ContainsItem("System.AutoTankDelayTime") ? SC.GetStringValue("System.AutoTankDelayTime") : "0");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _filterCheckerTank2.CheckInterval = double.Parse(SC.ContainsItem("System.AutoTankDelayTime") ? SC.GetStringValue("System.AutoTankDelayTime") : "0");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void InitN2PurgeConfigData()
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -147,7 +152,8 @@ namespace FurnaceRT.Equipments.PMs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 SetHREFEnable(new object[1] { false });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ValveAV113?.TurnValve(false, out _);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ((SensorHCDTANKH != null && SensorHCDTANKH.Value) && TrigSIREFON.Value)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _filterCheckerCompulsoryTank1.Monitor((SensorHCDTANKH != null && SensorHCDTANKH.Value) && TrigSIREFON.Value);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_filterCheckerCompulsoryTank1.Trig)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 LOG.Info($"SensorHCDTANKH trigger:{SensorHCDTANKH.Value},TrigCREFON:{TrigSIREFON.Value}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 SetHREFEnable(new object[1] { false });
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -186,7 +192,8 @@ namespace FurnaceRT.Equipments.PMs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ValveAV121?.TurnValve(false, out _);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ((SensorCSOURCETANKH != null && SensorCSOURCETANKH.Value) && (TrigCREFON != null && TrigCREFON.Value))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _filterCheckerCompulsoryTank2.Monitor((SensorCSOURCETANKH != null && SensorCSOURCETANKH.Value) && (TrigCREFON != null && TrigCREFON.Value));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_filterCheckerCompulsoryTank2.Trig)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 LOG.Info($"SensorCSOURCETANKH trigger:{SensorCSOURCETANKH.Value},TrigCREFON:{TrigCREFON.Value}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 SetCREFEnable(new object[1] { false });
 
			 |