Commit 0030a01d 几米阳光

温湿度功能修改,增加温湿度报警显示

1 个父辈 999ff99e
......@@ -250,6 +250,10 @@ namespace OnlineStore.ACSingleStore
{
lblWarnMsg.Text = lblWarnMsg.Text + " 叉子料盘检测有料,请检查";
}
if (store.TempOrHumidityIsAlarm)
{
lblWarnMsg.Text = lblWarnMsg.Text + " 温湿度报警[" + store.TempAlarmTime.ToLongTimeString() + "]";
}
if (store.autoNext)
{
string msg = store.autoMsg;
......
......@@ -70,6 +70,8 @@
增加相机重新加载功能
增加新的温湿度代码。
20190505
温湿度功能修改,增加温湿度报警显示。
......
......@@ -35,7 +35,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 轴报警信息
/// </summary>
private Dictionary<string , AxisAlarmInfo> AxisAlarmCodeMap = new Dictionary<string , AxisAlarmInfo>();
private Dictionary<string, AxisAlarmInfo> AxisAlarmCodeMap = new Dictionary<string, AxisAlarmInfo>();
/// <summary>
/// 是否有压紧轴
......@@ -68,8 +68,8 @@ namespace OnlineStore.DeviceLibrary
this.Config = config;
this.DIList = config.StoreDIList;
this.DOList = config.StoreDOList;
Max_Humidity = config.Max_Humidity;
Max_Temperature = config.Max_Temperature;
//Max_Humidity = config.Max_Humidity;
//Max_Temperature = config.Max_Temperature;
moveAxisList = new List<ConfigMoveAxis>();
MoveAxisConfig();
List<ACStorePosition> positionList = CSVPositionReader<ACStorePosition>.getPositionList();
......@@ -89,7 +89,7 @@ namespace OnlineStore.DeviceLibrary
//初始化摄像机配置
string nameStr = ConfigAppSettings.GetValue(Setting_Init.CameraName);
string codeStr = ConfigAppSettings.GetValue(Setting_Init.CodeType);
CodeManager.LoadConfig(nameStr,codeStr);
CodeManager.LoadConfig(nameStr, codeStr);
//初始化 //连接设备
KNDManager.ConnectionKND(Config.DIODeviceNameList);
......@@ -139,13 +139,13 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
public void MoveAxisConfig()
{
AC_SA_Config.ConfigAxis( Config);
AC_SA_Config.ConfigAxis(Config);
moveAxisList = new List<ConfigMoveAxis>();
moveAxisList.Add(Config.Middle_Axis);
moveAxisList.Add(Config.UpDown_Axis);
moveAxisList.Add(Config.InOut_Axis);
this.AxisAlarmCodeMap = new Dictionary<string , AxisAlarmInfo>();
this.AxisAlarmCodeMap = new Dictionary<string, AxisAlarmInfo>();
this.AxisAlarmCodeMap.Add(Config.UpDown_Axis.GetNameStr(), new AxisAlarmInfo());
this.AxisAlarmCodeMap.Add(Config.InOut_Axis.GetNameStr(), new AxisAlarmInfo());
this.AxisAlarmCodeMap.Add(this.Config.Middle_Axis.GetNameStr(), new AxisAlarmInfo());
......@@ -255,7 +255,7 @@ namespace OnlineStore.DeviceLibrary
StoreMove.NewMove(StoreMoveType.StoreReset);
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_InOutToP1);
LogUtil.info(LOGGER, StoreName + "到待机状态,进出轴到P1,判断叉子没有料盘");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed );
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed);
ComBeforeHomeMove();
//判断叉子没有料盘
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.LOW));
......@@ -294,7 +294,7 @@ namespace OnlineStore.DeviceLibrary
StoreMove.NewMove(StoreMoveType.StoreReset);
WarnMsg = "";
if (!RunAxis(true ))
if (!RunAxis(true))
////打开四个轴
//if (!OpenAllAxis())
{
......@@ -642,7 +642,7 @@ namespace OnlineStore.DeviceLibrary
public void CloseAllAxis()
{
LogUtil.info(StoreName+"关闭刹车,关闭伺服");
LogUtil.info(StoreName + "关闭刹车,关闭伺服");
KNDIOMove(IO_Type.Axis_Brake, IO_VALUE.LOW);
foreach (ConfigMoveAxis axis in moveAxisList)
{
......@@ -718,7 +718,7 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.error(LOGGER, StoreName + "轴报警,关闭刹车,停止运动,关闭轴,打开报警灯");
KNDIOMove(IO_Type.Axis_Brake, IO_VALUE.LOW);
StopMove(true );
StopMove(true);
}
else if (alarmType == StoreAlarmType.SuddenStop)
{
......@@ -735,7 +735,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(LOGGER, StoreName + " 未检测到气压信号 ,打开刹车,停止运动,关闭轴,打开报警灯 ");
KNDIOMove(IO_Type.Axis_Brake, IO_VALUE.LOW);
StoreMove.EndMove();
StopMove(true );
StopMove(true);
storeStatus = StoreStatus.SuddenStop;
}
//if (alarmType != StoreAlarmType.IoSingleTimeOut)
......@@ -772,7 +772,7 @@ namespace OnlineStore.DeviceLibrary
TimerProcess();
ShowTimeLog("TimerProcess");
//检查运动轴报警
if (storeRunStatus > StoreRunStatus.Wait && (!isInSuddenDown)&&(!isNoAirCheck))
if (storeRunStatus > StoreRunStatus.Wait && (!isInSuddenDown) && (!isNoAirCheck))
{
ShowTimeLog("开始检测轴报警");
CheckAxisAlarm();
......@@ -937,7 +937,7 @@ namespace OnlineStore.DeviceLibrary
{
//取新的Io状态
IO_VALUE autoSingle = KNDIOValue(IO_Type.AutoRun_Signal);
if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun) .Equals( 1))
if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun).Equals(1))
{
if (autoSingle.Equals(IO_VALUE.HIGH) && lastAutoRun.Equals(IO_VALUE.LOW))
{
......@@ -1011,7 +1011,7 @@ namespace OnlineStore.DeviceLibrary
//}
}
private object safetyInProcess="";
private object safetyInProcess = "";
/// <summary>
/// 光栅处理
/// </summary>
......@@ -1100,7 +1100,7 @@ namespace OnlineStore.DeviceLibrary
isWaitScan = false;
IsScanCode = true;
LogUtil.info(StoreName + "检测到"+ height + "寸料盘,开始扫码");
LogUtil.info(StoreName + "检测到" + height + "寸料盘,开始扫码");
GetCameraCode();
}
}
......@@ -1314,7 +1314,7 @@ namespace OnlineStore.DeviceLibrary
}
else
{
if (Config.IsHasLocationCylinder>=1)
if (Config.IsHasLocationCylinder >= 1)
{
//定位气缸停止
KNDIOMove(IO_Type.LocationCylinder_Down, IO_VALUE.LOW);
......@@ -1628,7 +1628,7 @@ namespace OnlineStore.DeviceLibrary
}
double ai1Value = KNDAIManager.ConvertAI(KNDAIManager.GetAIValue(Config.AIDevice_IP, Config.AIDI3_Addr), Config.AIDI3_DefaultPosition);
double ai2Value = KNDAIManager.ConvertAI(KNDAIManager.GetAIValue(Config.AIDevice_IP, Config.AIDI4_Addr), Config.AIDI4_DefaultPosition);
double Value = Math.Round((ai1Value + ai2Value ) / 2, 1);
double Value = Math.Round((ai1Value + ai2Value) / 2, 1);
if (Value > 14)
{
result = 16;
......@@ -1639,7 +1639,7 @@ namespace OnlineStore.DeviceLibrary
}
else if (Value >= 4)
{
if (ai1Value >= 9 || ai2Value >= 9 )
if (ai1Value >= 9 || ai2Value >= 9)
{
result = 12;
}
......@@ -1672,8 +1672,8 @@ namespace OnlineStore.DeviceLibrary
private DateTime LastEndBlowTime = new DateTime(1997, 1, 1);
private DateTime preLogTime = DateTime.Now;
private bool TempOrHumidityIsAlarm = false;
private DateTime TempAlarmTime = DateTime.Now;
public bool TempOrHumidityIsAlarm = false;
public DateTime TempAlarmTime = DateTime.Now;
private float StartBlowValue = (float)ConfigAppSettings.GetNumValue(Setting_Init.StartBlowValue);
private float StopBlowValue = (float)ConfigAppSettings.GetNumValue(Setting_Init.StopBlowValue);
......@@ -1695,7 +1695,7 @@ namespace OnlineStore.DeviceLibrary
{
humidity = param.Humidity;
temp = param.Temperate;
currTempStr=("当前湿度:" + humidity.ToString()+",当前温度:"+temp);
currTempStr = ("当前湿度:" + humidity.ToString() + ",当前温度:" + temp);
}
//double currMaxHumidity = HumitureServer.GetMaxHumidity(Config.GetTempAddrList());
double currMaxHumidity = param.Humidity;
......@@ -1723,7 +1723,6 @@ namespace OnlineStore.DeviceLibrary
{
LOGGER.Info("当前最大湿度:" + currMaxHumidity.ToString() + ",停止吹气湿度:" + stopBlowHumidity + ",停止吹气!");
IsInBlowing = false;
//Thread.Sleep(100);
KNDIOMove(IO_Type.StartOrStopBlow, IO_VALUE.LOW);
LastEndBlowTime = DateTime.Now;
}
......@@ -1740,24 +1739,16 @@ namespace OnlineStore.DeviceLibrary
LastEndBlowTime = DateTime.Now;
}
}
bool needAlarm = false;
//如果开始吹气并且当前达到报警值
if (IsInBlowing.Equals(true) && humidity > Max_Humidity)
if (IsInBlowing && humidity > Max_Humidity)
{
TempAlarmTime = DateTime.Now;
TempOrHumidityIsAlarm = true;
}
else
{
TempOrHumidityIsAlarm = false;
needAlarm = true;
}
//如果湿度没有报警,温度达到范围也需要报警
if (temp > Max_Temperature && Max_Temperature > 0)
else if (temp > Max_Temperature && Max_Temperature > 0)
{
LOGGER.Info("当前温度【" + param.Temperate + "】超过最高温度【" + Max_Temperature + "】,开始报警!");
TempAlarmTime = DateTime.Now;
TempOrHumidityIsAlarm = true;
needAlarm = true;
//Thread.Sleep(100);
KNDIOMove(IO_Type.StartOrStopBlow, IO_VALUE.LOW);
}
......@@ -1771,6 +1762,14 @@ namespace OnlineStore.DeviceLibrary
KNDIOMove(IO_Type.StartOrStopBlow, IO_VALUE.LOW);
}
}
else
{
TempOrHumidityIsAlarm = false;
}
if (needAlarm)
{
HTAlarm();
}
}
}
catch (Exception ex)
......@@ -1778,7 +1777,17 @@ namespace OnlineStore.DeviceLibrary
LOGGER.Error(StoreName + "HumidityProcess出错:" + ex.ToString());
}
}
private void HTAlarm()
{
if (TempOrHumidityIsAlarm)
{
return;
}
TempAlarmTime = DateTime.Now;
TempOrHumidityIsAlarm = true;
}
#endregion
#region 与服务器通信定时器,每1秒向服务器通知一次状态,同时执行出库操作
private string CodeMsg = "";
......@@ -1903,7 +1912,12 @@ namespace OnlineStore.DeviceLibrary
DateTime time = DateTime.Now;
//构建发送给服务器的对象
Operation lineOperation = getLineBoxStatus();
//如果还没湿度范围,先获取
if (Max_Humidity <= 0 || (Max_Temperature <= 0))
{
lineOperation.op = 5;
LogUtil.info(LOGGER, StoreName + "没有湿度预警范围,需要从服务器获取,发送OP=" + lineOperation.op);
}
string server = ConfigAppSettings.GetValue(Setting_Init.http_server);
Operation resultOperation = HttpHelper.Post(StoreManager.GetPostApi(server), lineOperation, false);
//发送状态信息到服务器
......@@ -1912,7 +1926,53 @@ namespace OnlineStore.DeviceLibrary
//判断服务端是否返回出库操作
return;
}
//发送状态信息到服务器
if (resultOperation == null || (resultOperation.op <= 0))
{
//判断服务端是否返回出库操作
return;
}
if (resultOperation.op.Equals(2))
{
ReviceOutStoreProcess(resultOperation);
}
else if (resultOperation.op.Equals(5))
{
ProcessHumidityCMD(resultOperation);
}
else
{
LogUtil.error("收到服务器命令:op=" + resultOperation.op + ",未找到对应处理");
}
TimeSpan span = DateTime.Now - time;
if (span.TotalMilliseconds > 10)
{
LogUtil.info(StoreName + "执行TimerProcess 共处理了【" + span.TotalMilliseconds + "】毫秒");
}
}
private void ProcessHumidityCMD(Operation resultOperation)
{
Dictionary<string, string> data = resultOperation.data;
if (data != null && data.ContainsKey(ParamDefine.maxHumidity) && data.ContainsKey(ParamDefine.maxTemperature))
{
string maxHumidity = data[ParamDefine.maxHumidity];
string maxTemp = data[ParamDefine.maxTemperature];
LogUtil.info(LOGGER, "收到服务器温湿度预警值:maxHumidity=" + maxHumidity + ",maxTemperature=" + maxTemp);
try
{
this.Max_Humidity = (float)Convert.ToDouble(maxHumidity);
this.Max_Temperature = (float)Convert.ToDouble(maxTemp);
LogUtil.info(LOGGER, "保存温湿度预警值:Max_Humidity=" + Max_Humidity + ",Max_Temperature=" + Max_Temperature);
}
catch (Exception ex)
{
LogUtil.error("转换温湿度失败:" + ex.ToString());
}
}
}
private void ReviceOutStoreProcess(Operation resultOperation) {
DateTime time = DateTime.Now;
Dictionary<string, string> data = resultOperation.data;
if (data != null && data.ContainsKey(ParamDefine.posId)
&& data.ContainsKey(ParamDefine.plateH) && data.ContainsKey(ParamDefine.plateW))
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!