Axis Tolerances and Related Events

MEIXmpStatusIN_FINE_POSITION

During Normal Conditions (no Stop, E-stop, or Abort)
Between mpiMotionStart(...) and AT_TARGET, IN_FINE_POSITION is FALSE.

After AT_TARGET, the evaluation of the settling criteria begins. When the settling criteria has been satisfied, IN_FINE_POSITION is TRUE.

The settling criteria are:

    1. The absolute value of the position error is less than or equal to the fine position tolerance.
    2. The absolute value of the velocity is less than or equal to the velocity tolerance.
    3. Both of the above criteria has been satisfied for the settling time. Whenever either criteria 1 or 2 is not satisfied, IN_FINE_POSITION is cleared and the settling timer is reset.

During STOP
If settleOnStop is FALSE, IN_FINE_POSITION is FALSE.

If settleOnStop is TRUE and Feedrate != 0, IN_FINE_POSITION is FALSE.

If settleOnStop is TRUE and Feedrate = = 0, evaluation of the settling criteria begins.

After the settling criteria has been satisfied, IN_FINE_POSITION is TRUE.

During E-STOP
If settleOnEstop is FALSE, IN_FINE_POSITION is FALSE.

If settleOnEstop is TRUE and Feedrate != 0, IN_FINE_POSITION is FALSE.

If settleOnEstop is TRUE and Feedrate = = 0, evaluation of the settling criteria begins.

After the settling criteria has been satisfied, IN_FINE_POSITION is TRUE.

If both E-STOP and STOPoccur simultaneously
If both settleOnStop and settleOnEstop are FALSE, IN_FINE_POSITION is FALSE.

If either settleOnStop or settleOnEstop are TRUE and Feedrate != 0, IN_FINE_POSITION is FALSE.

If either settleOnStop or settleOnEstop are TRUE and Feedrate = = 0, evaluation of the settling criteria begins.

After the settling criteria has been satisfied IN_FINE_POSITION is TRUE.

Note

If STOP and E-STOP occur simultaneously, the XMP applies priority to the E-STOP. Both status bits will be true, but the motion will decelerate at the E-STOP rate.

During ABORT
IN_FINE_POSITION is FALSE.

If both E-STOP and ABORT occur simultaneously
During an E-Stop_Abort condition, IN_FINE_POSITION is FALSE (even if settleOnEstop is TRUE).

After mpiMotionAction(..., MPIActionRESET)
If IN_FINE_POSITION status is TRUE before RESET, the status will be unaffected (no event generated).

If IN_FINE_POSITION status is FALSE, the effect of RESET depends on the cause: If IN_FINE_POSITION is FALSE because:

  • the position error exceeds the tolerance, IN_FINE_POSITION will remain FALSE (no event generated).
  • the position error is within the tolerance but STOP is TRUE and settleOnStop is FALSE, IN_FINE_POSITION will become TRUE at settlingTime after the RESET call (event will be generated).
  • the position error is within the tolerance but E_STOP is TRUE and settleOnEstop is FALSE, IN_FINE_POSITION will become TRUE at settlingTime after the RESET (event will be generated).
  • the position error has been within the tolerance for settlingTime but ABORT is TRUE, IN_FINE_POSITION will become TRUE immediately after the RESET (event will be generated).
 

MEIXmpStatusIN_COARSE_POSITION

During Normal Conditions (no Stop, E-stop, or Abort)
The IN_COARSE_POSITION status bit can be set only during motion (defined from the return of mpiMotionStart(...) until MEIXmpStatusDONE is set for the following motion types:

  • S-Curve (final velocity = 0)
  • Trap
  • PT (after final point has been specified)
  • PVT (after final point has been specified)

For these motion types IN_COARSE_POSITION is TRUE whenever the absolute distance to the target (measured from the actual position to the final position) is less than or equal to the coarse position tolerance. If the target position is changed by mpiMotionModify(...) calls, IN_COARSE_POSITION may be set and cleared more than once (causing multiple events) during a single move.

IN_COARSE_POSITION is always FALSE for velocity moves (or moves using the FINAL_VEL attribute where the final velocity is non-zero).

During STOP, E-STOP, or ABORT
IN_COARSE_POSITION is FALSE.

After mpiMotionAction(..., MPIActionRESET)
IN_COARSE_POSITION is FALSE.

 

MEIXmpStatusAT_TARGET

There can be up to 2 filter outputs used in calculating the output level of the Motor command. The following expression is evaluated each sample to determine this output:

During Normal Conditions (no Stop, E-stop, or Abort)
The AT_TARGET status bit can be set only during motion (defined from the return of mpiMotionStart(...) until MEIXmpStatusDONE is set for the following motion types:

  • S-Curve (final velocity = 0)
  • Trap
  • PT (after final point has been specified)
  • PVT (after final point has been specified)

For these motion types AT_TARGET is TRUE whenever the command position is equal to to the target (final) position. If the target position is changed by mpiMotionModify(...) calls, AT_TARGET may be set and cleared more than once (causing multiple events) during a single move.

AT_TARGET is always FALSE for velocity moves (or moves using the FINAL_VEL attribute where the final velocity is non-zero).

During STOP, E-STOP, or ABORT
AT_TARGET is always FALSE.

After mpiMotionAction(..., MPIActionRESET)
AT_TARGET is always FALSE.

 

MEIXmpStatusAT_VELOCITY

During Normal Conditions (no Stop, E-stop, or Abort)
The AT_VELOCITY status bit can only be set during the constant velocity portions for the following move types:

  • Velocity
  • S-Curve (final velocity = 0)

The velocity settling criteria are continuously evaluated during the constant velocity portion of the motion. Once the criteria has been satisfied, the AT_VELOCITY bit is set to TRUE. AT_VELOCITY is FALSE during any non-constant velocity portions of the motion.

The velocity settling criteria are:

    1. The absolute value of the velocity error is less than or equal to the velocity tolerance.
    2. Criteria 1 has been satisfied for the settling time. Whenever Criteria 1 is not satisfied, AT_VELOCITY is set to FALSE and the settling timer is reset.

After Reset, Stop, E-stop, or Abort
After a Reset, Stop, E-Stop, or Abort, AT_VELOCITY is always FALSE.

 

MEIXmpStatusDONE

 

 

This status bit is set to TRUE whenever IN_FINE_POSITION is TRUE. It can be cleared only by mpiMotionStart(...).

After mpiMotionAction(..., MPIActionRESET)
DONE is always TRUE.