LoaderPreTransferUnclampRoutine.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Routine;
  3. using MECF.Framework.Common.Equipment;
  4. using MECF.Framework.Common.Routine;
  5. using MECF.Framework.Common.Utilities;
  6. using CyberX8_Core;
  7. using CyberX8_RT.Devices.AXIS.CANOpen;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. namespace CyberX8_RT.Devices.Loader
  14. {
  15. public class LoaderPreTransferUnclampRoutine : RoutineBase, IRoutine
  16. {
  17. private enum UnclampStep
  18. {
  19. WaferHolderUnClamp,
  20. SideUnClamp,
  21. SideUnClampWait,
  22. FlowUnClamp,
  23. End
  24. }
  25. #region 内部变量
  26. private LoaderCommonDevice _commonDevice;
  27. private LoaderCommonWaferHolderSideClampRoutine _sideClampRoutine;
  28. #endregion
  29. /// <summary>
  30. /// 构造函数
  31. /// </summary>
  32. /// <param name="module"></param>
  33. public LoaderPreTransferUnclampRoutine(string module) : base(module)
  34. {
  35. }
  36. /// <summary>
  37. /// 中止
  38. /// </summary>
  39. public void Abort()
  40. {
  41. Runner.Stop("Manual Abort");
  42. }
  43. /// <summary>
  44. /// 监控
  45. /// </summary>
  46. /// <returns></returns>
  47. public RState Monitor()
  48. {
  49. Runner.Run(UnclampStep.WaferHolderUnClamp, _commonDevice.WaferHolderClampOffAction, _delay_1ms)
  50. .Run(UnclampStep.SideUnClamp, () => _sideClampRoutine.Start(false) == RState.Running, _delay_1ms)
  51. .WaitWithStopCondition(UnclampStep.SideUnClampWait, () => CommonFunction.CheckRoutineEndState(_sideClampRoutine),
  52. () => CommonFunction.CheckRoutineStopState(_sideClampRoutine))
  53. .Run(UnclampStep.FlowUnClamp, _commonDevice.LeakFlowClampOffAction, _delay_1ms)
  54. .End(UnclampStep.End, NullFun, _delay_1ms);
  55. return Runner.Status;
  56. }
  57. /// <summary>
  58. /// 启动
  59. /// </summary>
  60. /// <param name="objs"></param>
  61. /// <returns></returns>
  62. public RState Start(params object[] objs)
  63. {
  64. _sideClampRoutine = new LoaderCommonWaferHolderSideClampRoutine(Module);
  65. _commonDevice = DEVICE.GetDevice<LoaderCommonDevice>($"{ModuleName.Loader1}.Common");
  66. return Runner.Start(Module,"Start PreTransfer Unclamp");
  67. }
  68. }
  69. }