LoadPortWriteCarrierIdRoutine.cs 1.7 KB

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