LoaderSwitchAllOffRoutine.cs 3.0 KB

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