SchedulerVCE.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using Aitex.Core.Util;
  2. using Aitex.Sorter.Common;
  3. using MECF.Framework.Common.Equipment;
  4. using MECF.Framework.Common.Schedulers;
  5. using MECF.Framework.Common.SubstrateTrackings;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using Venus_RT.Modules.VCE;
  12. using Venus_RT.Scheduler;
  13. namespace Venus_RT.Modules.Schedulers
  14. {
  15. public class SchedulerVCE : SchedulerModule
  16. {
  17. #region 私有变量
  18. private VceEntity _entity;
  19. #endregion
  20. #region 公开变量
  21. public override bool IsAvailable => _entity.IsIdle && CheckTaskDone();
  22. public override bool IsOnline => true;
  23. public override bool IsError => _entity.IsError;
  24. #endregion
  25. public SchedulerVCE(ModuleName module) : base(module.ToString())
  26. {
  27. _module = module.ToString();
  28. _entity = Singleton<RouteManager>.Instance.VCE;
  29. }
  30. public override bool IsReadyForPick(ModuleName robot, int slot, Hand blade)
  31. {
  32. return _entity.IsPrepareTransferReady(Module, EnumTransferType.Pick, slot)
  33. && WaferManager.Instance.CheckHasWafer(ModuleHelper.Converter(_module), slot);
  34. }
  35. public override bool IsReadyForPlace(ModuleName robot, int slot, Hand blade)
  36. {
  37. return _entity.IsPrepareTransferReady(Module, EnumTransferType.Place, slot)
  38. && WaferManager.Instance.CheckNoWafer(ModuleHelper.Converter(_module), slot);
  39. }
  40. public bool CheckTaskDone()
  41. {
  42. bool ret = false;
  43. switch (_task)
  44. {
  45. case TaskType.None:
  46. ret = true;
  47. break;
  48. case TaskType.PrepareTransfer:
  49. ret = _entity.IsPrepareTransferReady(ModuleName.EfemRobot, EnumTransferType.Pick, 0);
  50. break;
  51. }
  52. if (ret && _task != TaskType.None)
  53. {
  54. LogTaskDone(_task, "");
  55. _task = TaskType.None;
  56. }
  57. return ret;
  58. }
  59. }
  60. }