Commit 919a9f63 张东亮

温湿度不在范围提示

1 个父辈 43f6fe96
...@@ -238,11 +238,12 @@ namespace OnlineStore.Common ...@@ -238,11 +238,12 @@ namespace OnlineStore.Common
/// 湿度报警值 /// 湿度报警值
/// </summary> /// </summary>
public static string maxHumidity = "humi"; public static string maxHumidity = "humi";
public static string minTemperature = "minTemp";
/// <summary> /// <summary>
/// 温度报警值 /// 温度报警值
/// </summary> /// </summary>
public static string maxTemperature = "temp"; public static string maxTemperature = "temp";
public static string minHumidity = "minHumi";
/// <summary> /// <summary>
/// urgentReel: true 表示紧急料,需要出到料串上 /// urgentReel: true 表示紧急料,需要出到料串上
/// </summary> /// </summary>
......
...@@ -31,6 +31,21 @@ namespace OnlineStore.DeviceLibrary ...@@ -31,6 +31,21 @@ namespace OnlineStore.DeviceLibrary
public static XLRStoreBean XLRStore = null; public static XLRStoreBean XLRStore = null;
public static XLRStore_Config Config = null; public static XLRStore_Config Config = null;
public static Dictionary<int, DeviceConfig> allConfigMap = null; public static Dictionary<int, DeviceConfig> allConfigMap = null;
public static double averageHumidity()
{
var ss = HumitureBean.GetHumitureParams().FindAll(s => s.Humidity > 0);
if (ss != null && ss.Count > 0)
return ss.Average(x => x.Humidity);
return 0;
}
public static double averageTemp()
{
var ss = HumitureBean.GetHumitureParams().FindAll(s => s.Temperate > 0);
if (ss != null && ss.Count > 0)
return ss.Average(x => x.Temperate);
return 0;
}
public StoreManager() public StoreManager()
{ {
} }
......
...@@ -518,6 +518,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -518,6 +518,7 @@ namespace OnlineStore.DeviceLibrary
} }
protected AlarmType alarmRedLedType = AlarmType.AxisAlarm; protected AlarmType alarmRedLedType = AlarmType.AxisAlarm;
protected bool isHumiTemOverlimit = false;
protected void LedProcess(object sender, ElapsedEventArgs e) protected void LedProcess(object sender, ElapsedEventArgs e)
{ {
try try
...@@ -539,12 +540,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -539,12 +540,12 @@ namespace OnlineStore.DeviceLibrary
{ {
isNeedAlarmLed = true; isNeedAlarmLed = true;
} }
else if (alarmType.Equals(AlarmType.None).Equals(false)) else if (alarmType.Equals(AlarmType.None).Equals(false) || isHumiTemOverlimit)
{ {
yellowMove = true; yellowMove = true;
} }
if (isNoAirpressure_Check || isInSuddenDown || alarmType >= alarmRedLedType) if (isNoAirpressure_Check || isInSuddenDown || alarmType >= alarmRedLedType || isHumiTemOverlimit)
{ {
isNeedAlarmLed = true; isNeedAlarmLed = true;
} }
......
...@@ -1018,6 +1018,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -1018,6 +1018,19 @@ namespace OnlineStore.DeviceLibrary
//// Msg.add(input.WarnMsg, MsgLevel.warning); //// Msg.add(input.WarnMsg, MsgLevel.warning);
////} ////}
} }
if (StoreManager.averageHumidity() > HumitureBean.Max_Humidity
|| StoreManager.averageHumidity() < HumitureBean.Min_Humidity
|| StoreManager.averageTemp() > HumitureBean.Max_Temperature
|| StoreManager.averageTemp() < HumitureBean.Min_Temperature)
{
isHumiTemOverlimit = true;
Msg.add($"温湿度超出范围,当前温度:{StoreManager.averageTemp()},范围:{HumitureBean.Min_Temperature}~{HumitureBean.Max_Temperature}," +
$"当前湿度:{StoreManager.averageHumidity()},范围:{HumitureBean.Min_Humidity}~{HumitureBean.Max_Humidity}", MsgLevel.warning);
}
else
{
isHumiTemOverlimit = false;
}
} }
catch (Exception ex) { LogUtil.error("boxequip BaseTimerProcess", ex); } catch (Exception ex) { LogUtil.error("boxequip BaseTimerProcess", ex); }
finally finally
......
...@@ -252,14 +252,16 @@ namespace OnlineStore.DeviceLibrary ...@@ -252,14 +252,16 @@ namespace OnlineStore.DeviceLibrary
if (humitureParams != null) if (humitureParams != null)
{ {
List<Dictionary<string, string>> valuePairs = new List<Dictionary<string, string>>(); List<Dictionary<string, string>> valuePairs = new List<Dictionary<string, string>>();
boxStatus.humidity = StoreManager.averageHumidity().ToString();
boxStatus.temperature = StoreManager.averageTemp().ToString();
for (int i = 0; i < humitureParams.Count; i++) for (int i = 0; i < humitureParams.Count; i++)
{ {
boxStatus.humidity = humitureParams[i].Humidity.ToString(); Dictionary<string, string> vals = new Dictionary<string, string>
boxStatus.temperature = humitureParams[i].Temperate.ToString(); {
Dictionary<string, string> vals = new Dictionary<string, string>(); { "id", (i + 1).ToString() },
vals.Add("id", (i + 1).ToString()); { "humidity", humitureParams[i].Humidity.ToString() },
vals.Add("humidity", humitureParams[i].Humidity.ToString()); { "temperature", humitureParams[i].Temperate.ToString() }
vals.Add("temperature", humitureParams[i].Temperate.ToString()); };
valuePairs.Add(vals); valuePairs.Add(vals);
} }
boxStatus.data.Add(ParamDefine.humiAndtempList, JsonHelper.SerializeObject(valuePairs)); boxStatus.data.Add(ParamDefine.humiAndtempList, JsonHelper.SerializeObject(valuePairs));
......
...@@ -11,19 +11,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -11,19 +11,19 @@ namespace OnlineStore.DeviceLibrary
private string Name = ""; private string Name = "";
public static List<HumitureParam> LastData = new List<HumitureParam>(); public static List<HumitureParam> LastData = new List<HumitureParam>();
static List<HumitureBean> humitureBeans = new List<HumitureBean>(); static List<HumitureBean> humitureBeans = new List<HumitureBean>();
internal HumitureBean(string port,string deviceName) internal HumitureBean(string port, string deviceName)
{ {
this.Name = deviceName; this.Name = deviceName;
this.PortName = port; this.PortName = port;
HumitureController.Init(this.PortName); HumitureController.Init(this.PortName);
} }
public static void LoadHumitures(string[] ports,string deviceName) public static void LoadHumitures(string[] ports, string deviceName)
{ {
for (int i = 0; i < ports.Length; i++) for (int i = 0; i < ports.Length; i++)
{ {
humitureBeans.Add(new HumitureBean(ports[i], deviceName + (i + 1))); humitureBeans.Add(new HumitureBean(ports[i], deviceName + (i + 1)));
HumitureParam param = new HumitureParam(0, 0, 100); HumitureParam param = new HumitureParam(0, 0, 100);
param.DeviceAddress= ports[i]; param.DeviceAddress = ports[i];
LastData.Add(param); LastData.Add(param);
} }
} }
...@@ -34,23 +34,23 @@ namespace OnlineStore.DeviceLibrary ...@@ -34,23 +34,23 @@ namespace OnlineStore.DeviceLibrary
return param; return param;
} }
static void updateData(string port,HumitureParam param) static void updateData(string port, HumitureParam param)
{ {
var find=LastData.Find(s => port.Equals(s.DeviceAddress)); var find = LastData.Find(s => port.Equals(s.DeviceAddress));
if(find!=null) if (find != null)
{ {
find.Temperate= param.Temperate; find.Temperate = param.Temperate;
find.UpdateTime= param.UpdateTime; find.UpdateTime = param.UpdateTime;
find.Humidity= param.Humidity; find.Humidity = param.Humidity;
find.OxygenV= param.OxygenV; find.OxygenV = param.OxygenV;
} }
} }
public static double GetMinOxygenV() public static double GetMinOxygenV()
{ {
double maxV=0.0; double maxV = 0.0;
foreach (var item in humitureBeans) foreach (var item in humitureBeans)
{ {
double val= item.QueryData().OxygenV; double val = item.QueryData().OxygenV;
if (val > maxV) if (val > maxV)
{ {
maxV = val; maxV = val;
...@@ -78,17 +78,36 @@ namespace OnlineStore.DeviceLibrary ...@@ -78,17 +78,36 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("转换温湿度失败:" + ex.ToString()); LogUtil.error("转换温湿度失败:" + ex.ToString());
} }
} }
if (data != null && data.ContainsKey(ParamDefine.minHumidity) && data.ContainsKey(ParamDefine.minTemperature))
{
string maxHumidity = data[ParamDefine.minHumidity];
string maxTemp = data[ParamDefine.minTemperature];
LogUtil.info("收到服务器温湿度预警值:minHumidity=" + maxHumidity + ",minTemperature=" + maxTemp);
try
{
Min_Humidity = (float)Convert.ToDouble(maxHumidity);
Min_Temperature = (float)Convert.ToDouble(maxTemp);
LogUtil.info("保存温湿度预警值:Min_Humidity=" + Min_Humidity + ",Min_Temperature=" + Min_Temperature);
}
catch (Exception ex)
{
LogUtil.error("转换温湿度失败:" + ex.ToString());
}
}
} }
#region 温湿度处理 #region 温湿度处理
/// <summary> /// <summary>
/// 湿度标准,超过后需要报警 /// 湿度标准,超过后需要报警
/// </summary> /// </summary>
static float Max_Humidity = 0; public static float Max_Humidity = 0;
/// <summary> /// <summary>
/// 温度标准,超过后需要报警 /// 温度标准,超过后需要报警
/// </summary> /// </summary>
static float Max_Temperature = 0; public static float Max_Temperature = 0;
public static float Min_Humidity = 0;
public static float Min_Temperature = 0;
private static bool IsInBlowing = false; private static bool IsInBlowing = false;
private static DateTime LastBeginBlowTime = DateTime.Now; private static DateTime LastBeginBlowTime = DateTime.Now;
private static DateTime LastEndBlowTime = new DateTime(1997, 1, 1); private static DateTime LastEndBlowTime = new DateTime(1997, 1, 1);
...@@ -106,32 +125,32 @@ namespace OnlineStore.DeviceLibrary ...@@ -106,32 +125,32 @@ namespace OnlineStore.DeviceLibrary
double curMinTemp = double.MaxValue; double curMinTemp = double.MaxValue;
foreach (var item in humitureBeans) foreach (var item in humitureBeans)
{ {
HumitureParam param=item.QueryData(); HumitureParam param = item.QueryData();
if(param.Humidity>curMaxHumidity) if (param.Humidity > curMaxHumidity)
{ {
curMaxHumidity=param.Humidity; curMaxHumidity = param.Humidity;
} }
if(param.Temperate<curMinTemp) if (param.Temperate < curMinTemp)
{ {
curMinTemp=param.Temperate; curMinTemp = param.Temperate;
} }
} }
HumidityProcess(box,curMaxHumidity,curMinTemp); HumidityProcess(box, curMaxHumidity, curMinTemp);
} }
public static List<HumitureParam> GetHumitureParams() public static List<HumitureParam> GetHumitureParams()
{ {
return LastData; return LastData;
} }
internal static void HumidityProcess(BoxEquip box, double currMaxHumidity,double curMinTemp) internal static void HumidityProcess(BoxEquip box, double currMaxHumidity, double curMinTemp)
{ {
if (IOManager.IOValue(IO_Type.Air_OpenValve, 1).Equals(IO_VALUE.HIGH) || IOManager.IOValue(IO_Type.LeftDoor_Limit, 2).Equals(IO_VALUE.LOW) || IOManager.IOValue(IO_Type.RightDoor_Limit, 2).Equals(IO_VALUE.LOW) || IOManager.IOValue(IO_Type.BackDoor_Limit, 2).Equals(IO_VALUE.LOW)) if (IOManager.IOValue(IO_Type.Air_OpenValve, 1).Equals(IO_VALUE.HIGH) || IOManager.IOValue(IO_Type.LeftDoor_Limit, 2).Equals(IO_VALUE.LOW) || IOManager.IOValue(IO_Type.RightDoor_Limit, 2).Equals(IO_VALUE.LOW) || IOManager.IOValue(IO_Type.BackDoor_Limit, 2).Equals(IO_VALUE.LOW))
{ {
IOManager.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.HIGH,1); IOManager.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.HIGH, 1);
return; return;
} }
try try
{ {
if ((DateTime.Now - preLogTime).TotalSeconds > (8+box.DeviceID)) if ((DateTime.Now - preLogTime).TotalSeconds > (8 + box.DeviceID))
{ {
preLogTime = DateTime.Now; preLogTime = DateTime.Now;
//用最大的湿度判断是否需要吹气,开始吹气的值=发过来的值-4 //用最大的湿度判断是否需要吹气,开始吹气的值=发过来的值-4
...@@ -141,7 +160,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -141,7 +160,7 @@ namespace OnlineStore.DeviceLibrary
float startBlowHumidity = Max_Humidity - StartBlowValue; float startBlowHumidity = Max_Humidity - StartBlowValue;
float stopBlowHumidity = Max_Humidity - StopBlowValue; float stopBlowHumidity = Max_Humidity - StopBlowValue;
IsInBlowing= IOManager.DOValue(IO_Type.Nitrogen_OpenValve,1).Equals(IO_VALUE.LOW); IsInBlowing = IOManager.DOValue(IO_Type.Nitrogen_OpenValve, 1).Equals(IO_VALUE.LOW);
//判断是否需要吹气 //判断是否需要吹气
if (startBlowHumidity > 0 && startBlowHumidity < currMaxHumidity && IsInBlowing.Equals(false)) if (startBlowHumidity > 0 && startBlowHumidity < currMaxHumidity && IsInBlowing.Equals(false))
{ {
......
...@@ -117,7 +117,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -117,7 +117,7 @@ namespace OnlineStore.DeviceLibrary
// else // else
// data[0] += humidityadjust; // data[0] += humidityadjust;
//} //}
data[0] = ProcessHumity(data[0]); data[0] = ProcessHumity(port,data[0]);
//double tempadjust = (double)ConfigAppSettings.GetNumValue(Setting_Init.Device_TemptureAdjust); //double tempadjust = (double)ConfigAppSettings.GetNumValue(Setting_Init.Device_TemptureAdjust);
//double templimited = (double)ConfigAppSettings.GetNumValue(Setting_Init.Device_TemptureLimited); //double templimited = (double)ConfigAppSettings.GetNumValue(Setting_Init.Device_TemptureLimited);
//if (tempadjust != 0 && templimited != 0) //if (tempadjust != 0 && templimited != 0)
...@@ -174,7 +174,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -174,7 +174,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary> /// </summary>
/// <param name="nowHumity"></param> /// <param name="nowHumity"></param>
/// <returns></returns> /// <returns></returns>
private static double ProcessHumity(double nowHumity) private static double ProcessHumity(string port,double nowHumity)
{ {
double temp = nowHumity; double temp = nowHumity;
double minVal = ConfigHelper.Config.Get("HumidityThreshold_Min", 5); double minVal = ConfigHelper.Config.Get("HumidityThreshold_Min", 5);
...@@ -189,7 +189,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -189,7 +189,12 @@ namespace OnlineStore.DeviceLibrary
{ {
temp = (nowHumity - minVal) * coefVal + minVal; temp = (nowHumity - minVal) * coefVal + minVal;
} }
else
{
var calib = ConfigHelper.Config.Get($"HumidityCalib_{port}", 0);
nowHumity += calib;
return nowHumity;
}
return Math.Round(temp, 1); return Math.Round(temp, 1);
} }
/// <summary> /// <summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!