SchedulerLoadPort.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Aitex.Core.Util;
  7. using MECF.Framework.Common.Equipment;
  8. using MECF.Framework.Common.Schedulers;
  9. using MECF.Framework.Common.SubstrateTrackings;
  10. using Virgo_DRT.Scheduler;
  11. namespace Virgo_DRT.Modules.Schedulers
  12. {
  13. public class SchedulerLoadPort : SchedulerModule
  14. {
  15. public override bool IsAvailable
  16. {
  17. get { return _entity.IsIdle /*&& _entity.IsOnline*/ && CheckTaskDone(); }
  18. }
  19. public override bool IsOnline
  20. {
  21. get { return _entity.IsOnline; }
  22. }
  23. public override bool IsError
  24. {
  25. get { return _entity.IsError; }
  26. }
  27. private EfemEntity _entity = null;
  28. public SchedulerLoadPort(ModuleName module) : base(module.ToString())
  29. {
  30. _module = module.ToString();
  31. _entity = Singleton<RouteManager>.Instance.EFEM;
  32. }
  33. public bool Load()
  34. {
  35. //_busy = true;
  36. //_entity.Load(_chamber);
  37. return true;
  38. }
  39. public bool Unload()
  40. {
  41. //_busy = true;
  42. //_entity.Unloaded(_chamber);
  43. return true;
  44. }
  45. public bool Monitor()
  46. {
  47. return true;
  48. }
  49. public override bool IsReadyForPick(ModuleName robot, int slot)
  50. {
  51. return _entity.IsPrepareTransferReady(Module, EnumTransferType.Pick, slot)
  52. && WaferManager.Instance.CheckHasWafer(ModuleHelper.Converter(_module), slot);
  53. }
  54. public override bool IsReadyForPlace(ModuleName robot, int slot)
  55. {
  56. return _entity.IsPrepareTransferReady(Module, EnumTransferType.Place, slot)
  57. && WaferManager.Instance.CheckNoWafer(ModuleHelper.Converter(_module), slot);
  58. }
  59. public bool CheckTaskDone()
  60. {
  61. bool ret = false;
  62. switch (_task)
  63. {
  64. case TaskType.None:
  65. ret = true;
  66. break;
  67. case TaskType.PrepareTransfer:
  68. ret = _entity.IsPrepareTransferReady(ModuleName.EfemRobot, EnumTransferType.Pick, 0);
  69. break;
  70. }
  71. if (ret && _task != TaskType.None)
  72. {
  73. LogTaskDone(_task, "");
  74. _task = TaskType.None;
  75. }
  76. return ret;
  77. }
  78. internal bool CheckReadyRunJob()
  79. {
  80. return _entity.CheckReadyRunNewJob(this.Module);
  81. }
  82. internal bool CheckReadyTransfer()
  83. {
  84. return _entity.CheckReadyTransfer(this.Module);
  85. }
  86. }
  87. }