FlipperHomeRoutine.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Aitex.Core.RT.Event;
  2. using Aitex.Core.RT.Log;
  3. using Aitex.Core.RT.Routine;
  4. using EFEM.RT.Devices.Flipper;
  5. using MECF.Framework.Common.Equipment;
  6. using System;
  7. namespace EFEM.RT.Routines.FLP
  8. {
  9. public class FlipperHomeRoutine : CommonRoutine, IRoutine
  10. {
  11. private FlipperBase _flipper;
  12. private ModuleName modulename;
  13. private int _waitTimeout;
  14. private int _ClampTimeout;
  15. private int _TurnTimeout;
  16. public FlipperHomeRoutine(ModuleName module, FlipperBase flipper)
  17. {
  18. modulename = module;
  19. _flipper = flipper;
  20. _waitTimeout = 60;
  21. _ClampTimeout = 60;
  22. _TurnTimeout = 60;
  23. }
  24. public Result Start(params object[] objs)
  25. {
  26. if (_flipper == null)
  27. {
  28. LOG.Error($"{Module.ToString()} Flipper is null. Cannot Start");
  29. return Result.FAIL;
  30. }
  31. Reset();
  32. return Result.RUN;
  33. }
  34. public Result Monitor()
  35. {
  36. try
  37. {
  38. FlipperReset((int)FlipperHomeStep.Reset, _flipper, "Flipper Reset", _waitTimeout, Notify, Stop);
  39. TimeDelay((int)FlipperHomeStep.DeviceWait1, 1000);
  40. FlipperClampClose((int)FlipperHomeStep.ClampClose, _flipper, "Flipper Clamp Close", _ClampTimeout, Notify, Stop);
  41. TimeDelay((int)FlipperHomeStep.DeviceWait2, 1000);
  42. FlipperTurnToHome((int)FlipperHomeStep.TurnToHome, _flipper, "Flipper Turn to Home", _TurnTimeout, Notify, Stop);
  43. }
  44. catch (RoutineBreakException)
  45. {
  46. return Result.RUN;
  47. }
  48. catch (RoutineFaildException)
  49. {
  50. return Result.FAIL;
  51. }
  52. EV.PostMessage(ModuleName.System.ToString(), EventEnum.HomeEnds, ModuleName.System.ToString());
  53. return Result.DONE;
  54. }
  55. protected override void Notify(string message)
  56. {
  57. EV.PostMessage(Module, EventEnum.GeneralInfo, String.Format("Flipper Home Sequence :{0}", message));
  58. }
  59. /// <summary>
  60. /// prepare process failed
  61. /// </summary>
  62. /// <param name="failReason"></param>
  63. /// <param name="reactor"></param>
  64. protected override void Stop(string failReason)
  65. {
  66. string reason = String.Empty;
  67. EV.PostMessage(Module, EventEnum.HomeFailed, failReason);
  68. }
  69. enum FlipperHomeStep
  70. {
  71. Reset,
  72. DeviceWait1,
  73. ClampOpen,
  74. ClampClose,
  75. DeviceWait2,
  76. TurnToHome
  77. }
  78. }
  79. }