Browse Source

revise reservoir holdofftime monitor bug

chenzk 2 weeks ago
parent
commit
2819cb58db

+ 4 - 4
CyberX8_RT/Devices/Reservoir/StandardHotReservoirDevice.cs

@@ -227,9 +227,9 @@ namespace CyberX8_RT.Devices.Reservoir
         /// </summary>
         private double _cellFlowHoldoffTime;
         /// <summary>
-        /// holdoff监控
+        /// holdofftimeMonitor字典;key:Moudle_item,value :HoldoffTimeSignalMonitor对象
         /// </summary>
-        private HoldoffTimeSignalMonitor _cellFlowHoldoffTimeSignalMonitor;
+        private Dictionary<string, HoldoffTimeSignalMonitor> _holdoffTimeSignalDic = new Dictionary<string, HoldoffTimeSignalMonitor>();
         #endregion
 
         #region 属性
@@ -314,7 +314,6 @@ namespace CyberX8_RT.Devices.Reservoir
             _LevelSamples = new Queue<double>(levelSampleCount);
 
             _cellFlowHoldoffTime = SC.GetValue<double>($"Metal.CellFlowAlarmHoldoffTime");
-            _cellFlowHoldoffTimeSignalMonitor = new HoldoffTimeSignalMonitor(Module, "CellFLow");
 
             _periodicJob = new PeriodicJob(100, OnTimer, $"{Module}.OnTimer", true);
             ResPowerOn();//保持继电器常开
@@ -716,6 +715,7 @@ namespace CyberX8_RT.Devices.Reservoir
                         if (metalDevice != null)
                         {
                             _metalDevices.Add(metalDevice);
+                            _holdoffTimeSignalDic.Add($"{item.ModuleName}_CellFlow", new HoldoffTimeSignalMonitor(item.ModuleName, "CellFlow"));
                         }
                     }
                 }
@@ -1508,7 +1508,7 @@ namespace CyberX8_RT.Devices.Reservoir
                     //        metalEntity.PostMsg(MetalMsg.Error);
                     //    }
                     //}
-                    bool cellFlowSignalresulte = _cellFlowHoldoffTimeSignalMonitor.IsSignalAbnormal(_cellFlowHoldoffTime, cellFlow, null, _resRecipe.CAFlowRateErrorLow);
+                    bool cellFlowSignalresulte = _holdoffTimeSignalDic[$"{hotMetalDevice.Name}_CellFlow"].IsSignalAbnormal(_cellFlowHoldoffTime, cellFlow, null, _resRecipe.CAFlowRateErrorLow);
                     if (cellFlowSignalresulte)
                     {
                         if (!metalEntity.IsError)

+ 1 - 1
CyberX8_RT/Modules/HoldoffTimeSignalMonitor.cs

@@ -62,7 +62,7 @@ namespace CyberX8_RT.Modules
             }
             if((DateTime.Now - _abnormalStartTime).TotalSeconds > holdoffTime && _isInAbnormalState)//异常时间超过holdofftime
             {
-                _isInAbnormalState = false;//报错前把状态清掉,防止人工处理正常后该值一直为true
+                //_isInAbnormalState = false;//报错前把状态清掉,防止人工处理正常后该值一直为true
                 return true;
             }
             return false;