LoadPortClampRoutine.cs 1.7 KB

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