HomeAll.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Routine;
  3. using Aitex.Core.Util;
  4. using MECF.Framework.Common.Equipment;
  5. using System.Collections.Generic;
  6. namespace FurnaceRT.Equipments.Systems
  7. {
  8. public class HomeAll : IRoutine
  9. {
  10. List<List<IModuleDevice>> _lstModules = new List<List<IModuleDevice>>();
  11. List<IModuleDevice> _homingModules = new List<IModuleDevice>();
  12. public HomeAll()
  13. {
  14. }
  15. public Result Start(params object[] objs)
  16. {
  17. _lstModules.Clear();
  18. _lstModules.Add(new List<IModuleDevice>()
  19. {
  20. Singleton<EquipmentManager>.Instance.Modules[ModuleName.CarrierRobot] as IModuleDevice,
  21. Singleton<EquipmentManager>.Instance.Modules[ModuleName.WaferRobot] as IModuleDevice,
  22. //Singleton<EquipmentManager>.Instance.Modules[ModuleName.LP1] as IModuleDevice,
  23. //Singleton<EquipmentManager>.Instance.Modules[ModuleName.LP2] as IModuleDevice,
  24. });
  25. var lstModules = new List<IModuleDevice>();
  26. foreach (var device in Singleton<EquipmentManager>.Instance.Modules.Values)
  27. {
  28. if (device.Module == ModuleName.WaferRobot.ToString() || device.Module == ModuleName.CarrierRobot.ToString())
  29. continue;
  30. lstModules.Add(device as IModuleDevice);
  31. }
  32. _lstModules.Add(lstModules);
  33. _homingModules.Clear();
  34. return Result.RUN;
  35. }
  36. public Result Monitor()
  37. {
  38. if (_homingModules.Count == 0 && _lstModules.Count == 0)
  39. return Result.DONE;
  40. if (_homingModules.Count > 0)
  41. {
  42. foreach (var module in _homingModules)
  43. {
  44. if (module.IsError)
  45. return Result.FAIL;
  46. if (!module.IsReady)
  47. return Result.RUN;
  48. }
  49. _homingModules.Clear();
  50. if (_lstModules.Count == 0)
  51. return Result.DONE;
  52. }
  53. if (_homingModules.Count == 0)
  54. {
  55. foreach (var moduleEntity in _lstModules[0])
  56. {
  57. if (!moduleEntity.Home(out string reason))
  58. return Result.FAIL;
  59. _homingModules.Add(moduleEntity);
  60. }
  61. _lstModules.RemoveAt(0);
  62. }
  63. return Result.RUN;
  64. }
  65. public void Abort()
  66. {
  67. Clear();
  68. }
  69. public void Clear()
  70. {
  71. _lstModules.Clear();
  72. _homingModules.Clear();
  73. }
  74. }
  75. }