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 selectedRateand once again to stop the motion and restore the previous state.The movement rate must be within the value(s) obtained from a
Rateobject in theAxisRates()list for the desired axis.The rate is a signed value with negative rates moving in the oposite direction to positive rates.
The
Ratevalues specified inAxisRates()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
Slewingmust 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
TrackingRateor to no movement, depending on the previous state of theTrackingproperty.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.