浏览代码

Tank补液逻辑及其H位卡控

jiangjy 16 小时之前
父节点
当前提交
88c9aef856

+ 19 - 19
Furnace/FurnaceRT/Equipments/PMs/PMAux.cs

@@ -967,24 +967,24 @@ namespace FurnaceRT.Equipments.PMs
             return true;
         }
 
-        private bool SetCREFEnable(object[] param)
-        {
-            if (param != null && param.Length > 0)
-            {
-                bool.TryParse(param[0].ToString(), out bool isEnable);
-                IsCREFOn = isEnable;
-            }
-            return true;
-        }
-
-        private bool SetSIREFEnable(object[] param)
-        {
-            if (param != null && param.Length > 0)
-            {
-                bool.TryParse(param[0].ToString(), out bool isEnable);
-                IsSIREFOn = isEnable;
-            }
-            return true;
-        }
+        //private bool SetCREFEnable(object[] param)
+        //{
+        //    if (param != null && param.Length > 0)
+        //    {
+        //        bool.TryParse(param[0].ToString(), out bool isEnable);
+        //        IsCREFOn = isEnable;
+        //    }
+        //    return true;
+        //}
+
+        //private bool SetSIREFEnable(object[] param)
+        //{
+        //    if (param != null && param.Length > 0)
+        //    {
+        //        bool.TryParse(param[0].ToString(), out bool isEnable);
+        //        IsSIREFOn = isEnable;
+        //    }
+        //    return true;
+        //}
     }
 }

+ 2 - 1
Furnace/FurnaceRT/Equipments/PMs/PMModule.cs

@@ -771,7 +771,8 @@ namespace FurnaceRT.Equipments.PMs
             OP.Subscribe($"{Name}.SetSIREFEnable", (out string reason, int time, object[] param) =>
             {
                 reason = string.Empty;
-                SetSIREFEnable(param);
+                SetHREFEnable(param);
+
                 return true;
             });
             OP.Subscribe($"{Name}.SetBufferPurge", (out string reason, int time, object[] param) =>

+ 11 - 1
Furnace/FurnaceRT/Equipments/PMs/PMModuleDevice.cs

@@ -1677,7 +1677,17 @@ namespace FurnaceRT.Equipments.PMs
         public IoTrigger TrigCREFON { get; set; }
 
         [Tag("TrigSIREFON")]
-        public IoTrigger TrigSIREFON { get; set; }
+        public IoTrigger TrigSIREFON { get; set; }  
+        [Tag("SensorHREFILK")]
+        public IoSensor SensorHREFILK { get; set; }    
+        [Tag("SensorHCDTANKH")]
+        public IoSensor SensorHCDTANKH { get; set; }
+
+        [Tag("SensorCSOURCETANKH")]
+        public IoSensor SensorCSOURCETANKH { get; set; }
+
+        [Tag("SensorCREFILK")]
+        public IoSensor SensorCREFILK { get; set; }
 
         [Tag("TrigCEXHON")]
         public IoTrigger TrigCEXHON { get; set; }

+ 3 - 0
Furnace/FurnaceRT/Equipments/PMs/PMModuleInterlock.cs

@@ -154,6 +154,9 @@ namespace FurnaceRT.Equipments.PMs
                 //MonitorVAC2();
                 //MonitorVAC3();
                 MonitorPLCConnected();
+
+                MonitorTank1LeakAgeExec();
+                MonitorTank2LeakAgeExec();
                 //foreach (var item in _inCommandLst)
                 //{
                 //    if (item == null)

+ 6 - 0
Furnace/FurnaceRT/Equipments/PMs/PMModuleRecipeExecutor.cs

@@ -265,6 +265,12 @@ namespace FurnaceRT.Equipments.PMs
                                     valve.TurnValve(set, out _);
                             }
                             break;
+                        case "CREF":
+                            SetCREFEnable(new object[1] { set });
+                            break;
+                        case "HREF":
+                            SetHREFEnable(new object[1] { set });
+                            break;
                         case "BWR":
                             valveName = "ValveBlowerPowerOn";
                             if (_valves.Any(x => x.Name == valveName))

+ 69 - 1
Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

@@ -17,6 +17,7 @@ using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts.TDK;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.Linq;
 
 namespace FurnaceRT.Equipments.PMs
 {
@@ -32,7 +33,8 @@ namespace FurnaceRT.Equipments.PMs
         private R_TRIG _trigN2AirDownTwoRD = new R_TRIG();
         private R_TRIG _trigSelectN2PurgeModeD = new R_TRIG();
         private FilterChecker _filterChecker = new FilterChecker();
-
+        private R_TRIG tank1_TRIG = new R_TRIG();
+        private R_TRIG tank2_TRIG = new R_TRIG();
         private Dictionary<string, Tuple<R_TRIG, List<Tuple<IDevice, string>>>> _n2PurgeSequenceAction;
         private Dictionary<string, Func<bool>> _n2PurgeSequenceStatus;
         private Dictionary<string, R_TRIG> _rTrigDict;
@@ -129,6 +131,72 @@ namespace FurnaceRT.Equipments.PMs
             }
             SetN2PurgeModeAction(selectN2PurgeMode);
         }
+        private void MonitorTank1LeakAgeExec()
+        {
+
+            tank1_TRIG.CLK = SensorHCDTANKH != null && SensorHCDTANKH.Value;
+            if (tank1_TRIG.Q)
+            {
+                SetHREFEnable(new object[1] { false });
+                ValveAV113?.TurnValve(false, out _);
+
+            }
+
+        }
+
+        public bool SetHREFEnable(object[] param)
+        {
+            if (param == null || param.Length <= 0)
+                return true;
+
+            bool.TryParse(param[0].ToString(), out bool isEnable);
+
+            if (isEnable)
+            {
+                if (SensorHREFILK != null && SensorHREFILK.Value)
+                {
+                    TrigSIREFON?.CheckAndSet(isEnable, out _);
+
+                }
+            }
+            else
+            {
+                TrigSIREFON?.CheckAndSet(isEnable, out _);
+            }
+            return true;
+        }
+        private void MonitorTank2LeakAgeExec()
+        {
+
+            tank2_TRIG.CLK = SensorCSOURCETANKH != null && SensorCSOURCETANKH.Value;
+            if (tank2_TRIG.Q)
+            {
+                SetCREFEnable(new object[1] { false });
+                ValveAV121?.TurnValve(false, out _);
+
+            }
+
+        }
+        public bool SetCREFEnable(object[] param)
+        {
+            if (param == null || param.Length <= 0)
+                return true;
+
+            bool.TryParse(param[0].ToString(), out bool isEnable);
+            if (isEnable)
+            {
+                if (SensorCREFILK != null && SensorCREFILK.Value)
+                {
+                    TrigCREFON?.CheckAndSet(isEnable, out _);
+
+                }
+            }
+            else
+            {
+                TrigCREFON?.CheckAndSet(isEnable, out _);
+            }
+            return true;
+        }
         private double GetN2PurgeLimitData()
         {
             if (_N2PurgeMode == N2PurgeModeEnum.N2PurgeMode)

+ 21 - 5
Furnace/FurnaceUI/Views/Operations/Maintenances/ManualSetViewModel.cs

@@ -1437,7 +1437,7 @@ namespace FurnaceUI.Views.Recipes
                     recipeTempModeViewModel.SelectBtnName = SelectBtnName;
                     recipeTempModeViewModel.IsManualSet = true;
                     recipeTempModeViewModel.SelectProfileTable = SplitTemperatureControlMode(TemperatureControlMode);
-                    var rtn = (wm as WindowManager)?.ShowDialogWithTitle(recipeTempModeViewModel,this, null, "Temp Mode");
+                    var rtn = (wm as WindowManager)?.ShowDialogWithTitle(recipeTempModeViewModel, this, null, "Temp Mode");
                     if ((bool)rtn)
                     {
                         SelectBtnName = recipeTempModeViewModel.SelectBtnName;
@@ -1460,7 +1460,7 @@ namespace FurnaceUI.Views.Recipes
                     tempCorrectionEditViewModel.IsEnabledControl = false;
                     tempCorrectionEditViewModel.AutoSelectVisibility = Visibility.Visible;
                     //  tempOffsetTableViewModel.SelectedRecipeStep = SelectedRecipeStep;
-                    rtn = (wm as WindowManager)?.ShowDialogWithTitle(tempCorrectionEditViewModel,this, null, "Temp Correct Table");
+                    rtn = (wm as WindowManager)?.ShowDialogWithTitle(tempCorrectionEditViewModel, this, null, "Temp Correct Table");
                     if ((bool)rtn)
                     {
                         TemperatureCorrect = tempCorrectionEditViewModel.ResultString;
@@ -1472,7 +1472,7 @@ namespace FurnaceUI.Views.Recipes
                     tempOffsetTableViewModel1.IsEnabledControl = false;
                     tempOffsetTableViewModel1.IsManualSet = true;
                     tempOffsetTableViewModel1.TempOffsetTableSelected = TemperaturePID;
-                    rtn = (wm as WindowManager)?.ShowDialogWithTitle(tempOffsetTableViewModel1,this, null, "Temp PID Table");
+                    rtn = (wm as WindowManager)?.ShowDialogWithTitle(tempOffsetTableViewModel1, this, null, "Temp PID Table");
                     if ((bool)rtn)
                     {
                         TemperaturePID = tempOffsetTableViewModel1.TempOffsetTableSelected;
@@ -1900,7 +1900,23 @@ namespace FurnaceUI.Views.Recipes
             }
             if (PumpSetValues.Count > 0)
             {
-                PumpSetValues.ToList().ForEach(x => InvokeClient.Instance.Service.DoOperation($"{x.Key}.{AITValveOperation.GVTurnValve}", x.Value));
+                foreach (var item in PumpSetValues.ToList())
+                {
+                    if (item.Key == "PM1.HREF")
+                    {
+                        InvokeClient.Instance.Service.DoOperation($"PM1.SetSIREFEnable", item.Value);
+
+                    }
+                    else if (item.Key == "PM1.CREF")
+                    {
+                        InvokeClient.Instance.Service.DoOperation($"PM1.SetCREFEnable", item.Value);
+
+                    }
+                    else
+                    {
+                        InvokeClient.Instance.Service.DoOperation($"{item.Key}.{AITValveOperation.GVTurnValve}", item.Value);
+                    }
+                }
             }
             if (F2HFClnOrHFCl2Values.Count > 0)
             {
@@ -1971,7 +1987,7 @@ namespace FurnaceUI.Views.Recipes
             var file = defaultAPCPID.Substring(last + 1, defaultAPCPID.Length - last - 1);
             APCPIDEditViewModel aPCPIDEditViewModel = new APCPIDEditViewModel(pix, file);
             aPCPIDEditViewModel.IsEditEnabled = false;
-            var rtn = (windowManager as WindowManager)?.ShowDialogWithTitle(aPCPIDEditViewModel,this, null, "APC PID Table");
+            var rtn = (windowManager as WindowManager)?.ShowDialogWithTitle(aPCPIDEditViewModel, this, null, "APC PID Table");
             if ((bool)rtn)
             {
                 PressPID = aPCPIDEditViewModel.RetrunString;