GalilSwitchOnRoutine.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using Aitex.Core.RT.Routine;
  2. using MECF.Framework.Common.CommonData.PUF;
  3. using MECF.Framework.Common.Routine;
  4. using PunkHPX8_Core;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace PunkHPX8_RT.Devices.AXIS.Galil
  11. {
  12. public class GalilSwitchOnRoutine : RoutineBase, IRoutine
  13. {
  14. private enum SwitchOnStep
  15. {
  16. WriteTargetPosition,
  17. SwitchOn,
  18. End
  19. }
  20. #region 常量
  21. private const string TARGET_POSITION = "TargetPosition";
  22. #endregion
  23. #region 内部变量
  24. private JetAxisBase _axis;
  25. private GalilCommonAxis _galilCommonAxis;
  26. #endregion
  27. public GalilSwitchOnRoutine(string module,JetAxisBase axis, GalilCommonAxis galilCommonAxis) : base(module)
  28. {
  29. _axis = axis;
  30. _galilCommonAxis = galilCommonAxis;
  31. }
  32. public void Abort()
  33. {
  34. Runner.Stop("Manual Abort");
  35. }
  36. public RState Monitor()
  37. {
  38. Runner.Run(SwitchOnStep.WriteTargetPosition, WriteTargetPosition, _delay_1ms)
  39. .Run(SwitchOnStep.SwitchOn, SwitchOn,CheckSwitchOn,1000)
  40. .End(SwitchOnStep.End, NullFun, _delay_1ms);
  41. return Runner.Status;
  42. }
  43. /// <summary>
  44. /// 上电
  45. /// </summary>
  46. /// <returns></returns>
  47. private bool SwitchOn()
  48. {
  49. return _galilCommonAxis.WriteSwitchOn();
  50. }
  51. /// <summary>
  52. /// 当前位置写入Target
  53. /// </summary>
  54. /// <returns></returns>
  55. private bool WriteTargetPosition()
  56. {
  57. int targetPosition =_axis.CalculateValueMultiplyScale(_axis.MotionData.MotorPosition);
  58. return _galilCommonAxis.WriteAbsolutePosition(targetPosition);
  59. }
  60. /// <summary>
  61. /// 检验上电状态
  62. /// </summary>
  63. /// <returns></returns>
  64. private bool CheckSwitchOn()
  65. {
  66. return _axis.IsSwitchOn;
  67. }
  68. public RState Start(params object[] objs)
  69. {
  70. return Runner.Start(Module, "Switch On");
  71. }
  72. }
  73. }