|
Introduction
|
|
|
This section details the use of various Motion Attributes,
which are listed individually below. To use Motion Attributes,
OR the attribute mask with the MPIMotionType value.
|
|
|
MPI Motion Attributes
|

|
MPIMotionAttrAPPEND
|
|
The MPI has been extended to support mpiMotionStart(...)
with the MPIMotionAttrMaskAPPEND attribute. This makes it
possible to buffer several point-to-point motion profiles
in the controller. Each successful call to mpiMotionStart(...)
with the APPEND attribute will generate an MPIEventTypeMOTION_DONE
from the controller when the motion is complete.
The MPIMotionAttrMaskID attribute is supported with MPIMotionAttrMaskAPPEND
when calling mpiMotionStart(...). The XMP-Series controller
firmware has been modified to buffer the ID values inside
the axis' frames. Therefore, applications using the motion
and axis event user data must be changed. Since the ID is
stored in the controller's axis frames, the mpiMotionEventNotifySet(...)
and mpiAxisEventNotifySet(...) must explicitly configure an
appropriate axis memory location for the firmware to retrieve
the ID. The sample programs motionID1.c and motionID2.c demonstrate
this feature.
The MEIMotionAttrHOLD attribute is supported with MPIMotionAttrMaskAPPEND
when calling mpiMotionStart(...).
Move Types: PT, PVT,
Bessel, Bspline, Bspline2, S-Curve, Trapezoidal, Velocity,
Frame
|
MPIMotionAttrAUTO_START |
|
The MPI has been extended to support mpiMotionStart(...)
with the MPIMotionAttrMaskAUTO_START attribute. When AUTO_START
is enabled, calls to mpiMotionModify(.) will automatically
start a new motion if the previous motion is done. If AUTO_START
is not enabled, and mpiMotionModify(...) is commanded after
the initial motion has completed, the method will return an
MPIMotionStateIDLE error.
Move Types: S-Curve,
Trapezoidal, Velocity
|
MPIMotionAttrDELAY |
|
The MPI has been extended to support mpiMotionStart(...)
with the MPIMotionAttrMaskDELAY attribute. This motion attribute
will delay the move for a given number of seconds. MPIMotionParams.attributes.delay
is a pointer to an array of doubles that assign delay times
for each Axis.
Move Types: S-Curve,
Trapezoidal, Velocity
|
MPIMotionAttrELEMENT_ID |
|
The MPI has been extended to support mpiMotionStart(...)
with the MPIMotionAttrMaskELEMENT_ID attribute. Similar to
the MPIMotionAttrMaskID, the ELEMENT_ID allows the application
to set an identification value for each element of a path
motion. The ID values are long values configured in the MPIMotionParams.attributes.elementId
array. Each element in the array will be the ID value for
that sequential portion of the motion.
In order to retrieve the ElementID, a pointer to the element
ID is placed into the MEIEventNotifyData structure. This will
cause the XMP to send the ElementID up to the MEIEventStatusInfo
structure when an event occurs that causes an interrupt.
Move Types: PT, PVT,
Bessel, Bspline, Bspline2, S-Curve, Trapezoidal, Velocity
|
MPIMotionAttrMaskID |
|
The MPI has been extended to support mpiMotionStart(...)
with the MPIMotionAttrMaskID attribute. The ID attributes
allows the application to assign an identification number
to each motion. This number can be returned in the MPIEventStatus
structure so the application will know which move has ended.
This is particularly useful when multiple moves are buffered
and the application needs to know which move is executing
or has returned an event.
The MPIMotionParams.attributes.id value is a long that identifies
the Motion. This ID value is passed to each Axis associated
with the MS. In order to retrieve the MoveID, a pointer to
the move ID is placed in the MEIEventNotifyData structure.
This will cause the XMP to send the MoveID up to the MEIEventStatusInfo
structure when an event occurs that causes an interrupt.
Move Types: PT, PVT,
Spline, Bessel, Bspline, Bspline2, S-Curve, Trapezoidal, Velocity,
Frame
|
MPIMotionAttrRELATIVE |
|
The MPI has been extended to support mpiMotionStart(...)
with the MPIMotionAttrMaskRELATIVE attribute. When this mask
is ANDed into the attribute mask, all position values will
be used as relative motion distances instead of final absolute
positions. For example, without the RELATIVE motion attribute,
a move beginning at position 1000 with a position parameter
value of 2000 will move to position 2000. If the RELATIVE
attribute is turned on, the final move position will be 3000,
a relative distance of 2000 counts from the starting value
of 1000.
Move Types: PT, PVT,
Spline, Bessel, Bspline, Bspline2, S-Curve, Trapezoidal, Velocity
|
MPIMotionAttrSYNC_END |
|
The MPI has been extended to support mpiMotionStart(...)
with the MPIMotionAttrMaskSYNC_END attribute. SYNC_END is
used for motions that include more than one axis. The SYNC_END
attribute will generate trajectories for all axes appended
to an MS that will end simultaneously. For all but the longest
motion profile, wait frames will be added to the beginning
of the moves. This will ensure that all axes end simultaneously.
Move Types: S-Curve,
Trapezoidal
|
MPIMotionAttrSYNC_START |
|
The MPI has been extended to support mpiMotionStart(...)
with the MPIMotionAttrMaskSYNC_START attribute. SYNC_START
is used for Motions that include more than one Axis. All Axes
will begin simultaneously. For those axes that finish first,
a delay frame will be added to the end of the move.
Move Types: S-Curve,
Trapezoidal
|
|
|
MEI Motion Attributes
|

|
MEIMotionAttrEVENT
|
|
The MPI has been extended to support mpiMotionStart(...)
with the MEIMotionAttrMaskEVENT attribute. This mask allows
the user to specify an MPIEventMask during a motion.
|
MEIMotionAttrFINAL_VEL |
|
The MPI has been extended to support mpiMotionStart(...)
with the MEIMotionAttrMaskFINAL_VEL attribute. This mask allows
the user to specify a non-zero target velocity for point to
point motion types.
|
MEIMotionAttrNO_REVERSAL |
|
The MPI has been extended to support mpiMotionStart(...)
with the MEIMotionAttrMaskNO_REVERSAL attribute. This mask
prevents a motion profile from changing direction.
|
MEIMotionAttrHOLD |
|
The MPI has been extended to support mpiMotionStart(...)
with the MEIMotionAttrMaskHOLD attribute. The HOLD attribute
prevents execution of a Motion. The HOLD attribute is applied
at the beginning of the motion (one HOLD frame) before the
execution of the point list. This prevents execution of the
Motion until the HOLD frame is disabled.
The HOLD attribute is used to synchronize the start of motion
with a host function call, XMP internal variable, or Motor
Input state change. More than one Motion Supervisor may be
synchronized. The type field of the MEIMotionAttrHold{} structure
determines whether the synchronization comes from a host call
(meiControlGateSet(), see below), internal variable (Axis
Status, Position, etc.) or a Motor Input signal (transceiver,
home input, user input, etc.).
Gated Moves: If the value of type is MEIMotionAttrHoldTypeGATE,
the motion will be held until a call to mpiControlGateSet()
is made with the closed parameter set to FALSE. When a MEIMotionAttrHoldTypeGATE
is used, the source.gate field of MEIMotionAttrHold{} must
be set to the gate number (0-31). The same gate number must
be used for the gate parameter of meiControlGateSet().
Input Hold Moves: If the value of type is MEIMotionAttrHoldTypeINPUT,
the motion will be held until then value of the internal Xmp
variable specified (pointed to) by source.input bitwise anded
with source.mask matches source.pattern.
Motor Input Hold Moves: If the value of type is MEIMotionAttrHoldTypeMOTOR,
the motion will be held until the value of the internal dedicated
input word (Motor[n].IO. DedicatedIN.IO) for the motor specified
by source.motorNumber bitwise anded with source.mask matches
source.pattern.
The timeout field of MEIMotionAttrHold{} will cause the
motion to start after the specified timeout period (in seconds),
even if the other hold criteria have not been satisfied. A
value of zero for timeout causes the timeout feature to be
disabled and forces the motion to wait for the hold criteria
(gate open, or pattern match).
The MPI expects an array of hold attributes specifying separate
attributes form each axis of a motion supervisor. All axes
holding with the same hold attributes (same gate, same input,
mask, and pattern) will start motion in the same sample even
if the moves are specified using different motion supervisors.
|
MEIMotionAttrOUTPUT |
|
The MPI has been extended to support mpiMotionStart(...)
with the MPIMotionAttrMaskAPPEND attribute. This mask allows
the user to set or clear bits during a motion. This motion
attribute allows a Motion to change the state of a register
in the controller memory. This configures a frame to toggle
an output bit as a move begins.
|
|
|
|
|