Browse Source

add reservoir Initialize error log

chenzk 3 weeks ago
parent
commit
a631c1fcf0

+ 2 - 2
CyberX8_RT/Config/Devices/ThorntonCfg.xml

@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <ThorntonConfig>
-  <!--<ThorntonDeviceConfig Name="RP1" Port="com18" BaudRate="19200" Parity="N" Data="8" StopBit="1">
+  <ThorntonDeviceConfig Name="RP1" Port="com18" BaudRate="19200" Parity="N" Data="8" StopBit="1">
     <Device Name="RP1-1" Address="1"/>
     <Device Name="RP1-2" Address="3"/>
     <Device Name="RP1-3" Address="5"/>
     <Device Name="RP1-4" Address="7"/>
-  </ThorntonDeviceConfig>-->
+  </ThorntonDeviceConfig>
    <ThorntonDeviceConfig Name="RP2" Port="com19" BaudRate="19200" Parity="N" Data="8" StopBit="1">
     <Device Name="RP2-1" Address="1"/>
   </ThorntonDeviceConfig>

+ 2 - 1
CyberX8_RT/Devices/Reservoir/StandardHotReservoirDevice.cs

@@ -306,6 +306,7 @@ namespace CyberX8_RT.Devices.Reservoir
             _LevelSamples = new Queue<double>(levelSampleCount);
             _periodicJob = new PeriodicJob(100, OnTimer, $"{Module}.OnTimer", true);
             ResPowerOn();//保持继电器常开
+            ClearErrorLogSet(Module.ToString());//软件启动的时候也清一下ErrorLogSet
         }
         /// <summary>
         /// 定时器
@@ -754,7 +755,7 @@ namespace CyberX8_RT.Devices.Reservoir
                 _regulatePumpSpeed = speed;
                 if (_regulatePumpSpeed > MaxPumpSpeed)
                 {
-                    _regulatePumpSpeed = SC.GetValue<double>("Reservoir.DefaultPumpSpeed");//恢复成默认泵速
+                    _regulatePumpSpeed = MaxPumpSpeed;//设置成最大泵速
                     LOG.WriteLog(eEvent.WARN_METAL, Module, $"Pump speed:{_regulatePumpSpeed} is over max pump speed {MaxPumpSpeed}!");
                     return false;
                 }

+ 35 - 0
CyberX8_RT/Modules/Reservoir/StandardHotReservoirInitializeRoutine.cs

@@ -15,6 +15,7 @@ using CyberX8_RT.Devices.PowerSupplier;
 using CyberX8_RT.Devices.Reservoir;
 using CyberX8_RT.Devices.Temperature;
 using MECF.Framework.Common.ToolLayout;
+using Aitex.Core.Util;
 
 namespace CyberX8_RT.Modules.Reservoir
 {
@@ -699,6 +700,40 @@ namespace CyberX8_RT.Modules.Reservoir
                 LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, "Temperature is not connected");
                 return false;
             }
+            WaterLevelMonitor();
+            return true;
+        }
+        /// <summary>
+        /// WaterLevelMonitor
+        /// </summary>
+        private bool WaterLevelMonitor()
+        {
+            ReservoirEntity reservoirEntity = Singleton<RouteManager>.Instance.GetModule<ReservoirEntity>(Module);
+            //触发水位过高或者过低将reservoir切成error
+            if (_reservoirDevice.ReservoirData.WaterLevel < SC.GetValue<double>($"Reservoir.{Module}.LowLevel"))
+            {
+                
+                LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, $"WaterLevel low is Activate");
+                return false;
+            }
+            else if (_reservoirDevice.ReservoirData.WaterLevel > SC.GetValue<double>($"Reservoir.{Module}.HighLevel"))
+            {
+               LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, $"WaterLevel:{_reservoirDevice.ReservoirData.WaterLevel} is larger than  HighLevel Config:{SC.GetValue<double>($"Reservoir.{Module}.HighLevel")}");
+               return false;
+            }
+            //水位触发reservoir里面的high/low将对应的reservoir切成error
+            if (_reservoirDevice.ReservoirData.Level < _recipe.CALevelErrorLow)
+            {
+                
+                LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, $"Current level:{_reservoirDevice.ReservoirData.Level} is lower than recipe's CA Errorlow paramater:{_recipe.CALevelErrorLow}");
+                return false;
+            }
+            else if (_reservoirDevice.ReservoirData.Level > _recipe.CALevelErrorHigh)
+            {
+             
+                LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, $"Current level:{_reservoirDevice.ReservoirData.Level} is larger than recipe's CA ErrorHigh paramater:{_recipe.CALevelErrorHigh}");
+                return false ;
+            }
             return true;
         }
     }

+ 12 - 1
CyberX8_Themes/Converters/AlarmTypeConverter.cs

@@ -12,7 +12,18 @@ namespace CyberX8_Themes.Converters
         public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
         {
             int var = System.Convert.ToInt32(value);
-            return var == 0 ? "Error" : "Warning";
+            if(var == 0)
+            {
+                return "Error";
+            }
+            else if(var == 1)
+            {
+                return "Warning";
+            }
+            else
+            {
+                return "DataError";
+            }
         }
 
         public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)