Commit 919a9f63 张东亮

温湿度不在范围提示

1 个父辈 43f6fe96
......@@ -238,11 +238,12 @@ namespace OnlineStore.Common
/// 湿度报警值
/// </summary>
public static string maxHumidity = "humi";
public static string minTemperature = "minTemp";
/// <summary>
/// 温度报警值
/// </summary>
public static string maxTemperature = "temp";
public static string minHumidity = "minHumi";
/// <summary>
/// urgentReel: true 表示紧急料,需要出到料串上
/// </summary>
......
......@@ -31,6 +31,21 @@ namespace OnlineStore.DeviceLibrary
public static XLRStoreBean XLRStore = null;
public static XLRStore_Config Config = 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()
{
}
......
......@@ -518,6 +518,7 @@ namespace OnlineStore.DeviceLibrary
}
protected AlarmType alarmRedLedType = AlarmType.AxisAlarm;
protected bool isHumiTemOverlimit = false;
protected void LedProcess(object sender, ElapsedEventArgs e)
{
try
......@@ -539,12 +540,12 @@ namespace OnlineStore.DeviceLibrary
{
isNeedAlarmLed = true;
}
else if (alarmType.Equals(AlarmType.None).Equals(false))
else if (alarmType.Equals(AlarmType.None).Equals(false) || isHumiTemOverlimit)
{
yellowMove = true;
}
if (isNoAirpressure_Check || isInSuddenDown || alarmType >= alarmRedLedType)
if (isNoAirpressure_Check || isInSuddenDown || alarmType >= alarmRedLedType || isHumiTemOverlimit)
{
isNeedAlarmLed = true;
}
......
......@@ -1018,6 +1018,19 @@ namespace OnlineStore.DeviceLibrary
//// 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); }
finally
......
......@@ -252,14 +252,16 @@ namespace OnlineStore.DeviceLibrary
if (humitureParams != null)
{
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++)
{
boxStatus.humidity = humitureParams[i].Humidity.ToString();
boxStatus.temperature = humitureParams[i].Temperate.ToString();
Dictionary<string, string> vals = new Dictionary<string, string>();
vals.Add("id", (i + 1).ToString());
vals.Add("humidity", humitureParams[i].Humidity.ToString());
vals.Add("temperature", humitureParams[i].Temperate.ToString());
Dictionary<string, string> vals = new Dictionary<string, string>
{
{ "id", (i + 1).ToString() },
{ "humidity", humitureParams[i].Humidity.ToString() },
{ "temperature", humitureParams[i].Temperate.ToString() }
};
valuePairs.Add(vals);
}
boxStatus.data.Add(ParamDefine.humiAndtempList, JsonHelper.SerializeObject(valuePairs));
......
......@@ -11,19 +11,19 @@ namespace OnlineStore.DeviceLibrary
private string Name = "";
public static List<HumitureParam> LastData = new List<HumitureParam>();
static List<HumitureBean> humitureBeans = new List<HumitureBean>();
internal HumitureBean(string port,string deviceName)
internal HumitureBean(string port, string deviceName)
{
this.Name = deviceName;
this.PortName = port;
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++)
{
humitureBeans.Add(new HumitureBean(ports[i], deviceName + (i + 1)));
HumitureParam param = new HumitureParam(0, 0, 100);
param.DeviceAddress= ports[i];
param.DeviceAddress = ports[i];
LastData.Add(param);
}
}
......@@ -34,23 +34,23 @@ namespace OnlineStore.DeviceLibrary
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));
if(find!=null)
var find = LastData.Find(s => port.Equals(s.DeviceAddress));
if (find != null)
{
find.Temperate= param.Temperate;
find.UpdateTime= param.UpdateTime;
find.Humidity= param.Humidity;
find.OxygenV= param.OxygenV;
find.Temperate = param.Temperate;
find.UpdateTime = param.UpdateTime;
find.Humidity = param.Humidity;
find.OxygenV = param.OxygenV;
}
}
public static double GetMinOxygenV()
{
double maxV=0.0;
double maxV = 0.0;
foreach (var item in humitureBeans)
{
double val= item.QueryData().OxygenV;
double val = item.QueryData().OxygenV;
if (val > maxV)
{
maxV = val;
......@@ -78,17 +78,36 @@ namespace OnlineStore.DeviceLibrary
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 温湿度处理
/// <summary>
/// 湿度标准,超过后需要报警
/// </summary>
static float Max_Humidity = 0;
public static float Max_Humidity = 0;
/// <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 DateTime LastBeginBlowTime = DateTime.Now;
private static DateTime LastEndBlowTime = new DateTime(1997, 1, 1);
......@@ -106,32 +125,32 @@ namespace OnlineStore.DeviceLibrary
double curMinTemp = double.MaxValue;
foreach (var item in humitureBeans)
{
HumitureParam param=item.QueryData();
if(param.Humidity>curMaxHumidity)
HumitureParam param = item.QueryData();
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()
{
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))
{
IOManager.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.HIGH,1);
IOManager.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.HIGH, 1);
return;
}
try
{
if ((DateTime.Now - preLogTime).TotalSeconds > (8+box.DeviceID))
if ((DateTime.Now - preLogTime).TotalSeconds > (8 + box.DeviceID))
{
preLogTime = DateTime.Now;
//用最大的湿度判断是否需要吹气,开始吹气的值=发过来的值-4
......@@ -141,7 +160,7 @@ namespace OnlineStore.DeviceLibrary
float startBlowHumidity = Max_Humidity - StartBlowValue;
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))
{
......
......@@ -117,7 +117,7 @@ namespace OnlineStore.DeviceLibrary
// else
// data[0] += humidityadjust;
//}
data[0] = ProcessHumity(data[0]);
data[0] = ProcessHumity(port,data[0]);
//double tempadjust = (double)ConfigAppSettings.GetNumValue(Setting_Init.Device_TemptureAdjust);
//double templimited = (double)ConfigAppSettings.GetNumValue(Setting_Init.Device_TemptureLimited);
//if (tempadjust != 0 && templimited != 0)
......@@ -174,7 +174,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
/// <param name="nowHumity"></param>
/// <returns></returns>
private static double ProcessHumity(double nowHumity)
private static double ProcessHumity(string port,double nowHumity)
{
double temp = nowHumity;
double minVal = ConfigHelper.Config.Get("HumidityThreshold_Min", 5);
......@@ -189,7 +189,12 @@ namespace OnlineStore.DeviceLibrary
{
temp = (nowHumity - minVal) * coefVal + minVal;
}
else
{
var calib = ConfigHelper.Config.Get($"HumidityCalib_{port}", 0);
nowHumity += calib;
return nowHumity;
}
return Math.Round(temp, 1);
}
/// <summary>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!