LoadPortLoadRoutine.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using Aitex.Core.RT.Device;
  3. using Aitex.Core.RT.Event;
  4. using Aitex.Core.RT.Log;
  5. using Aitex.Core.RT.Routine;
  6. using Aitex.Core.RT.SCCore;
  7. using MECF.Framework.Common.Equipment;
  8. using Venus_Core;
  9. namespace Venus_RT.Modules.LPs
  10. {
  11. class LoadPortLoadRoutine : ModuleRoutineBase, IRoutine
  12. {
  13. enum RoutineStep
  14. {
  15. Load,
  16. End,
  17. }
  18. private int _timeout = 0;
  19. private LoadPortModule _lpModule;
  20. public LoadPortLoadRoutine(LoadPortModule lpModule) : base(ModuleHelper.Converter(lpModule.Module))
  21. {
  22. _lpModule = lpModule;
  23. Name = "Load";
  24. }
  25. public RState Start(params object[] objs)
  26. {
  27. Reset();
  28. _timeout = SC.GetValue<int>("EFEM.LoadPort.MotionTimeout");
  29. if (!_lpModule.LPDevice.HasCassette )
  30. {
  31. LOG.Write(eEvent.WARN_EFEM_COMMON_WARN, Module, $"{Module} not found carrier, can not load");
  32. return RState.Failed;
  33. }
  34. Notify($"Start");
  35. return RState.Running;
  36. }
  37. public RState Monitor()
  38. {
  39. Runner.Run((int)RoutineStep.Load, Load, CheckDevice, _timeout * 1000)
  40. .End((int)RoutineStep.End, NullFun, _delay_1s);
  41. return Runner.Status;
  42. }
  43. public bool Load()
  44. {
  45. Notify($"Start Load {_lpModule.Name}");
  46. _lpModule.LPDevice.Load();
  47. return true;
  48. }
  49. bool CheckDevice()
  50. {
  51. if (_lpModule.LPDevice.IsError)
  52. return false;
  53. if (_lpModule.LPDevice.IsBusy)
  54. return false;
  55. return true;
  56. }
  57. public void Abort()
  58. {
  59. }
  60. }
  61. }