using System; using System.Collections.Generic; using System.Linq; using CCDCount.MODEL.AlarmModel; namespace CCDCount.DLL.AlarmTools { public static class SystemAlarm { private static List AlarmMessList = new List() { new AlarmMessModel() { ID = (int)AlarmMessageList.系统异常, AlarmName = "系统异常", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.相机实例创建失败, AlarmName = "相机实例创建失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.开启相机失败, AlarmName = "开启相机失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.相机采集开始失败, AlarmName = "相机采集开始失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.相机采集停止失败, AlarmName = "相机采集停止失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.识别线程启动失败, AlarmName = "识别线程启动失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.识别线程停止失败, AlarmName = "识别线程停止失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.待识别队列数据堆积, AlarmName = "待识别队列数据堆积", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.数粒通讯连接失败, AlarmName = "数粒通讯连接失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.PLC通讯连接失败, AlarmName = "PLC通讯连接失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.结果发送线程启动失败, AlarmName = "结果发送线程启动失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.结果发送线程停止失败, AlarmName = "结果发送线程停止失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.未检测到相机, AlarmName = "未检测到相机", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.相机加载失败, AlarmName = "相机加载失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.数据分配线程启动失败, AlarmName = "数据分配线程启动失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.数据分配线程停止失败, AlarmName = "数据分配线程停止失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.心跳异常, AlarmName = "心跳异常", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.CAN连接失败, AlarmName = "CAN连接失败", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.气压压力检测开关报警, AlarmName = "气压压力检测开关报警", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.急停开关按下报警, AlarmName = "急停开关按下报警", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.触发上限位报警, AlarmName = "触发上限位报警", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.触发下限位报警, AlarmName = "触发下限位报警", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.升降变频器报警, AlarmName = "升降变频器报警", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.传送带变频器报警, AlarmName = "传送带变频器报警", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.门开报警, AlarmName = "门开报警", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.视觉未启动, AlarmName = "视觉未启动", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.颗粒缓存超限, AlarmName = "颗粒缓存超限", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.数粒超大粒, AlarmName = "数粒超大粒", AlarmEnType = "VisionException", AlarmChType = "视觉报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.数粒超小粒, AlarmName = "数粒超小粒", AlarmEnType = "VisionException", AlarmChType = "视觉报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.数粒超长粒, AlarmName = "数粒超长粒", AlarmEnType = "VisionException", AlarmChType = "视觉报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.数粒超短粒, AlarmName = "数粒超短粒", AlarmEnType = "VisionException", AlarmChType = "视觉报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.丢帧颗粒, AlarmName = "丢帧颗粒", AlarmEnType = "VisionException", AlarmChType = "视觉报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.疑似叠粒, AlarmName = "疑似叠粒", AlarmEnType = "VisionException", AlarmChType = "视觉报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.罐装阀伺服报警, AlarmName = "罐装阀伺服报警", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.设备缺料停机, AlarmName = "设备缺料停机", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.传动轴伺服报警, AlarmName = "传动轴伺服报警", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.堵瓶停机, AlarmName = "堵瓶停机", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.缺瓶停机, AlarmName = "缺瓶停机", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.等待复位, AlarmName = "等待复位", AlarmEnType = "PlcException", AlarmChType = "PLC报警", IsAlarm =false }, new AlarmMessModel() { ID = (int)AlarmMessageList.PLC连接中, AlarmName = "PLC连接中", AlarmEnType = "SystemException", AlarmChType = "系统", IsAlarm =false }, }; /// /// 开启指定警告 /// /// public static void AlarmAlert(AlarmMessageList ID,string EnMessage,string ChMessage, string AlarmPath) { var alarm = AlarmMessList.Find(x => x.ID == (int)ID); if (alarm == null || alarm.IsAlarm) { return; } else { var ChanegAlarm = AlarmMessList.Find(x => x.ID == (int)ID); ChanegAlarm.IsAlarm = true; ChanegAlarm.AlarmDateTime = DateTime.Now; ChanegAlarm.AlarmPath = AlarmPath; ChanegAlarm.AlarmEnMess = EnMessage; ChanegAlarm.AlarmChMess = ChMessage; FaultLog.RecordErrorMessage(alarm.AlarmEnMess,ChanegAlarm.AlarmPath); } } /// /// 关闭指定警告 /// public static void AlarmCancel(AlarmMessageList ID) { AlarmMessList.Find(x => x.ID == (int)ID).IsAlarm = false; } public static bool CheckAlarmStatic(AlarmMessageList ID) { return AlarmMessList.Find(x => x.ID == (int)ID).IsAlarm; } public static void AlarmCancelByTime(AlarmMessageList ID,int DelayTime) { var CancelValue = AlarmMessList.Find(x => x.ID == (int)ID); if ((DateTime.Now - CancelValue.AlarmDateTime).TotalMilliseconds > DelayTime) { CancelValue.IsAlarm = false; } } /// /// 关闭超时的视觉报警 /// /// public static void AllVisionAlarmCancel(int DelayTime) { foreach (var alarm in AlarmMessList) { if(alarm.IsAlarm && alarm.AlarmEnType == "VisionException") { if ((DateTime.Now - alarm.AlarmDateTime).TotalMilliseconds > DelayTime) { alarm.IsAlarm = false; } } } } /// /// 获取所有警告 /// public static List GetAllAlarm() { return AlarmMessList; } /// /// 获取所有已触发警告 /// public static List GetAlarm() { return AlarmMessList.Where(x => x.IsAlarm == true).OrderByDescending(o=>o.AlarmDateTime).ToList(); } } }