SystemAlarm.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using CCDCount.MODEL.AlarmModel;
  5. namespace CCDCount.DLL.AlarmTools
  6. {
  7. public static class SystemAlarm
  8. {
  9. private static List<AlarmMessModel> AlarmMessList = new List<AlarmMessModel>()
  10. {
  11. new AlarmMessModel()
  12. {
  13. ID = (int)AlarmMessageList.系统异常,
  14. AlarmName = "系统异常",
  15. AlarmEnType = "SystemException",
  16. AlarmChType = "系统",
  17. IsAlarm =false
  18. },
  19. new AlarmMessModel()
  20. {
  21. ID = (int)AlarmMessageList.相机实例创建失败,
  22. AlarmName = "相机实例创建失败",
  23. AlarmEnType = "SystemException",
  24. AlarmChType = "系统",
  25. IsAlarm =false
  26. },
  27. new AlarmMessModel()
  28. {
  29. ID = (int)AlarmMessageList.开启相机失败,
  30. AlarmName = "开启相机失败",
  31. AlarmEnType = "SystemException",
  32. AlarmChType = "系统",
  33. IsAlarm =false
  34. },
  35. new AlarmMessModel()
  36. {
  37. ID = (int)AlarmMessageList.相机采集开始失败,
  38. AlarmName = "相机采集开始失败",
  39. AlarmEnType = "SystemException",
  40. AlarmChType = "系统",
  41. IsAlarm =false
  42. },
  43. new AlarmMessModel()
  44. {
  45. ID = (int)AlarmMessageList.相机采集停止失败,
  46. AlarmName = "相机采集停止失败",
  47. AlarmEnType = "SystemException",
  48. AlarmChType = "系统",
  49. IsAlarm =false
  50. },
  51. new AlarmMessModel()
  52. {
  53. ID = (int)AlarmMessageList.识别线程启动失败,
  54. AlarmName = "识别线程启动失败",
  55. AlarmEnType = "SystemException",
  56. AlarmChType = "系统",
  57. IsAlarm =false
  58. },
  59. new AlarmMessModel()
  60. {
  61. ID = (int)AlarmMessageList.识别线程停止失败,
  62. AlarmName = "识别线程停止失败",
  63. AlarmEnType = "SystemException",
  64. AlarmChType = "系统",
  65. IsAlarm =false
  66. },
  67. new AlarmMessModel()
  68. {
  69. ID = (int)AlarmMessageList.待识别队列数据堆积,
  70. AlarmName = "待识别队列数据堆积",
  71. AlarmEnType = "SystemException",
  72. AlarmChType = "系统",
  73. IsAlarm =false
  74. },
  75. new AlarmMessModel()
  76. {
  77. ID = (int)AlarmMessageList.数粒通讯连接失败,
  78. AlarmName = "数粒通讯连接失败",
  79. AlarmEnType = "SystemException",
  80. AlarmChType = "系统",
  81. IsAlarm =false
  82. },
  83. new AlarmMessModel()
  84. {
  85. ID = (int)AlarmMessageList.PLC通讯连接失败,
  86. AlarmName = "PLC通讯连接失败",
  87. AlarmEnType = "SystemException",
  88. AlarmChType = "系统",
  89. IsAlarm =false
  90. },
  91. new AlarmMessModel()
  92. {
  93. ID = (int)AlarmMessageList.结果发送线程启动失败,
  94. AlarmName = "结果发送线程启动失败",
  95. AlarmEnType = "SystemException",
  96. AlarmChType = "系统",
  97. IsAlarm =false
  98. },
  99. new AlarmMessModel()
  100. {
  101. ID = (int)AlarmMessageList.结果发送线程停止失败,
  102. AlarmName = "结果发送线程停止失败",
  103. AlarmEnType = "SystemException",
  104. AlarmChType = "系统",
  105. IsAlarm =false
  106. },
  107. new AlarmMessModel()
  108. {
  109. ID = (int)AlarmMessageList.未检测到相机,
  110. AlarmName = "未检测到相机",
  111. AlarmEnType = "SystemException",
  112. AlarmChType = "系统",
  113. IsAlarm =false
  114. },
  115. new AlarmMessModel()
  116. {
  117. ID = (int)AlarmMessageList.相机加载失败,
  118. AlarmName = "相机加载失败",
  119. AlarmEnType = "SystemException",
  120. AlarmChType = "系统",
  121. IsAlarm =false
  122. },
  123. new AlarmMessModel()
  124. {
  125. ID = (int)AlarmMessageList.数据分配线程启动失败,
  126. AlarmName = "数据分配线程启动失败",
  127. AlarmEnType = "SystemException",
  128. AlarmChType = "系统",
  129. IsAlarm =false
  130. },
  131. new AlarmMessModel()
  132. {
  133. ID = (int)AlarmMessageList.数据分配线程停止失败,
  134. AlarmName = "数据分配线程停止失败",
  135. AlarmEnType = "SystemException",
  136. AlarmChType = "系统",
  137. IsAlarm =false
  138. },
  139. new AlarmMessModel()
  140. {
  141. ID = (int)AlarmMessageList.心跳异常,
  142. AlarmName = "心跳异常",
  143. AlarmEnType = "SystemException",
  144. AlarmChType = "系统",
  145. IsAlarm =false
  146. },
  147. new AlarmMessModel()
  148. {
  149. ID = (int)AlarmMessageList.气压压力检测开关报警,
  150. AlarmName = "气压压力检测开关报警",
  151. AlarmEnType = "PlcException",
  152. AlarmChType = "PLC报警",
  153. IsAlarm =false
  154. },
  155. new AlarmMessModel()
  156. {
  157. ID = (int)AlarmMessageList.急停开关按下报警,
  158. AlarmName = "急停开关按下报警",
  159. AlarmEnType = "PlcException",
  160. AlarmChType = "PLC报警",
  161. IsAlarm =false
  162. },
  163. new AlarmMessModel()
  164. {
  165. ID = (int)AlarmMessageList.触发上限位报警,
  166. AlarmName = "触发上限位报警",
  167. AlarmEnType = "PlcException",
  168. AlarmChType = "PLC报警",
  169. IsAlarm =false
  170. },
  171. new AlarmMessModel()
  172. {
  173. ID = (int)AlarmMessageList.触发下限位报警,
  174. AlarmName = "触发下限位报警",
  175. AlarmEnType = "PlcException",
  176. AlarmChType = "PLC报警",
  177. IsAlarm =false
  178. },
  179. new AlarmMessModel()
  180. {
  181. ID = (int)AlarmMessageList.升降变频器报警,
  182. AlarmName = "升降变频器报警",
  183. AlarmEnType = "PlcException",
  184. AlarmChType = "PLC报警",
  185. IsAlarm =false
  186. },
  187. new AlarmMessModel()
  188. {
  189. ID = (int)AlarmMessageList.传送带变频器报警,
  190. AlarmName = "传送带变频器报警",
  191. AlarmEnType = "PlcException",
  192. AlarmChType = "PLC报警",
  193. IsAlarm =false
  194. },
  195. new AlarmMessModel()
  196. {
  197. ID = (int)AlarmMessageList.门开报警,
  198. AlarmName = "门开报警",
  199. AlarmEnType = "PlcException",
  200. AlarmChType = "PLC报警",
  201. IsAlarm =false
  202. },
  203. new AlarmMessModel()
  204. {
  205. ID = (int)AlarmMessageList.数粒超大粒,
  206. AlarmName = "数粒超大粒",
  207. AlarmEnType = "VisionException",
  208. AlarmChType = "视觉报警",
  209. IsAlarm =false
  210. },
  211. new AlarmMessModel()
  212. {
  213. ID = (int)AlarmMessageList.数粒超小粒,
  214. AlarmName = "数粒超小粒",
  215. AlarmEnType = "VisionException",
  216. AlarmChType = "视觉报警",
  217. IsAlarm =false
  218. },
  219. new AlarmMessModel()
  220. {
  221. ID = (int)AlarmMessageList.数粒超长粒,
  222. AlarmName = "数粒超长粒",
  223. AlarmEnType = "VisionException",
  224. AlarmChType = "视觉报警",
  225. IsAlarm =false
  226. },
  227. new AlarmMessModel()
  228. {
  229. ID = (int)AlarmMessageList.数粒超短粒,
  230. AlarmName = "数粒超短粒",
  231. AlarmEnType = "VisionException",
  232. AlarmChType = "视觉报警",
  233. IsAlarm =false
  234. },
  235. new AlarmMessModel()
  236. {
  237. ID = (int)AlarmMessageList.丢帧颗粒,
  238. AlarmName = "丢帧颗粒",
  239. AlarmEnType = "VisionException",
  240. AlarmChType = "视觉报警",
  241. IsAlarm =false
  242. },
  243. new AlarmMessModel()
  244. {
  245. ID = (int)AlarmMessageList.疑似叠粒,
  246. AlarmName = "疑似叠粒",
  247. AlarmEnType = "VisionException",
  248. AlarmChType = "视觉报警",
  249. IsAlarm =false
  250. },
  251. new AlarmMessModel()
  252. {
  253. ID = (int)AlarmMessageList.罐装阀伺服报警,
  254. AlarmName = "罐装阀伺服报警",
  255. AlarmEnType = "PlcException",
  256. AlarmChType = "PLC报警",
  257. IsAlarm =false
  258. },
  259. new AlarmMessModel()
  260. {
  261. ID = (int)AlarmMessageList.设备缺料停机,
  262. AlarmName = "设备缺料停机",
  263. AlarmEnType = "PlcException",
  264. AlarmChType = "PLC报警",
  265. IsAlarm =false
  266. },
  267. new AlarmMessModel()
  268. {
  269. ID = (int)AlarmMessageList.传动轴伺服报警,
  270. AlarmName = "传动轴伺服报警",
  271. AlarmEnType = "PlcException",
  272. AlarmChType = "PLC报警",
  273. IsAlarm =false
  274. },
  275. new AlarmMessModel()
  276. {
  277. ID = (int)AlarmMessageList.堵瓶停机,
  278. AlarmName = "堵瓶停机",
  279. AlarmEnType = "PlcException",
  280. AlarmChType = "PLC报警",
  281. IsAlarm =false
  282. },
  283. new AlarmMessModel()
  284. {
  285. ID = (int)AlarmMessageList.缺瓶停机,
  286. AlarmName = "缺瓶停机",
  287. AlarmEnType = "PlcException",
  288. AlarmChType = "PLC报警",
  289. IsAlarm =false
  290. },
  291. new AlarmMessModel()
  292. {
  293. ID = (int)AlarmMessageList.等待复位,
  294. AlarmName = "等待复位",
  295. AlarmEnType = "PlcException",
  296. AlarmChType = "PLC报警",
  297. IsAlarm =false
  298. },
  299. };
  300. /// <summary>
  301. /// 开启指定警告
  302. /// </summary>
  303. /// <param name="ID"></param>
  304. public static void AlarmAlert(AlarmMessageList ID,string EnMessage,string ChMessage, string AlarmPath)
  305. {
  306. var alarm = AlarmMessList.Find(x => x.ID == (int)ID);
  307. if (alarm == null || alarm.IsAlarm)
  308. {
  309. return;
  310. }
  311. else
  312. {
  313. var ChanegAlarm = AlarmMessList.Find(x => x.ID == (int)ID);
  314. ChanegAlarm.IsAlarm = true;
  315. ChanegAlarm.AlarmDateTime = DateTime.Now;
  316. ChanegAlarm.AlarmPath = AlarmPath;
  317. ChanegAlarm.AlarmEnMess = EnMessage;
  318. ChanegAlarm.AlarmChMess = ChMessage;
  319. FaultLog.RecordErrorMessage(alarm.AlarmEnMess,ChanegAlarm.AlarmPath);
  320. }
  321. }
  322. /// <summary>
  323. /// 关闭指定警告
  324. /// </summary>
  325. public static void AlarmCancel(AlarmMessageList ID)
  326. {
  327. AlarmMessList.Find(x => x.ID == (int)ID).IsAlarm = false;
  328. }
  329. public static void AlarmCancelByTime(AlarmMessageList ID,int DelayTime)
  330. {
  331. var CancelValue = AlarmMessList.Find(x => x.ID == (int)ID);
  332. if ((DateTime.Now - CancelValue.AlarmDateTime).TotalMilliseconds > DelayTime)
  333. {
  334. CancelValue.IsAlarm = false;
  335. }
  336. }
  337. public static void AllVisionAlarmCancel(int DelayTime)
  338. {
  339. foreach (var alarm in AlarmMessList)
  340. {
  341. if(alarm.IsAlarm && alarm.AlarmEnType == "VisionException")
  342. {
  343. if ((DateTime.Now - alarm.AlarmDateTime).TotalMilliseconds > DelayTime)
  344. {
  345. alarm.IsAlarm = false;
  346. }
  347. }
  348. }
  349. }
  350. /// <summary>
  351. /// 获取所有警告
  352. /// </summary>
  353. public static List<AlarmMessModel> GetAllAlarm()
  354. {
  355. return AlarmMessList;
  356. }
  357. /// <summary>
  358. /// 获取所有已触发警告
  359. /// </summary>
  360. public static List<AlarmMessModel> GetAlarm()
  361. {
  362. return AlarmMessList.Where(x => x.IsAlarm == true).OrderByDescending(o=>o.AlarmDateTime).ToList();
  363. }
  364. }
  365. }