LoaderSwitchAllOffRoutine.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Routine;
  3. using CyberX8_Core;
  4. using CyberX8_RT.Devices.AXIS;
  5. using CyberX8_RT.Devices.PUF;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace CyberX8_RT.Modules.Loader
  12. {
  13. public class LoaderSwitchAllOffRoutine : MECF.Framework.Common.Routine.RoutineBase, IRoutine
  14. {
  15. private enum SwitchOffAllStep
  16. {
  17. ShuttleASwitchOff,
  18. ShuttleBSwitchOff,
  19. TiltASwitchOff,
  20. TiltBSwitchOff,
  21. CRSASwitchOff,
  22. CRSBSwitchOff,
  23. RotationSwitchOff,
  24. End
  25. }
  26. #region 内部变量
  27. private JetAxisBase _shuttleAAxis;
  28. private JetAxisBase _shuttleBAxis;
  29. private JetAxisBase _tiltAAxis;
  30. private JetAxisBase _tiltBAxis;
  31. private JetAxisBase _rotationAxis;
  32. private JetAxisBase _crsAAxis;
  33. private JetAxisBase _crsBAxis;
  34. private int _timeOut = 6000;
  35. #endregion
  36. public LoaderSwitchAllOffRoutine(string module) : base(module)
  37. {
  38. _shuttleAAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.ShuttleA");
  39. _shuttleBAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.ShuttleB");
  40. _tiltAAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.TiltA");
  41. _tiltBAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.TiltB");
  42. _crsAAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.LSA");
  43. _crsBAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.LSB");
  44. _rotationAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.Rotation");
  45. }
  46. public void Abort()
  47. {
  48. Runner.Stop("Manual Abort");
  49. }
  50. public RState Monitor()
  51. {
  52. Runner.Run(SwitchOffAllStep.ShuttleASwitchOff, () => { _shuttleAAxis.SwitchOff(); return true; }, () => { return !_shuttleAAxis.IsSwitchOn; }, _timeOut)
  53. .Run(SwitchOffAllStep.ShuttleBSwitchOff, () => { _shuttleBAxis.SwitchOff(); return true; }, () => { return !_shuttleBAxis.IsSwitchOn; }, _timeOut)
  54. .Run(SwitchOffAllStep.TiltASwitchOff, () => { _tiltAAxis.SwitchOff();return true; }, () => { return !_tiltAAxis.IsSwitchOn; }, _timeOut)
  55. .Run(SwitchOffAllStep.TiltBSwitchOff, () => { _tiltBAxis.SwitchOff(); return true; }, () => { return !_tiltBAxis.IsSwitchOn; }, _timeOut)
  56. .Run(SwitchOffAllStep.CRSASwitchOff, () => { _crsAAxis.SwitchOff(); return true; }, () => { return !_crsAAxis.IsSwitchOn; }, _timeOut)
  57. .Run(SwitchOffAllStep.CRSBSwitchOff, () => { _crsBAxis.SwitchOff(); return true; }, () => { return !_crsBAxis.IsSwitchOn; }, _timeOut)
  58. .Run(SwitchOffAllStep.RotationSwitchOff, () => { _rotationAxis.SwitchOff(); return true; }, () => { return !_rotationAxis.IsSwitchOn; }, _timeOut)
  59. .End(SwitchOffAllStep.End,NullFun);
  60. return Runner.Status;
  61. }
  62. public RState Start(params object[] objs)
  63. {
  64. Runner.Start(Module, "Switch On All");
  65. return RState.Running;
  66. }
  67. }
  68. }