PufSwitchOnRoutine.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Routine;
  3. using MECF.Framework.Common.Equipment;
  4. using CyberX8_Core;
  5. using CyberX8_RT.Devices.AXIS;
  6. using CyberX8_RT.Devices.PUF;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace CyberX8_RT.Modules.PUF
  13. {
  14. public class PufSwitchOnRoutine : ModuleRoutineBase, IRoutine
  15. {
  16. private enum LoadStep
  17. {
  18. Vertical,
  19. VerticalWait,
  20. Rotation,
  21. RotationWait,
  22. Flip,
  23. FlipWait,
  24. End
  25. }
  26. #region 内部变量
  27. private JetAxisBase _flipAxis;
  28. private JetAxisBase _rotationAxis;
  29. private JetAxisBase _verticalAxis;
  30. #endregion
  31. public PufSwitchOnRoutine(ModuleName module) : base(module)
  32. {
  33. _flipAxis = DEVICE.GetDevice<JetAxisBase>($"{module.ToString()}.Flip");
  34. _rotationAxis = DEVICE.GetDevice<JetAxisBase>($"{module.ToString()}.Rotation");
  35. _verticalAxis = DEVICE.GetDevice<JetAxisBase>($"{module.ToString()}.Vertical");
  36. Name = "SwitchOn";
  37. }
  38. public void Abort()
  39. {
  40. Runner.Stop("Manual Abort");
  41. }
  42. public RState Monitor()
  43. {
  44. Runner.Run(LoadStep.Vertical, VerticalAxisSwitchOn, _delay_1ms)
  45. .WaitWithStopCondition(LoadStep.VerticalWait, () => { return _verticalAxis.Status == RState.End; }, () => { return _verticalAxis.Status == RState.Failed; })
  46. .Run(LoadStep.Rotation, RotationAxisSwitchOn, _delay_1ms)
  47. .WaitWithStopCondition(LoadStep.RotationWait, () => { return _rotationAxis.Status == RState.End; }, () => { return _rotationAxis.Status == RState.Failed; })
  48. .Run(LoadStep.Flip, FlipAxisSwitchOn, _delay_1ms)
  49. .WaitWithStopCondition(LoadStep.FlipWait, () => { return _flipAxis.Status == RState.End; }, () => { return _flipAxis.Status== RState.Failed; })
  50. .End(LoadStep.End,NullFun);
  51. return Runner.Status;
  52. }
  53. private bool FlipAxisSwitchOn()
  54. {
  55. _flipAxis.SwitchOn();
  56. return true;
  57. }
  58. private bool CheckFlipSwitchOn()
  59. {
  60. return _flipAxis.IsSwitchOn;
  61. }
  62. private bool RotationAxisSwitchOn()
  63. {
  64. _rotationAxis.SwitchOn();
  65. return true;
  66. }
  67. private bool CheckRotationSwitchOn()
  68. {
  69. return _rotationAxis.IsSwitchOn;
  70. }
  71. private bool VerticalAxisSwitchOn()
  72. {
  73. _verticalAxis.SwitchOn();
  74. return true;
  75. }
  76. private bool CheckVerticalSwitchOn()
  77. {
  78. return _verticalAxis.IsSwitchOn;
  79. }
  80. public RState Start(params object[] objs)
  81. {
  82. Runner.Start(Module, Name);
  83. return RState.Running;
  84. }
  85. }
  86. }