| 
															
																@@ -51,16 +51,16 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckHighLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.HighLimit : 0.0f);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckHighLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.HighLimit : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckLowLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.LowLimit : 0.0f);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckLowLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.LowLimit : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckBasePressureLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.BasePressureLimit : 0.0f);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckBasePressureLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.BasePressureLimit : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            DATA.Subscribe($"{Module}.LeakCheckDelayTime", () => _leakCheckTableParameter != null? _leakCheckTableParameter.DelayTime : 0.0f);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            DATA.Subscribe($"{Module}.LeakCheckDelayElapseTime", () => (_leakCheckTableParameter != null && !_leakCheckStatus.Equals("None") && _leakCheckDelayTimer.IsRunning) || _leakCheckTimer.IsRunning ? _leakCheckDelayTimer.ElapsedMilliseconds / 1000 : 0.0f);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            DATA.Subscribe($"{Module}.LeakCheckDelayTime", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.DelayTime : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            DATA.Subscribe($"{Module}.LeakCheckDelayElapseTime", () => (_leakCheckTableParameter != null && _leakCheckStatus.Equals("LeakCheckDelay") && _leakCheckDelayTimer.IsRunning) || _leakCheckTimer.IsRunning ? _leakCheckDelayTimer.ElapsedMilliseconds / 1000 : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckCheckTime", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.CheckTime : 0.0f);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckCheckTime", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.CheckTime : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckElapseTime", () => _leakCheckTableParameter != null && !_leakCheckStatus.Equals("None") && _leakCheckTimer.IsRunning ? _leakCheckTimer.ElapsedMilliseconds / 1000 : 0.0f);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckElapseTime", () => _leakCheckTableParameter != null && !_leakCheckStatus.Equals("None") && _leakCheckTimer.IsRunning ? _leakCheckTimer.ElapsedMilliseconds / 1000 : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckBasePressure", () => _leakCheckTableParameter != null ? _basePressure : 0.0f);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckBasePressure", () => _leakCheckTableParameter != null ? _basePressure : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckLeakLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.LeakLimit : 0.0f);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckLeakLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.LeakLimit : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckDelayMonitorPressure", () => _leakCheckTableParameter != null && _leakCheckDelayTimer.IsRunning && !_leakCheckTimer.IsRunning ? (float)_leakCheckDelayMonitorPressure : 0.0f);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckDelayMonitorPressure", () => _leakCheckTableParameter != null && _leakCheckDelayTimer.IsRunning && !_leakCheckTimer.IsRunning ? (float)_leakCheckDelayMonitorPressure : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckDelayStartPressure", () => _leakCheckTableParameter != null && _leakCheckDelayTimer.IsRunning ? (float)_leakCheckDelayStartPressure : 0.0f);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckDelayStartPressure", () => _leakCheckTableParameter != null && _leakCheckDelayTimer.IsRunning ? (float)_leakCheckDelayStartPressure : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            DATA.Subscribe($"{Module}.LeakCheckMonitorPressure", () => _leakCheckTableParameter != null && _leakCheckDelayTimer.IsRunning && _isLeakCheckFinished ? (float)_leakCheckMonitorPressure : 0.0f);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            DATA.Subscribe($"{Module}.LeakCheckStartPressure", () => _leakCheckTableParameter != null && _leakCheckDelayTimer.IsRunning && _leakCheckTimer.IsRunning ? (float)_leakCheckStartPressure : 0.0f);
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            DATA.Subscribe($"{Module}.LeakCheckMonitorPressure", () => _leakCheckTableParameter != null && _leakCheckTimer.IsRunning && !_leakCheckDelayTimer.IsRunning  ? (float)_leakCheckMonitorPressure : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            DATA.Subscribe($"{Module}.LeakCheckStartPressure", () => _leakCheckTableParameter != null && !_leakCheckDelayTimer.IsRunning && _leakCheckTimer.IsRunning ? (float)_leakCheckStartPressure : 0.0f);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckActualLeak", () => (float)_leakCheckActualLeak);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckActualLeak", () => (float)_leakCheckActualLeak);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckRetryCurrentCount", () => _currentRetryCount);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckRetryCurrentCount", () => _currentRetryCount);
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckRetryLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.RetryLimit : 0);
 
															 | 
															
															 | 
															
																             DATA.Subscribe($"{Module}.LeakCheckRetryLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.RetryLimit : 0);
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -76,7 +76,7 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _leakCheckDelayStartPressure = 0;
 
															 | 
															
															 | 
															
																             _leakCheckDelayStartPressure = 0;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _leakCheckDelayMonitorPressure = 0;
 
															 | 
															
															 | 
															
																             _leakCheckDelayMonitorPressure = 0;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _leakCheckStartPressure = 0;
 
															 | 
															
															 | 
															
																             _leakCheckStartPressure = 0;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-        
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _leakCheckMonitorPressure = 0;
 
															 | 
															
															 | 
															
																             _leakCheckMonitorPressure = 0;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (_leakCheckDic == null)
 
															 | 
															
															 | 
															
																             if (_leakCheckDic == null)
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -89,7 +89,7 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _currentLeakCheckIndex = index;
 
															 | 
															
															 | 
															
																             _currentLeakCheckIndex = index;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _basePressure = _leakCheckTableParameter.PressureSensor.Value;
 
															 | 
															
															 | 
															
																             _basePressure = _leakCheckTableParameter.PressureSensor.Value;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (_basePressure > _leakCheckTableParameter.HighLimit && _leakCheckTableParameter.HighLimit > 0)
 
															 | 
															
															 | 
															
																             if (_basePressure > _leakCheckTableParameter.HighLimit && _leakCheckTableParameter.HighLimit > 0)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             {
 
															 | 
															
															 | 
															
																             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 LeakCheckAlarm.Set($"Leak check alarm: PH={_leakCheckTableParameter.HighLimit} < BP={_basePressure}");
 
															 | 
															
															 | 
															
																                 LeakCheckAlarm.Set($"Leak check alarm: PH={_leakCheckTableParameter.HighLimit} < BP={_basePressure}");
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -113,7 +113,7 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _leakCheckDelayStartPressure = _leakCheckTableParameter.PressureSensor.Value;
 
															 | 
															
															 | 
															
																             _leakCheckDelayStartPressure = _leakCheckTableParameter.PressureSensor.Value;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            _leakCheckDelayTimer.Restart();
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            _leakCheckDelayTimer.Stop();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _leakCheckDelayStartPressure = _leakCheckTableParameter.PressureSensor.Value;
 
															 | 
															
															 | 
															
																             _leakCheckDelayStartPressure = _leakCheckTableParameter.PressureSensor.Value;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             _leakCheckTimer.Stop();
 
															 | 
															
															 | 
															
																             _leakCheckTimer.Stop();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																         }
 
															 | 
															
															 | 
															
																         }
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -167,7 +167,7 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                             if (!string.IsNullOrEmpty(att.Value))
 
															 | 
															
															 | 
															
																                             if (!string.IsNullOrEmpty(att.Value))
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                             {
 
															 | 
															
															 | 
															
																                             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                                 var paras = att.Value.Split(':');
 
															 | 
															
															 | 
															
																                                 var paras = att.Value.Split(':');
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                                if(paras.Length > 1)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                                if (paras.Length > 1)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                                 {
 
															 | 
															
															 | 
															
																                                 {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                                     table.PressureSensor = DEVICE.GetDevice<IoPressureMeter>($"{Module}.{paras[1]}");
 
															 | 
															
															 | 
															
																                                     table.PressureSensor = DEVICE.GetDevice<IoPressureMeter>($"{Module}.{paras[1]}");
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                                 }
 
															 | 
															
															 | 
															
																                                 }
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -273,7 +273,7 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 _leakCheckDelayTimer.Restart();
 
															 | 
															
															 | 
															
																                 _leakCheckDelayTimer.Restart();
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-            if (_leakCheckDelayTimer.IsRunning && _leakCheckDelayTimer.ElapsedMilliseconds >= leakCheckParameter.DelayTime* 1000)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (_leakCheckDelayTimer.IsRunning && _leakCheckDelayTimer.ElapsedMilliseconds >= leakCheckParameter.DelayTime * 1000)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             {
 
															 | 
															
															 | 
															
																             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 _leakCheckStatus = "LeakCheck";
 
															 | 
															
															 | 
															
																                 _leakCheckStatus = "LeakCheck";
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                 if (!_leakCheckTimer.IsRunning)
 
															 | 
															
															 | 
															
																                 if (!_leakCheckTimer.IsRunning)
 
															 | 
														
													
												
											
												
													
														
															 | 
															
																@@ -287,8 +287,17 @@ namespace FurnaceRT.Equipments.PMs 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             else
 
															 | 
															
															 | 
															
																             else
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             {
 
															 | 
															
															 | 
															
																             {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-                if(!_leakCheckTimer.IsRunning)
 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                if (!_leakCheckTimer.IsRunning)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                    _leakCheckDelayMonitorPressure = leakCheckParameter.PressureSensor.Value;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																                     _leakCheckStatus = "LeakCheckDelay";
 
															 | 
															
															 | 
															
																                     _leakCheckStatus = "LeakCheckDelay";
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            if (!_leakCheckDelayTimer.IsRunning && _leakCheckTimer.IsRunning)
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+            {
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                _leakCheckMonitorPressure = leakCheckParameter.PressureSensor.Value;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+                _leakCheckStartPressure = _leakCheckDelayMonitorPressure;
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             }
 
															 | 
															
															 | 
															
																             }
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
 
															 | 
															
															 | 
															
																 
 
															 | 
														
													
												
													
														
															| 
															 | 
															
																             if (_leakCheckTimer.IsRunning && _leakCheckTimer.ElapsedMilliseconds >= leakCheckParameter.CheckTime * 1000)
 
															 | 
															
															 | 
															
																             if (_leakCheckTimer.IsRunning && _leakCheckTimer.ElapsedMilliseconds >= leakCheckParameter.CheckTime * 1000)
 
															 |