TransporterElevatorLowRoutine.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Log;
  3. using Aitex.Core.RT.Routine;
  4. using MECF.Framework.Common.Routine;
  5. using MECF.Framework.Common.WaferHolder;
  6. using CyberX8_Core;
  7. using CyberX8_RT.Devices.AXIS;
  8. using CyberX8_RT.Devices.TransPorter;
  9. using CyberX8_RT.Modules.Loader;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace CyberX8_RT.Modules.Transporter
  16. {
  17. public class TransporterElevatorLowRoutine : RoutineBase, IRoutine
  18. {
  19. private enum ElevatorLowStep
  20. {
  21. CheckStatus,
  22. ElevatorLow,
  23. ElevatorLowWait,
  24. End
  25. }
  26. #region 内部变量
  27. private JetAxisBase _elevatorAxis;
  28. private JetAxisBase _gantryAxis;
  29. private TransporterCommon _transporterCommon;
  30. #endregion
  31. /// <summary>
  32. /// 构造函数
  33. /// </summary>
  34. /// <param name="module"></param>
  35. public TransporterElevatorLowRoutine(string module) : base(module)
  36. {
  37. }
  38. /// <summary>
  39. /// 中止
  40. /// </summary>
  41. public void Abort()
  42. {
  43. Runner.Stop("Manual Abort");
  44. }
  45. /// <summary>
  46. /// 监控
  47. /// </summary>
  48. /// <returns></returns>
  49. public RState Monitor()
  50. {
  51. Runner.Run(ElevatorLowStep.CheckStatus, CheckPreCondition, NullFun,_delay_1ms)
  52. //1.1 Elevator
  53. .Run(ElevatorLowStep.ElevatorLow, ElevatorPosition, _delay_1ms)
  54. .WaitWithStopCondition(ElevatorLowStep.ElevatorLowWait, CheckVerticalPositionStatus, CheckVerticalPositionRunStop)
  55. .End(ElevatorLowStep.End,NullFun,100);
  56. return Runner.Status;
  57. }
  58. /// <summary>
  59. /// 检验前置条件
  60. /// </summary>
  61. /// <returns></returns>
  62. private bool CheckPreCondition()
  63. {
  64. if (!_elevatorAxis.IsSwitchOn)
  65. {
  66. LOG.WriteLog(eEvent.ERR_TRANSPORTER, Module, $"{Module} elevator axis is not switch on ");
  67. return false;
  68. }
  69. if (!_elevatorAxis.IsHomed)
  70. {
  71. LOG.WriteLog(eEvent.ERR_TRANSPORTER, Module, $"{Module} elevator axis is not homed ");
  72. return false;
  73. }
  74. return true;
  75. }
  76. /// <summary>
  77. /// Elevator Position
  78. /// </summary>
  79. /// <returns></returns>
  80. private bool ElevatorPosition()
  81. {
  82. return _elevatorAxis.PositionStation("LOW");
  83. }
  84. /// <summary>
  85. /// 检验Vertical移动状态
  86. /// </summary>
  87. /// <returns></returns>
  88. private bool CheckVerticalPositionStatus()
  89. {
  90. return _elevatorAxis.Status == RState.End;
  91. }
  92. /// <summary>
  93. /// 检验Vertical是否还在运动
  94. /// </summary>
  95. /// <returns></returns>
  96. private bool CheckVerticalPositionRunStop()
  97. {
  98. return _elevatorAxis.Status == RState.Failed;
  99. }
  100. /// <summary>
  101. /// 启动
  102. /// </summary>
  103. /// <param name="objs"></param>
  104. /// <returns></returns>
  105. public RState Start(params object[] objs)
  106. {
  107. _elevatorAxis = DEVICE.GetDevice<JetAxisBase>($"{Module}.Elevator");
  108. _gantryAxis = DEVICE.GetDevice<JetAxisBase>($"{Module}.Gantry");
  109. _transporterCommon = DEVICE.GetDevice<TransporterCommon>($"{Module}.Common");
  110. if (!CheckStartPreConfition())
  111. {
  112. return RState.Failed;
  113. }
  114. return Runner.Start(Module, "ElevatorLow");
  115. }
  116. /// <summary>
  117. /// 启动校验条件
  118. /// </summary>
  119. /// <returns></returns>
  120. private bool CheckStartPreConfition()
  121. {
  122. if (WaferHolderManager.Instance.HasWaferHolder(Module))
  123. {
  124. LOG.WriteLog(eEvent.ERR_TRANSPORTER, Module, $"{Module} already has wafer Shuttle");
  125. return false;
  126. }
  127. return true;
  128. }
  129. }
  130. }