For Position Moves
A DONE event is generated after a position
move only after both the position and velocity criteria have
been met for the period specified by the settling time. To
determine if motion has completed, position moves use both
position and velocity criteria.
The default (factory) value for inPosition.tolerance.velocity
is 20,000,000 counts/sec. We included the ability to additionally
use the velocity criteria for position moves because some
users prefer to decide that an axis is "settled" only after
the position error and actual velocity are both low enough.
For Velocity Moves
An AT_VELOCITY event is generated for a velocity
move only after the velocity criteria has been met for the
period specified by the settling time. To determine
if motion has completed, velocity moves use only the velocity
criteria (they don't use the position criteria).
Note that the motion completed event
generated this time is an AT_VELOCITY event rather than a
DONE event. For velocity moves, DONE events will only occur
after mpiMotionAction(..., MPIActionSTOP) calls.
You can also use the velocity criteria to
determine when ringing has stopped after an open loop commutation
move. To do this, the position criteria is effectively disabled
by setting the position tolerance to a very large value (e.g.,
1.0E10). After that, the DONE event following a move is determined
entirely by the velocity tolerance and settling time, and,
therefore, the event will be generated only after the ringing
has stopped.
Be aware that setting inPosition.tolerance.velocity
to 0 does not disable the velocity criteria. For interpolated
scales, setting inPosition.tolerance.velocity to 0 makes it
very difficult to meet the criteria of 0 counts of motion
for settlingTime seconds.
|