LoaderSwitchAllOnRoutine.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Routine;
  3. using MECF.Framework.Common.Equipment;
  4. using MECF.Framework.Common.Routine;
  5. using CyberX8_Core;
  6. using CyberX8_RT.Devices.AXIS;
  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.Loader
  13. {
  14. public class LoaderSwitchAllOnRoutine : RoutineBase, IRoutine
  15. {
  16. private enum SwitchOnAllStep
  17. {
  18. ShuttleASwitchOn,
  19. ShuttleBSwitchOn,
  20. TiltASwitchOn,
  21. TiltBSwitchOn,
  22. LSASwitchOn,
  23. LSBSwitchOn,
  24. RotationSwitchOn,
  25. End
  26. }
  27. #region 内部变量
  28. private JetAxisBase _shuttleAAxis;
  29. private JetAxisBase _shuttleBAxis;
  30. private JetAxisBase _tiltAAxis;
  31. private JetAxisBase _tiltBAxis;
  32. private JetAxisBase _rotationAxis;
  33. private JetAxisBase _lsAAxis;
  34. private JetAxisBase _lsBAxis;
  35. private int _timeOut = 6000;
  36. #endregion
  37. public LoaderSwitchAllOnRoutine(string module) : base(module)
  38. {
  39. _shuttleAAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.ShuttleA");
  40. _shuttleBAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.ShuttleB");
  41. _tiltAAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.TiltA");
  42. _tiltBAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.TiltB");
  43. _lsAAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.LSA");
  44. _lsBAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.LSB");
  45. _rotationAxis = DEVICE.GetDevice<JetAxisBase>($"{module}.Rotation");
  46. }
  47. public void Abort()
  48. {
  49. Runner.Stop("Manual Abort");
  50. }
  51. public RState Monitor()
  52. {
  53. Runner.Run(SwitchOnAllStep.ShuttleASwitchOn, () => { _shuttleAAxis.SwitchOn(); return true; }, () => { return _shuttleAAxis.IsSwitchOn; }, _timeOut)
  54. .Run(SwitchOnAllStep.ShuttleBSwitchOn, () => { _shuttleBAxis.SwitchOn(); return true; }, () => { return _shuttleBAxis.IsSwitchOn; }, _timeOut)
  55. .Run(SwitchOnAllStep.TiltASwitchOn, () => { _tiltAAxis.SwitchOn();return true; }, () => { return _tiltAAxis.IsSwitchOn; }, _timeOut)
  56. .Run(SwitchOnAllStep.TiltBSwitchOn, () => { _tiltBAxis.SwitchOn(); return true; }, () => { return _tiltBAxis.IsSwitchOn; }, _timeOut)
  57. .Run(SwitchOnAllStep.LSASwitchOn, () => { _lsAAxis.SwitchOn(); return true; }, () => { return _lsAAxis.IsSwitchOn; }, _timeOut)
  58. .Run(SwitchOnAllStep.LSBSwitchOn, () => { _lsBAxis.SwitchOn(); return true; }, () => { return _lsBAxis.IsSwitchOn; }, _timeOut)
  59. .Run(SwitchOnAllStep.RotationSwitchOn, () => { _rotationAxis.SwitchOn(); return true; }, () => { return _rotationAxis.IsSwitchOn; }, _timeOut)
  60. .End(SwitchOnAllStep.End,NullFun);
  61. return Runner.Status;
  62. }
  63. public RState Start(params object[] objs)
  64. {
  65. Runner.Start(Module, "Switch On All");
  66. return RState.Running;
  67. }
  68. }
  69. }