Object Descriptions

Control Objects | Axis Objects | Motion Objects | Motor Objects | Filter Objects
Event Objects | Notify Objects | EventMgr Objects | Recorder Objects
Sequence Objects | Command Objects | Coordinate Systems

Control Objects

Think of a Control object as a "Controller" object, which is typically a single circuit board residing in a PC or an embedded system. A Control object manages the motion controller.

Every application creates a single Control object per controller.

A Control object can read and write device memory using I/O port, memory-mapped or device driver methods. All communication with motion controller firmware is handled by a Control object. A Control object can also a memory snap-shot of a controller stored in a file.

For the case where the application and the motion controller device exist on two physically separate platforms connected by a LAN or serial line, the application creates a client Control object which communicates via remote procedure calls with a server.

Axis Objects

An Axis object is associated with a single physical axis on a motion controller, and corresponds to a geometric axis used for calculation of a path of motion. An Axis may be controlled by one or more Motion objects.

The concept of an Axis is a "geometric" idea, but the main purpose of an Axis object is to generate the desired path (trajectory calculations, i.e., to generate command positions) on every sample, using the path-planning data provided by a Motion Supervisor. An Axis object is mostly a computational block.

The Filter and Motor objects ensure that the command path (calculated by Axis) is followed, and that the signals get to the right motors.

Motion Objects

Think of a Motion object as really a "Motion Supervisor" object.

The Motion (Supervisor) object corresponds to a coordinate system or collection of axes. The primary function of the Motion Supervisor is to provide data in a synchronized manner to the Axis objects for use in path creation.

A second important function of the Motion Supervisor is to monitor the status of all of the Axes under its control (and all of the Motors, and Filters associated with these Axes), so that motion can be stopped or resumed in a controlled manner, especially in the event of errors. The Motion Supervisor is the primary interface for a your MPI application with respect to motion. A Motion object maintains an ordered list of Axis objects, which specify the coordinate system for all motions to be performed with that Motion object. When a motion is started, the type of motion is specified (trapezoidal, S-curve, parabolic, etc.) along with type-specific motion parameters. A Motion can be started directly (by calling a Motion method), or started when the Motion is associated with a Command that is called by a Sequence (that is executing). An Axis object may be controlled by more than one Motion object, but only one of those Motion objects may be active at a time.

Motor Objects

The Motor object corresponds to a physical motor used to create motion. The primary function of the Motor object is simply to provide an interface to the physical hardware associated with the physical motor.

The data of the Motor object contains the state of feedback (primary & secondary), dedicated I/O (limit switches, home sensors, amplifier control and status signals (demand, amplifier enable, fault, warning, step and direction), and motor related general purpose digital I/O.

Filter Objects

The Filter object is concerned with the controller's closed-loop servo control loop, i.e., what should the controlled output be based on the position error? The Filter is primarily a computational block, taking command positions and actual positions and computing errors.

The Filter object calculates the demand output (representing a torque or velocity command)) that controlls a physical motor or motors, using data (command positions) calculated by the Axis object. PID, PIV and Biquad filter calculations are all parts of the Filter object.

Event Objects

An Event object contains information about an asynchronous event that has occurred. Event messages are generated and stored in the controller’s memory buffer.  When an event occurs, an interrupt is generated to the host and the control event service retrieves the event messages and distributes them to the application threads waiting for a notification. .

Notify Objects

A Notify object is used by a thread to wait for event notification.You can configure a Notify object to wait and look for specific events and for specific event sources.

Control Event Service

The Control Event Service thread does the following:

  • Obtains asynchronous events from the Controller that the Control object is associated with
  • Generates event messages for enabled event sources
  • Awakens any threads that are waiting for events

Recorder Objects

The Recorder objects allow you to record any data from the controller’s memory.  The data is stored in a controller memory buffer and retrieved by the host application. Multiple recorder objects can be enabled and can be started/stopped from the application or by using trigger conditions in the controller memory.

Sequence Objects

A motion application can issue individual motion commands, or can create a series of motion commands (that are executed in sequence by the controller). Essentially, you can use the Sequence object to download commands that are executed by the XMP controller, and not executed by the host.

Using the MPI, you can create a sequence of commands (a Sequence object), using high-level motion (e.g., trapezoidal motion profile on axes 2 & 4), using low level work (e.g., write 0x00043433 into memory address 0x2000).

A typical Sequence might be:

  1. Start a motion
  2. Wait 60 msec
  3. Turn on a specific I/O bit
  4. Wait for motion to finish
  5. Wait for another I/O bit
  6. Start a new motion

A Sequence object is always executed starting with the first command. After completing the first command, subsequent commands can initiate a new motion, set values in firmware memory, execute a delay for a specified period, branch to a different command in the sequence, wait for a condition to be met, and so on.

Command Objects

A Command object specifies a single action that is executed by a Sequence, such as motion, conditional branch, computation, time delay, wait for condition, etc. Any Command object that specifies motion must have a Motion object associated with it.

Coordinate Systems

To create a coordinate system for a motion application, you map the Axis numbers to the Motion Supervisor in the controller’s memory. The axis count and list of axis numbers define the coordinate system.

Introduction | Motion Concepts | General Definitions | Naming Conventions | Object Descriptions

       Legal Notice  |  Tech Email  |  Feedback
Copyright ©
2001-2010 Motion Engineering