. |
Axis Tolerances
and Related Events: There are five types of generated events related to motion: MOTION_DONE, MOTION_AT_VELOCITY, and IN_COARSE_POSITION, AT_TARGET, and SETTLED. Motion completion for a position move is indicated by a MOTION_DONE event, while motion completion for a velocity move is indicated by an MOTION_AT_VELOCITY event. For both position moves and velocity moves, the MPI uses a settling time window to determine when to generate a motion completed event (to indicate that motion has finished on an axis). For position moves, the MPI uses the settling time window to determine when an axis has reached the final target location and is stable. For velocity moves, the MPI uses the settling time window to determine when an axis has reached the final velocity. This works because during ringing, the velocity is highest when the position error is lowest. (Velocity and position error are inversely-related.) Position and Velocity criteria
for generating motion completion events
For Position Moves A MOTION_DONE event is also generated by a velocity move only if the target velocity is zero and the velocity criteria have been met for the period specified by the settling time. 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 Note that the motion completed event generated this time is an MOTION_AT_VELOCITY event rather than a MOTION_DONE event. For velocity moves, MOTION_DONE events will only occur after mpiMotionAction(..., MPIActionSTOP) or if the target command velocity is zero. 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 MOTION_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 MPIAxisConfig.inPosition.tolerance.velocity to 0 does not disable the velocity criteria. For interpolated scales, setting MPIAxisConfig.inPosition.tolerance.velocity to 0 makes it very difficult to meet the criteria of 0 counts of motion for settlingTime seconds. Setting Time Parameters Four Settling Time Parameters
For position moves, the generation of DONE events depends on three parameters: MPIAxisConfig.inPosition.settlingTime
DONE events are only generated when command = target or after STOP, ESTOP or ABORT events. For velocity moves, the generation of AT_VELOCITY events depends on two parameters: MPIAxisConfig.inPosition.settlingTime
The settlingTime value specifies the amount of time (seconds) that a motion must be within the positionFine band, in order for the motion to be considered complete (finished). The positionFine parameter is a tolerance (encoder counts), where we know a motion is complete if the motion settles within this tolerance. The velocity parameter specifies a band around the target velocity for velocity moves. A fourth parameter (MPIAxisConfig.inPosition.positionCoarse) specifies a band around the final position. MEIXmpStatusIN_FINE_POSITION | MEIXmpStatusIN_COARSE_POSITION
During Normal Conditions (no Stop, E-stop, or Abort) 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:
During STOP During E-STOP If both E-STOP and STOPoccur simultaneously 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 If both E-STOP and ABORT occur simultaneously After mpiMotionAction(..., MPIActionRESET)
MEIXmpStatusIN_COARSE_POSITION During Normal Conditions (no Stop, E-stop, or Abort)
For these motion types IN_COURSE_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_COURSE_POSITION may be set and cleared more than once (causing multiple events) during a single move. IN_COURSE_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 After mpiMotionAction(..., MPIActionRESET)
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)
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 After mpiMotionAction(..., MPIActionRESET)
During Normal Conditions (no Stop, E-stop, or Abort)
The velocity settling criteria are continuously evaluated during the constant velocity portion of the motion. Once the criteria has been satisfied, the MOTION_AT_VELOCITY bit is set to TRUE. MOTION_AT_VELOCITY is FALSE during any non-constant velocity portions of the motion. The velocity settling criteria are:
After Reset, Stop, E-stop, or Abort
This status bit is set to TRUE whenever SETTLED is TRUE. It can be cleared only by mpiMotionStart(...). After mpiMotionAction(..., MPIActionRESET)
|
| | Copyright © 2001-2021 Motion Engineering |