Motion Concepts



The XMP software architecture is composed of separate modular objects that can be associated in a variety of ways to create custom systems. For example, a gantry or robot using more than one motor for a physical axis may be configured to allow the application to treat the axis as a single entity, simplifying the geometry. This flexibility does not come without a price, however, since configuration of complex systems involves a fairly large number of parameters. To overcome the need to configure simple "standard" systems, the XMP is pre-configured with a factory default configuration which can be used for most simple systems.

To understand how to create a custom XMP configuration, you must understand the component objects involved. Custom configurations are created using four types of objects: Motors, Filters, Axes, and Motion Supervisors (called Motion objects). To simplify implementation of the XMP architecture, we assumed that the association of Motors, Filters, and Axis would be more or less static (created during initialization), while association of Axes with Motion Supervisors would be more dynamic (created or modified during runtime).


Maps & Links

The relationships between the controller objects are determined by Maps and Links associated with the objects. The Maps are used by the MPI to define the object relationships and usually have the form of bitmaps. The following MPI functions are used to read and write these Maps.

mpiMotorAxisMapGet(...) .
mpiMotorFilterMapGet(...) mpiMotorFilterMapSet(...)
mpiFilterAxisMapGet(...) mpiFilterAxisMapSet(...)
mpiFilterMotorMapGet(...) mpiFilterMotorMapSet(...)
mpiAxisMotorMapGet(...) .
mpiAxisFilterMapGet(...) mpiAxisFilterMapSet(...)

Note that there are no functions to write any Motor-Axis or Axis-Motor maps. This is because these relationships are defined by the maps of the associated filters.

The links are used by the controller's objects to determine the sources for data generated by other objects. These links generally have the form of pointers that reference the source of the data or indexes that identify the sourcing object.

Motor Links

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:


Filter Links

The Filter object uses the difference between command and actual positions to calculate a control output (control algorithm). Both the command and actual positions used in these calculations can be defined as a linear combination of positions from 2 different sources.

MEIFilterConfig{}.Axis[] determine the sources and weight factors for these position inputs. On each sample, the following equations are used to determine the position error and command position used by the Filter:

The command velocity and acceleration used in feedforward calculations is also determined from MEIFilterConfig{}.AxisInput[], using the following equations:


Axis Links



The actual position of an axis can be calculated as a linear combination of position values from two separate sources. On each sample, the following equation is used to compute the Axis' actual position: