Commit 42bd8880 张东亮

温湿度处理逻辑和入库验证

1 个父辈 ea96d462
...@@ -280,7 +280,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -280,7 +280,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(logName + "服务器反馈 :" + resultOperation.msg); LogUtil.info(logName + "服务器反馈 :" + resultOperation.msg);
continue; continue;
} }
else if (resultOperation.op.Equals(1)) else if (resultOperation.op.Equals(1)&&operation.seq.Equals(resultOperation.seq))
{ {
LogUtil.info(logName + " 成功" + $"【{JsonHelper.SerializeObject(resultOperation)}】"); LogUtil.info(logName + " 成功" + $"【{JsonHelper.SerializeObject(resultOperation)}】");
return true; return true;
......
...@@ -13,7 +13,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -13,7 +13,7 @@ namespace OnlineStore.DeviceLibrary
{ {
private string PortName = ""; private string PortName = "";
private string Name = ""; private string Name = "";
public HumitureParam LastData = new HumitureParam(0, 0,0); 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)
{ {
...@@ -26,15 +26,29 @@ namespace OnlineStore.DeviceLibrary ...@@ -26,15 +26,29 @@ namespace OnlineStore.DeviceLibrary
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);
param.DeviceAddress= ports[i];
LastData.Add(param);
} }
} }
public HumitureParam QueryData() public HumitureParam QueryData()
{ {
HumitureParam param = HumitureController.QueryData(PortName); HumitureParam param = HumitureController.QueryData(PortName);
LastData = param; updateData(PortName, param);
return LastData; return param;
} }
static void updateData(string port,HumitureParam param)
{
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;
}
}
public static double GetMinOxygenV() public static double GetMinOxygenV()
{ {
double maxV=0.0; double maxV=0.0;
...@@ -79,34 +93,40 @@ namespace OnlineStore.DeviceLibrary ...@@ -79,34 +93,40 @@ namespace OnlineStore.DeviceLibrary
/// 温度标准,超过后需要报警 /// 温度标准,超过后需要报警
/// </summary> /// </summary>
static float Max_Temperature = 0; static float Max_Temperature = 0;
private bool IsInBlowing = false; private static bool IsInBlowing = false;
private DateTime LastBeginBlowTime = DateTime.Now; private static DateTime LastBeginBlowTime = DateTime.Now;
private DateTime LastEndBlowTime = new DateTime(1997, 1, 1); private static DateTime LastEndBlowTime = new DateTime(1997, 1, 1);
private DateTime preLogTime = DateTime.Now; static DateTime preLogTime = DateTime.Now;
public bool TempOrHumidityIsAlarm = false; public static bool TempOrHumidityIsAlarm = false;
public DateTime TempAlarmTime = DateTime.Now; public static DateTime TempAlarmTime = DateTime.Now;
private float StartBlowValue = (float)ConfigAppSettings.GetNumValue(Setting_Init.StartBlowValue); private static float StartBlowValue = (float)ConfigAppSettings.GetNumValue(Setting_Init.StartBlowValue);
private float StopBlowValue = (float)ConfigAppSettings.GetNumValue(Setting_Init.StopBlowValue); private static float StopBlowValue = (float)ConfigAppSettings.GetNumValue(Setting_Init.StopBlowValue);
public string currTempStr = ""; public static string currTempStr = "";
public static void ProcessAllHumidity(BoxEquip box) public static void ProcessAllHumidity(BoxEquip box)
{ {
double curMaxHumidity = double.MinValue;
double curMinTemp = double.MaxValue;
foreach (var item in humitureBeans) foreach (var item in humitureBeans)
{ {
item.HumidityProcess(box); HumitureParam param=item.QueryData();
if(param.Humidity>curMaxHumidity)
{
curMaxHumidity=param.Humidity;
}
if(param.Temperate<curMinTemp)
{
curMinTemp=param.Temperate;
}
} }
HumidityProcess(box,curMaxHumidity,curMinTemp);
} }
public static List<HumitureParam> GetHumitureParams() public static List<HumitureParam> GetHumitureParams()
{ {
List<HumitureParam> humitureParams = new List<HumitureParam>(); return LastData;
foreach (var item in humitureBeans)
{
humitureParams.Add(item.LastData);
}
return humitureParams;
} }
internal void HumidityProcess(BoxEquip box) 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))
{ {
...@@ -121,17 +141,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -121,17 +141,7 @@ namespace OnlineStore.DeviceLibrary
//用最大的湿度判断是否需要吹气,开始吹气的值=发过来的值-4 //用最大的湿度判断是否需要吹气,开始吹气的值=发过来的值-4
//温湿度 //温湿度
//ASTemperateParam param = HumitureServer.GetTemperateParam(Config.GetTempAddrList()); //ASTemperateParam param = HumitureServer.GetTemperateParam(Config.GetTempAddrList());
HumitureParam param = QueryData(); //HumitureParam param = QueryData();
double humidity = 0;
double temp = 0;
if (param != null)
{
humidity = param.Humidity;
temp = param.Temperate;
currTempStr = Name + ("湿度:" + humidity.ToString() + ",温度:" + temp);
}
//double currMaxHumidity = HumitureServer.GetMaxHumidity(Config.GetTempAddrList());
double currMaxHumidity = param.Humidity;
float startBlowHumidity = Max_Humidity - StartBlowValue; float startBlowHumidity = Max_Humidity - StartBlowValue;
float stopBlowHumidity = Max_Humidity - StopBlowValue; float stopBlowHumidity = Max_Humidity - StopBlowValue;
...@@ -143,7 +153,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -143,7 +153,7 @@ namespace OnlineStore.DeviceLibrary
TimeSpan span = DateTime.Now - LastEndBlowTime; TimeSpan span = DateTime.Now - LastEndBlowTime;
if (span.TotalMinutes > box.Config.BlowAir_Interval) if (span.TotalMinutes > box.Config.BlowAir_Interval)
{ {
LogUtil.info(Name + "当前最大湿度:" + currMaxHumidity.ToString() + ",开始吹气湿度:" + startBlowHumidity + ",当前不在吹气中,且间隔超过" + box.Config.BlowAir_Interval + "分钟,开始吹气!"); LogUtil.info("当前最大湿度:" + currMaxHumidity.ToString() + ",开始吹气湿度:" + startBlowHumidity + ",当前不在吹气中,且间隔超过" + box.Config.BlowAir_Interval + "分钟,开始吹气!");
IsInBlowing = true; IsInBlowing = true;
//Thread.Sleep(100); //Thread.Sleep(100);
StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.HIGH); StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.HIGH);
...@@ -154,7 +164,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -154,7 +164,7 @@ namespace OnlineStore.DeviceLibrary
if (IsInBlowing && stopBlowHumidity > currMaxHumidity) if (IsInBlowing && stopBlowHumidity > currMaxHumidity)
{ {
LogUtil.info(Name + "当前最大湿度:" + currMaxHumidity.ToString() + ",停止吹气湿度:" + stopBlowHumidity + ",停止吹气!"); LogUtil.info("当前最大湿度:" + currMaxHumidity.ToString() + ",停止吹气湿度:" + stopBlowHumidity + ",停止吹气!");
IsInBlowing = false; IsInBlowing = false;
StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.LOW); StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.LOW);
LastEndBlowTime = DateTime.Now; LastEndBlowTime = DateTime.Now;
...@@ -165,7 +175,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -165,7 +175,7 @@ namespace OnlineStore.DeviceLibrary
TimeSpan span = DateTime.Now - LastBeginBlowTime; TimeSpan span = DateTime.Now - LastBeginBlowTime;
if (span.TotalMinutes > box.Config.BlowAir_Time) if (span.TotalMinutes > box.Config.BlowAir_Time)
{ {
LogUtil.info(Name + "已经吹气" + span.TotalMinutes + "分钟,超过配置的吹气时间" + box.Config.BlowAir_Time + "分钟,停止吹气!"); LogUtil.info("已经吹气" + span.TotalMinutes + "分钟,超过配置的吹气时间" + box.Config.BlowAir_Time + "分钟,停止吹气!");
IsInBlowing = false; IsInBlowing = false;
//Thread.Sleep(100); //Thread.Sleep(100);
StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.LOW); StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.LOW);
...@@ -174,23 +184,23 @@ namespace OnlineStore.DeviceLibrary ...@@ -174,23 +184,23 @@ namespace OnlineStore.DeviceLibrary
} }
bool needAlarm = false; bool needAlarm = false;
//如果开始吹气并且当前达到报警值 //如果开始吹气并且当前达到报警值
if (IsInBlowing && humidity > Max_Humidity) if (IsInBlowing && currMaxHumidity > Max_Humidity)
{ {
needAlarm = true; needAlarm = true;
} }
else if (temp > Max_Temperature && Max_Temperature > 0) else if (curMinTemp > Max_Temperature && Max_Temperature > 0)
{ {
LogUtil.info(Name + "当前温度【" + param.Temperate + "】超过最高温度【" + Max_Temperature + "】,开始报警!"); LogUtil.info("当前温度【" + curMinTemp + "】超过最高温度【" + Max_Temperature + "】,开始报警!");
needAlarm = true; needAlarm = true;
//Thread.Sleep(100); //Thread.Sleep(100);
StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.LOW); StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.LOW);
} }
else if (temp < Max_Temperature) else if (curMinTemp < Max_Temperature)
{ {
if (IsInBlowing.Equals(false) && TempOrHumidityIsAlarm) if (IsInBlowing.Equals(false) && TempOrHumidityIsAlarm)
{ {
LogUtil.info(Name + "不在吹气中,且当前温度【" + param.Temperate + "】低于【" + Max_Temperature + "】,关闭报警!"); LogUtil.info("不在吹气中,且当前温度【" + curMinTemp + "】低于【" + Max_Temperature + "】,关闭报警!");
TempOrHumidityIsAlarm = false; TempOrHumidityIsAlarm = false;
//Thread.Sleep(100); //Thread.Sleep(100);
StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.LOW); StoreManager.XLRStore.IOMove(IO_Type.Nitrogen_OpenValve, IO_VALUE.LOW);
...@@ -208,10 +218,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -208,10 +218,10 @@ namespace OnlineStore.DeviceLibrary
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error(Name + "HumidityProcess出错:" + ex.ToString()); LogUtil.error("HumidityProcess出错:" + ex.ToString());
} }
} }
private void HTAlarm() static void HTAlarm()
{ {
if (TempOrHumidityIsAlarm) if (TempOrHumidityIsAlarm)
{ {
......
...@@ -101,7 +101,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -101,7 +101,7 @@ namespace OnlineStore.DeviceLibrary
// public static ASTemperateParam LastData = new ASTemperateParam(0, 0); // public static ASTemperateParam LastData = new ASTemperateParam(0, 0);
public static HumitureParam QueryData(string port) public static HumitureParam QueryData(string port)
{ {
HumitureParam param = new HumitureParam(0, 0,0); HumitureParam param = new HumitureParam(0, 0,100);
param.DeviceAddress = port; param.DeviceAddress = port;
List<double> data = queryData(port ); List<double> data = queryData(port );
if (data.Count.Equals(3)) if (data.Count.Equals(3))
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!