Browse Source

update leakCheck

jiangjy 3 weeks ago
parent
commit
85348e8a7d

+ 4 - 0
Furnace/FurnaceRT/Devices/IoLP.cs

@@ -4,6 +4,7 @@ using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Device.Unit;
 using Aitex.Core.RT.Event;
 using Aitex.Core.RT.IOCore;
+using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.RT.SCCore;
 using Aitex.Core.Util;
@@ -306,6 +307,7 @@ namespace FurnaceRT.Devices
                 FaLoadPort faLoadPort = FALoadPortManager.Instance.GetLoadPort(PortID);
                 if (faLoadPort != null)
                 {
+                    LOG.Info("IsUnloadCompleted:");
                     // No_state = 0,
                     //Manual,
                     //Auto,
@@ -332,6 +334,7 @@ namespace FurnaceRT.Devices
                 FaLoadPort faLoadPort = FALoadPortManager.Instance.GetLoadPort(PortID);
                 if (faLoadPort != null)
                 {
+                    LOG.Info("!IsUnloadCompleted:");
                     if (faLoadPort.LoadPortTransferStateMachine.TransferState != FACore.E87FA.LPTransferState.OUT_OF_SERVICE &&
                         faLoadPort.LoadPortTransferStateMachine.TransferState != FACore.E87FA.LPTransferState.TRANSFER_BLOCKED)
                     {
@@ -342,6 +345,7 @@ namespace FurnaceRT.Devices
 
             if (_cstAddtrg.Q && IsUnloadCompleted)
             {
+                LOG.Info("!IsUnloadCompleted:");
                 if (!Singleton<EquipmentManager>.Instance.IsAutoMode && !Singleton<EquipmentManager>.Instance.IsReturnWaferMode)
                 {
                     if (!CarrierManager.Instance.CheckHasCarrier(Name, 0))

+ 19 - 10
Furnace/FurnaceRT/Equipments/PMs/PMLeakCheck.cs

@@ -51,16 +51,16 @@ namespace FurnaceRT.Equipments.PMs
             DATA.Subscribe($"{Module}.LeakCheckHighLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.HighLimit : 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}.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}.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}.LeakCheckLeakLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.LeakLimit : 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}.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}.LeakCheckRetryCurrentCount", () => _currentRetryCount);
             DATA.Subscribe($"{Module}.LeakCheckRetryLimit", () => _leakCheckTableParameter != null ? _leakCheckTableParameter.RetryLimit : 0);
@@ -76,7 +76,7 @@ namespace FurnaceRT.Equipments.PMs
             _leakCheckDelayStartPressure = 0;
             _leakCheckDelayMonitorPressure = 0;
             _leakCheckStartPressure = 0;
-        
+
             _leakCheckMonitorPressure = 0;
 
             if (_leakCheckDic == null)
@@ -89,7 +89,7 @@ namespace FurnaceRT.Equipments.PMs
 
             _currentLeakCheckIndex = index;
             _basePressure = _leakCheckTableParameter.PressureSensor.Value;
-            
+
             if (_basePressure > _leakCheckTableParameter.HighLimit && _leakCheckTableParameter.HighLimit > 0)
             {
                 LeakCheckAlarm.Set($"Leak check alarm: PH={_leakCheckTableParameter.HighLimit} < BP={_basePressure}");
@@ -113,7 +113,7 @@ namespace FurnaceRT.Equipments.PMs
             }
 
             _leakCheckDelayStartPressure = _leakCheckTableParameter.PressureSensor.Value;
-            _leakCheckDelayTimer.Restart();
+            _leakCheckDelayTimer.Stop();
             _leakCheckDelayStartPressure = _leakCheckTableParameter.PressureSensor.Value;
             _leakCheckTimer.Stop();
         }
@@ -167,7 +167,7 @@ namespace FurnaceRT.Equipments.PMs
                             if (!string.IsNullOrEmpty(att.Value))
                             {
                                 var paras = att.Value.Split(':');
-                                if(paras.Length > 1)
+                                if (paras.Length > 1)
                                 {
                                     table.PressureSensor = DEVICE.GetDevice<IoPressureMeter>($"{Module}.{paras[1]}");
                                 }
@@ -273,7 +273,7 @@ namespace FurnaceRT.Equipments.PMs
                 _leakCheckDelayTimer.Restart();
             }
 
-            if (_leakCheckDelayTimer.IsRunning && _leakCheckDelayTimer.ElapsedMilliseconds >= leakCheckParameter.DelayTime* 1000)
+            if (_leakCheckDelayTimer.IsRunning && _leakCheckDelayTimer.ElapsedMilliseconds >= leakCheckParameter.DelayTime * 1000)
             {
                 _leakCheckStatus = "LeakCheck";
                 if (!_leakCheckTimer.IsRunning)
@@ -287,8 +287,17 @@ namespace FurnaceRT.Equipments.PMs
             }
             else
             {
-                if(!_leakCheckTimer.IsRunning)
+                if (!_leakCheckTimer.IsRunning)
+                {
+                    _leakCheckDelayMonitorPressure = leakCheckParameter.PressureSensor.Value;
                     _leakCheckStatus = "LeakCheckDelay";
+
+                }
+            }
+            if (!_leakCheckDelayTimer.IsRunning && _leakCheckTimer.IsRunning)
+            {
+                _leakCheckMonitorPressure = leakCheckParameter.PressureSensor.Value;
+                _leakCheckStartPressure = _leakCheckDelayMonitorPressure;
             }
 
             if (_leakCheckTimer.IsRunning && _leakCheckTimer.ElapsedMilliseconds >= leakCheckParameter.CheckTime * 1000)

+ 15 - 3
Furnace/FurnaceUI/Views/Operations/PressureDetailViewModel.cs

@@ -66,10 +66,22 @@ namespace FurnaceUI.Views.Operations
         {
             base.InvokeAfterUpdateProperty(data);
 
-            LeakCheckDelayProGress = LeakCheckDelayElapseTime > 0 ? (LeakCheckDelayElapseTime / LeakCheckDelayTime) * 100.0f : 0;
-            
-            LeakCheckProGress = (LeakCheckElapseTime > 0 && LeakCheckDelayProGress >= 100) ? (LeakCheckElapseTime / LeakCheckCheckTime) * 100.0f : 0;
+            if (LeakCheckStatus == "LeakCheckDelay")
+            {
+                LeakCheckProGress = 0;
+                LeakCheckDelayProGress = LeakCheckDelayElapseTime > 0 ? (LeakCheckDelayElapseTime / LeakCheckDelayTime) * 100.0f : 0;
+
+            }
+            if (LeakCheckStatus == "LeakCheck")
+            {
+                LeakCheckDelayProGress = 0;
+                LeakCheckProGress = (LeakCheckElapseTime > 0 ) ? (LeakCheckElapseTime / LeakCheckCheckTime) * 100.0f : 0;
 
+            }
+            if (LeakCheckStatus == "None")
+            {
+                LeakCheckDelayProGress = LeakCheckProGress = 0;
+            }
         }
 
         protected override void OnActivate()