LoaderCommonWaferHolderSideClampRoutine.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Routine;
  3. using Aitex.Core.RT.SCCore;
  4. using MECF.Framework.Common.Beckhoff.ModuleIO;
  5. using MECF.Framework.Common.CommonData.PUF;
  6. using MECF.Framework.Common.Routine;
  7. using MECF.Framework.Common.TwinCat;
  8. using CyberX8_Core;
  9. using CyberX8_RT.Devices.Loader;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using MECF.Framework.Common.IOCore;
  16. namespace CyberX8_RT.Devices.AXIS.CANOpen
  17. {
  18. public class LoaderCommonWaferHolderSideClampRoutine : RoutineBase, IRoutine
  19. {
  20. private enum WaferHolderSideClampStep
  21. {
  22. WriteWaferHolderSideClamp,
  23. End
  24. }
  25. #region 常量
  26. private const string WS_SIDE_CLAMP = "WSSideABClamp";
  27. #endregion
  28. #region 内部变量
  29. private int _timeout = 5000;
  30. private LoaderCommonDevice _loaderCommon;
  31. private bool _waferHolderSideClamp = false;
  32. #endregion
  33. /// <summary>
  34. /// 构造函数
  35. /// </summary>
  36. /// <param name="module"></param>
  37. public LoaderCommonWaferHolderSideClampRoutine(string module) : base(module)
  38. {
  39. }
  40. /// <summary>
  41. /// 中止
  42. /// </summary>
  43. public void Abort()
  44. {
  45. Runner.Stop("Manual Abort");
  46. }
  47. /// <summary>
  48. /// 监控
  49. /// </summary>
  50. /// <returns></returns>
  51. public RState Monitor()
  52. {
  53. Runner.Run(WaferHolderSideClampStep.WriteWaferHolderSideClamp, WriteWaferHolderSideClamp, CheckWaferHolderSideClamp,_timeout)
  54. .End(WaferHolderSideClampStep.End,NullFun,100);
  55. return Runner.Status;
  56. }
  57. /// <summary>
  58. /// 写入WaferHolder Side Clamp数值
  59. /// </summary>
  60. /// <returns></returns>
  61. private bool WriteWaferHolderSideClamp()
  62. {
  63. string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{WS_SIDE_CLAMP}");
  64. return IOModuleManager.Instance.WriteIoValue(ioName, _waferHolderSideClamp);
  65. }
  66. /// <summary>
  67. /// 检验Wafer Holder Side Clamp状态
  68. /// </summary>
  69. /// <returns></returns>
  70. private bool CheckWaferHolderSideClamp()
  71. {
  72. return _loaderCommon.CommonData.SideAWaferHolderClamp == _waferHolderSideClamp && _loaderCommon.CommonData.SideBWaferHolderClamp == _waferHolderSideClamp
  73. && _loaderCommon.CommonData.WSSideABClamp == _waferHolderSideClamp;
  74. }
  75. /// <summary>
  76. /// 启动
  77. /// </summary>
  78. /// <param name="objs"></param>
  79. /// <returns></returns>
  80. public RState Start(params object[] objs)
  81. {
  82. _loaderCommon = DEVICE.GetDevice<LoaderCommonDevice>($"{Module}.Common");
  83. _waferHolderSideClamp = (bool)objs[0];
  84. return Runner.Start(Module, "Wafer Holder Clamp");
  85. }
  86. }
  87. }