MFHomeRoutine.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using Aitex.Core.RT.Routine;
  2. using Aitex.Core.RT.SCCore;
  3. using Venus_RT.Devices;
  4. using MECF.Framework.Common.Routine;
  5. using MECF.Framework.Common.Equipment;
  6. using Venus_Core;
  7. using Aitex.Core.RT.Log;
  8. namespace Venus_RT.Modules.TM
  9. {
  10. class MFHomeRoutine : ModuleRoutineBase, IRoutine
  11. {
  12. private enum HomeStep
  13. {
  14. kHoming,
  15. kEnd,
  16. }
  17. private int _homingTimeout = 30000;
  18. private readonly JetTM _JetTM;
  19. private readonly ITransferRobot _robot;
  20. public MFHomeRoutine(JetTM jetTM, ITransferRobot robot) : base(ModuleName.TM)
  21. {
  22. _JetTM = jetTM;
  23. _robot = robot;
  24. Name = "TM Home";
  25. }
  26. public RState Start(params object[] objs)
  27. {
  28. Reset();
  29. _homingTimeout = SC.GetValue<int>($"{Module}.HomeTimeout") * 1000;
  30. return Runner.Start(Module, Name);
  31. }
  32. public RState Monitor()
  33. {
  34. Runner.Run((int)HomeStep.kHoming, HomeTM, CheckHomeReady, _homingTimeout)
  35. .End((int)HomeStep.kEnd, NullFun, _delay_50ms);
  36. return Runner.Status;
  37. }
  38. private bool HomeTM()
  39. {
  40. return _robot.Home();
  41. }
  42. private bool CheckHomeReady()
  43. {
  44. return _robot.Status == RState.End;
  45. }
  46. public void Abort()
  47. {
  48. }
  49. }
  50. }