_images/Bug72.jpg

What does MoveAxis() do and how do I use it?

This method supports control of the mount about its mechanical axes. Upon successful return, the telescope will start moving at the specified rate (degrees/second) about the specified axis and continue indefinitely. This method must be called for each axis separately without affecting any other axis. The axis motions may run concurrently, each at their own rate. Set the rate for an axis to zero to restore the motion about that axis to its previous state (tracking with or without offsets). Tracking motion (if enabled) is suspended on the specified axis only during this mode of operation. Other axes must not be affected.

This API permits the motion of the telescope about its mechanical axes (up to three, see TelescopeAxes). In addition, motion about each axis may be at a separate rate (degrees/second) via MoveAxis(). Furthermore, the mount may support multiple independent allowable ranges of rates about each axis via AxisRates(). The meaning of positive vs negative values as applies to rotation directions about the axes is purposely left undefined. App developers need to provide adaptation to various mount geometries and control systems.

Behavior of the Tracking Property

We see MoveAxis() as being in a different class to the higher level operations because it just says move this axis in this direction at this rate. Like the CommandXXX methods, the driver has no idea what objective the client is trying to achieve and must blindly follow the instructions it is given. In effect the client is now providing the high level functions of the driver / mount control system and is just commandeering the driver to communicate the desired axis movement rate to the mount.

For this reason it is our view that, when MoveAxis() is in effect on any axis, clients should not rely on the Tracking value reported by drivers. Since the client is providing high level control and directing use of MoveAxis(), only the client knows whether the mount is moving to its target coordinates at a fast rate or whether it is tracking a target at some arbitrary multi-axis rate.

Attention

If you are looking for movements in the equatorial coordinate system, this is not the method for you. Guiding uses either the PulseGuide() method, or old fashioned “guider cables”. For tracking solar system objects like comets and asteroids, the RightAscensionRate and DeclinationRate properties may be set to cause “creep” in those equatorial axes to follow the object in the sky. Typically you will have an ephemeris with right ascension and declination “creep” rates and these values may be directly used with those other properties, not MoveAxis().

Note

  • You must call MoveAxis() once to start motion about the selected axis at the selected Rate and once again to stop the motion and restore the previous state.

  • The movement rate must be within the value(s) obtained from a Rate object in the AxisRates() list for the desired axis.

  • The rate is a signed value with negative rates moving in the oposite direction to positive rates.

  • The Rate values specified in AxisRates() are absolute, unsigned values and apply to both directions, determined by the sign used in this command.

  • The meaning of positive vs negative values as applies to rotation directions about the axes is purposely left undefined. App developers need to provide adaptation to various mount geometries and control systems and their rotation directions. See What does MoveAxis() do and how do I use it?.

  • The value of Slewing must be True if the mount is moving about any of its axes as a result of this method being called. This can be used to simulate a handbox by initiating motion with the MouseDown event and stopping the motion with the MouseUp event.

  • When the motion is stopped the scope will be set to the previous TrackingRate or to no movement, depending on the previous state of the Tracking property.

  • It may be possible to implement satellite tracking by using the MoveAxis() method to move the scope in the required manner to track a satellite.