WaferRobotModuleAlarmDefine.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. using System;
  2. using System.Diagnostics;
  3. using Aitex.Core.RT.DataCenter;
  4. using Aitex.Core.RT.Device;
  5. using Aitex.Core.RT.Event;
  6. using Aitex.Core.RT.Fsm;
  7. using Aitex.Core.RT.OperationCenter;
  8. using Aitex.Core.RT.Routine;
  9. using Aitex.Core.RT.SCCore;
  10. using Aitex.Core.Utilities;
  11. using Aitex.Sorter.Common;
  12. using MECF.Framework.Common.Alarms;
  13. using MECF.Framework.Common.Equipment;
  14. using MECF.Framework.Common.Event;
  15. using MECF.Framework.Common.Schedulers;
  16. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts;
  17. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot;
  18. namespace FurnaceRT.Equipments.WaferRobots
  19. {
  20. public partial class WaferRobotModule
  21. {
  22. #region AlarmDefine
  23. public AlarmEventItem TargetWaferPresentWarning { get; set; }
  24. public AlarmEventItem TargetWaferNotPresentWarning { get; set; }
  25. public AlarmEventItem BladeWaferPresentWarning { get; set; }
  26. public AlarmEventItem BladeWaferNotPresentWarning { get; set; }
  27. public AlarmEventItem PickWaferTimeoutAlarm { get; set; }
  28. public AlarmEventItem MapTimeoutAlarm { get; set; }
  29. public AlarmEventItem MapFailAlarm { get; set; }
  30. public AlarmEventItem PickWaferFailAlarm { get; set; }
  31. public AlarmEventItem PlaceWaferTimeoutAlarm { get; set; }
  32. public AlarmEventItem PlaceWaferFailAlarm { get; set; }
  33. public AlarmEventItem RequestWaferPresentTimeoutAlarm { get; set; }
  34. public AlarmEventItem RequestWaferPresentFailAlarm { get; set; }
  35. public AlarmEventItem RobotSensorFoundWaferOnBladeAfterPlaceAlarm { get; set; }
  36. public AlarmEventItem RobotSensorNotFoundWaferOnBladeAfterPickAlarm { get; set; }
  37. public AlarmEventItem CheckWaferInformationFailAlarm { get; set; }
  38. public AlarmEventItem RobotHasError { get; set; }
  39. public AlarmEventItem SetServoOnTimeoutAlarm { get; set; }
  40. public AlarmEventItem SetServoOnFailAlarm { get; set; }
  41. public AlarmEventItem RobotHomeTimeoutAlarm { get; set; }
  42. public AlarmEventItem RobotHomeFailAlarm { get; set; }
  43. public AlarmEventItem CheckLoadTimeoutAlarm { get; set; }
  44. public AlarmEventItem CheckLoadFailAlarm { get; set; }
  45. public AlarmEventItem SetSpeedTimeoutAlarm { get; set; }
  46. public AlarmEventItem SetSpeedFailAlarm { get; set; }
  47. public AlarmEventItem RobotDIAlarm { get; set; }
  48. public AlarmEventItem PickWaferPauseWarning { get; set; }
  49. public AlarmEventItem PickWaferResumeWarning { get; set; }
  50. public AlarmEventItem PlaceWaferPauseWarning { get; set; }
  51. public AlarmEventItem PlaceWaferResumeWarning { get; set; }
  52. #endregion
  53. private void InitAlarmDefine()
  54. {
  55. TargetWaferPresentWarning = SubscribeAlarm(new AlarmEventItem()
  56. {
  57. EventEnum = $"{Name}.TargetWaferPresentWarning",
  58. Description = $"Target wafer present ",
  59. Solution = "No information available. Press[Clear] to delete alarm message.",
  60. Explaination = "No information available.",
  61. AutoRecovery = false,
  62. Level = EventLevel.Warning,
  63. Action = EventAction.Clear,
  64. Category = "WaferRobotAlarm",
  65. }, () => { return true; });
  66. TargetWaferNotPresentWarning = SubscribeAlarm(new AlarmEventItem()
  67. {
  68. EventEnum = $"{Name}.TargetWaferNotPresentWarning",
  69. Description = $"Target wafer not present ",
  70. Solution = "No information available. Press[Clear] to delete alarm message.",
  71. Explaination = "No information available.",
  72. AutoRecovery = false,
  73. Level = EventLevel.Warning,
  74. Action = EventAction.Clear,
  75. Category = "WaferRobotAlarm",
  76. }, () => { return true; });
  77. BladeWaferPresentWarning = SubscribeAlarm(new AlarmEventItem()
  78. {
  79. EventEnum = $"{Name}.BladeWaferPresentWarning",
  80. Description = $"Blade wafer present ",
  81. Solution = "No information available. Press[Clear] to delete alarm message.",
  82. Explaination = "No information available.",
  83. AutoRecovery = false,
  84. Level = EventLevel.Warning,
  85. Action = EventAction.Clear,
  86. Category = "WaferRobotAlarm",
  87. }, () => { return true; });
  88. BladeWaferNotPresentWarning = SubscribeAlarm(new AlarmEventItem()
  89. {
  90. EventEnum = $"{Name}.BladeWaferNotPresentWarning",
  91. Description = $"Blade wafer not present ",
  92. Solution = "No information available. Press[Clear] to delete alarm message.",
  93. Explaination = "No information available.",
  94. AutoRecovery = false,
  95. Level = EventLevel.Warning,
  96. Action = EventAction.Clear,
  97. Category = "WaferRobotAlarm",
  98. }, () => { return true; });
  99. MapTimeoutAlarm = SubscribeAlarm(new AlarmEventItem()
  100. {
  101. EventEnum = $"{Name}.MapTimeoutAlarm",
  102. Description = $"Map timeout ",
  103. Solution = "No information available. Press[Retry] to delete alarm message.",
  104. Explaination = "No information available.",
  105. AutoRecovery = false,
  106. Level = EventLevel.Alarm,
  107. Action = EventAction.ClearAndRetry,
  108. Category = "WaferRobotAlarm",
  109. }, () => { return true; });
  110. MapFailAlarm = SubscribeAlarm(new AlarmEventItem()
  111. {
  112. EventEnum = $"{Name}.MapFailAlarm",
  113. Description = $"Map fail reason ",
  114. Solution = "No information available. Press[Retry] to delete alarm message.",
  115. Explaination = "No information available.",
  116. AutoRecovery = false,
  117. Level = EventLevel.Alarm,
  118. Action = EventAction.ClearAndRetry,
  119. Category = "WaferRobotAlarm",
  120. }, () => { return true; });
  121. PickWaferTimeoutAlarm = SubscribeAlarm(new AlarmEventItem()
  122. {
  123. EventEnum = $"{Name}.PickWaferTimeoutAlarm",
  124. Description = $"Pick wafer timeout ",
  125. Solution = "No information available. Press[Retry] to delete alarm message.",
  126. Explaination = "No information available.",
  127. AutoRecovery = false,
  128. Level = EventLevel.Alarm,
  129. Action = EventAction.ClearAndRetry,
  130. Category = "WaferRobotAlarm",
  131. }, () => { return true; });
  132. PickWaferFailAlarm = SubscribeAlarm(new AlarmEventItem()
  133. {
  134. EventEnum = $"{Name}.PickWaferFailAlarm",
  135. Description = $"Pick wafer fail reason ",
  136. Solution = "No information available. Press[Retry] to delete alarm message.",
  137. Explaination = "No information available.",
  138. AutoRecovery = false,
  139. Level = EventLevel.Alarm,
  140. Action = EventAction.ClearAndRetry,
  141. Category = "WaferRobotAlarm",
  142. }, () => { return true; });
  143. PlaceWaferTimeoutAlarm = SubscribeAlarm(new AlarmEventItem()
  144. {
  145. EventEnum = $"{Name}.PlaceWaferTimeoutAlarm",
  146. Description = $"Place wafer timeout ",
  147. Solution = "No information available. Press[Retry] to delete alarm message.",
  148. Explaination = "No information available.",
  149. AutoRecovery = false,
  150. Level = EventLevel.Alarm,
  151. Action = EventAction.ClearAndRetry,
  152. Category = "WaferRobotAlarm",
  153. }, () => { return true; });
  154. PlaceWaferFailAlarm = SubscribeAlarm(new AlarmEventItem()
  155. {
  156. EventEnum = $"{Name}.PlaceWaferFailAlarm",
  157. Description = $"Place wafer fail reason ",
  158. Solution = "No information available. Press[Retry] to delete alarm message.",
  159. Explaination = "No information available.",
  160. AutoRecovery = false,
  161. Level = EventLevel.Alarm,
  162. Action = EventAction.ClearAndRetry,
  163. Category = "WaferRobotAlarm",
  164. }, () => { return true; });
  165. RequestWaferPresentTimeoutAlarm = SubscribeAlarm(new AlarmEventItem()
  166. {
  167. EventEnum = $"{Name}.RequestWaferPresentTimeoutAlarm",
  168. Description = $"Request wafer present timeout ",
  169. Solution = "No information available. Press[Retry] to delete alarm message.",
  170. Explaination = "No information available.",
  171. AutoRecovery = false,
  172. Level = EventLevel.Alarm,
  173. Action = EventAction.ClearAndRetry,
  174. Category = "WaferRobotAlarm",
  175. }, () => { return true; });
  176. RequestWaferPresentFailAlarm = SubscribeAlarm(new AlarmEventItem()
  177. {
  178. EventEnum = $"{Name}.RequestWaferPresentFailAlarm",
  179. Description = $"Request wafer present fail ",
  180. Solution = "No information available. Press[Retry] to delete alarm message.",
  181. Explaination = "No information available.",
  182. AutoRecovery = false,
  183. Level = EventLevel.Alarm,
  184. Action = EventAction.ClearAndRetry,
  185. Category = "WaferRobotAlarm",
  186. }, () => { return true; });
  187. RobotSensorFoundWaferOnBladeAfterPlaceAlarm = SubscribeAlarm(new AlarmEventItem()
  188. {
  189. EventEnum = $"{Name}.RobotSensorFoundWaferOnBladeAfterPlaceAlarm",
  190. Description = $"Robot sensor found wafer on blade after place ",
  191. Solution = "No information available. Press[Retry] to delete alarm message.",
  192. Explaination = "No information available.",
  193. AutoRecovery = false,
  194. Level = EventLevel.Alarm,
  195. Action = EventAction.ClearAndRetry,
  196. Category = "WaferRobotAlarm",
  197. }, () => { return true; });
  198. RobotSensorNotFoundWaferOnBladeAfterPickAlarm = SubscribeAlarm(new AlarmEventItem()
  199. {
  200. EventEnum = $"{Name}.RobotSensorNotFoundWaferOnBladeAfterPickAlarm",
  201. Description = $"Robot sensor found wafer on blade after pick ",
  202. Solution = "No information available. Press[Retry] to delete alarm message.",
  203. Explaination = "No information available.",
  204. AutoRecovery = false,
  205. Level = EventLevel.Alarm,
  206. Action = EventAction.ClearAndRetry,
  207. Category = "WaferRobotAlarm",
  208. }, () => { return true; });
  209. CheckWaferInformationFailAlarm = SubscribeAlarm(new AlarmEventItem()
  210. {
  211. EventEnum = $"{Name}.CheckWaferInformationFailAlarm",
  212. Description = $"Check wafer information fail ",
  213. Solution = "No information available. Press[Retry] to delete alarm message.",
  214. Explaination = "No information available.",
  215. AutoRecovery = false,
  216. Level = EventLevel.Alarm,
  217. Action = EventAction.ClearAndRetry,
  218. Category = "WaferRobotAlarm",
  219. }, () => { return true; });
  220. RobotHasError = SubscribeAlarm(new AlarmEventItem()
  221. {
  222. EventEnum = $"{Name}.RobotHasError",
  223. Description = $"Robot has error ",
  224. Solution = "No information available. Press[Retry] to delete alarm message.",
  225. Explaination = "No information available.",
  226. AutoRecovery = false,
  227. Level = EventLevel.Alarm,
  228. Action = EventAction.ClearAndRetry,
  229. Category = "WaferRobotAlarm",
  230. }, () => { return true; });
  231. SetServoOnTimeoutAlarm = SubscribeAlarm(new AlarmEventItem()
  232. {
  233. EventEnum = $"{Name}.SetServoOnTimeoutAlarm",
  234. Description = $"Set servo on timeout ",
  235. Solution = "No information available. Press[Retry] to delete alarm message.",
  236. Explaination = "No information available.",
  237. AutoRecovery = false,
  238. Level = EventLevel.Alarm,
  239. Action = EventAction.ClearAndRetry,
  240. Category = "WaferRobotAlarm",
  241. }, () => { return true; });
  242. SetServoOnFailAlarm = SubscribeAlarm(new AlarmEventItem()
  243. {
  244. EventEnum = $"{Name}.SetServoOnFailAlarm",
  245. Description = $"Set servo on fail reason ",
  246. Solution = "No information available. Press[Retry] to delete alarm message.",
  247. Explaination = "No information available.",
  248. AutoRecovery = false,
  249. Level = EventLevel.Alarm,
  250. Action = EventAction.ClearAndRetry,
  251. Category = "WaferRobotAlarm",
  252. }, () => { return true; });
  253. RobotHomeTimeoutAlarm = SubscribeAlarm(new AlarmEventItem()
  254. {
  255. EventEnum = $"{Name}.RobotHomeTimeoutAlarm",
  256. Description = $"Robot home timeout ",
  257. Solution = "No information available. Press[Retry] to delete alarm message.",
  258. Explaination = "No information available.",
  259. AutoRecovery = false,
  260. Level = EventLevel.Alarm,
  261. Action = EventAction.ClearAndRetry,
  262. Category = "WaferRobotAlarm",
  263. }, () => { return true; });
  264. RobotHomeFailAlarm = SubscribeAlarm(new AlarmEventItem()
  265. {
  266. EventEnum = $"{Name}.RobotHomeFailAlarm",
  267. Description = $"Robot home fail reason ",
  268. Solution = "No information available. Press[Retry] to delete alarm message.",
  269. Explaination = "No information available.",
  270. AutoRecovery = false,
  271. Level = EventLevel.Alarm,
  272. Action = EventAction.ClearAndRetry,
  273. Category = "WaferRobotAlarm",
  274. }, () => { return true; });
  275. CheckLoadTimeoutAlarm = SubscribeAlarm(new AlarmEventItem()
  276. {
  277. EventEnum = $"{Name}.CheckLoadTimeoutAlarm",
  278. Description = $"Check load timeout ",
  279. Solution = "No information available. Press[Retry] to delete alarm message.",
  280. Explaination = "No information available.",
  281. AutoRecovery = false,
  282. Level = EventLevel.Alarm,
  283. Action = EventAction.ClearAndRetry,
  284. Category = "WaferRobotAlarm",
  285. }, () => { return true; });
  286. CheckLoadFailAlarm = SubscribeAlarm(new AlarmEventItem()
  287. {
  288. EventEnum = $"{Name}.CheckLoadFailAlarm",
  289. Description = $"Check load fail reason ",
  290. Solution = "No information available. Press[Retry] to delete alarm message.",
  291. Explaination = "No information available.",
  292. AutoRecovery = false,
  293. Level = EventLevel.Alarm,
  294. Action = EventAction.ClearAndRetry,
  295. Category = "WaferRobotAlarm",
  296. }, () => { return true; });
  297. SetSpeedTimeoutAlarm = SubscribeAlarm(new AlarmEventItem()
  298. {
  299. EventEnum = $"{Name}.SetSpeedTimeoutAlarm",
  300. Description = $"Set speed timeout ",
  301. Solution = "No information available. Press[Retry] to delete alarm message.",
  302. Explaination = "No information available.",
  303. AutoRecovery = false,
  304. Level = EventLevel.Alarm,
  305. Action = EventAction.ClearAndRetry,
  306. Category = "WaferRobotAlarm",
  307. }, () => { return true; });
  308. SetSpeedFailAlarm = SubscribeAlarm(new AlarmEventItem()
  309. {
  310. EventEnum = $"{Name}.SetSpeedFailAlarm",
  311. Description = $"Set speed fail ",
  312. Solution = "No information available. Press[Retry] to delete alarm message.",
  313. Explaination = "No information available.",
  314. AutoRecovery = false,
  315. Level = EventLevel.Alarm,
  316. Action = EventAction.ClearAndRetry,
  317. Category = "WaferRobotAlarm",
  318. }, () => { return true; });
  319. RobotDIAlarm = SubscribeAlarm(new AlarmEventItem()
  320. {
  321. EventEnum = $"{Name}.RobotDIAlarm",
  322. Description = $"Wafer Robot DI Alarm Trigger ",
  323. Solution = "No information available. Press[Retry] to delete alarm message.",
  324. Explaination = "No information available.",
  325. AutoRecovery = false,
  326. Level = EventLevel.Alarm,
  327. Action = EventAction.ClearAndRetry,
  328. Category = "WaferRobotAlarm",
  329. }, () => { return true; });
  330. PickWaferPauseWarning = SubscribeAlarm(new AlarmEventItem()
  331. {
  332. EventEnum = $"{Name}.PickWaferPauseWarning",
  333. Description = $"Pick wafer pause ",
  334. Solution = "No information available. Press[Clear] to delete alarm message.",
  335. Explaination = "No information available.",
  336. AutoRecovery = false,
  337. Level = EventLevel.Warning,
  338. Action = EventAction.Clear,
  339. Category = "WaferRobotAlarm",
  340. }, () => { return true; });
  341. PickWaferResumeWarning = SubscribeAlarm(new AlarmEventItem()
  342. {
  343. EventEnum = $"{Name}.PickWaferResumeWarning",
  344. Description = $"Pick wafer resume ",
  345. Solution = "No information available. Press[Clear] to delete alarm message.",
  346. Explaination = "No information available.",
  347. AutoRecovery = false,
  348. Level = EventLevel.Warning,
  349. Action = EventAction.Clear,
  350. Category = "WaferRobotAlarm",
  351. }, () => { return true; });
  352. PlaceWaferPauseWarning = SubscribeAlarm(new AlarmEventItem()
  353. {
  354. EventEnum = $"{Name}.PlaceWaferPauseWarning",
  355. Description = $"Place wafer pause ",
  356. Solution = "No information available. Press[Clear] to delete alarm message.",
  357. Explaination = "No information available.",
  358. AutoRecovery = false,
  359. Level = EventLevel.Warning,
  360. Action = EventAction.Clear,
  361. Category = "WaferRobotAlarm",
  362. }, () => { return true; });
  363. PlaceWaferResumeWarning = SubscribeAlarm(new AlarmEventItem()
  364. {
  365. EventEnum = $"{Name}.PlaceWaferResumeWarning",
  366. Description = $"Place wafer resume ",
  367. Solution = "No information available. Press[Clear] to delete alarm message.",
  368. Explaination = "No information available.",
  369. AutoRecovery = false,
  370. Level = EventLevel.Warning,
  371. Action = EventAction.Clear,
  372. Category = "WaferRobotAlarm",
  373. }, () => { return true; });
  374. if (AlarmSignaRobotTPStatusWarning != null)
  375. {
  376. var alarm = SubscribeAlarm(new AlarmEventItem()
  377. {
  378. EventEnum = $"{Name}.AlarmSignaWaferRobotTPStatusWarning",
  379. Description = $"Wafer Robot TP Status Warning Trigger ",
  380. Solution = "No information available. Press[Clear] to delete alarm message.",
  381. Explaination = "No information available.",
  382. AutoRecovery = false,
  383. Level = EventLevel.Warning,
  384. Action = EventAction.Clear,
  385. Category = "CassetteRobotAlarm",
  386. }, () => { AlarmSignaRobotTPStatusWarning.Reset(); return true; });
  387. AlarmSignaRobotTPStatusWarning.AlarmTriggered = alarm;
  388. }
  389. WaferRobotDevice.RobotHasError = RobotHasError;
  390. }
  391. }
  392. }