Important Things to Know for MPI 04.0x

Release Type
MPI Version
Release Date
Production Release
11 March 2013
Production Release
30 September 2012


  The MPI 04.02 and 04.03 releases contain several new features and improvements since the 04.00.xx series. This section provides a summary of the changes that were implemented for the 04.02 and 04.03 releases.
  Attention: Starting with the 04.02 release, the MPI will be built using Visual Studio 2010. Legacy support for Visual Studio 2005 (SP1 or later) is also provided in this release. This transition is outlined below. Additional information is provided on the System Requirements page.

New QMP-Series Support

The MPI 04.02 and 04.03 releases add support for the new QMP controllers in addition to ZMP controllers. More information about these controllers can be found at the following links:

Path Motion Improvement

A new feature for this release of the MPI is Geometric Path Motion. This feature allows the user to define a desired path to the final position. This is useful for applications that need to move an end effector in 2D or 3D space. Examples include robots, laser cutting or water jet cutting machines, welding, painting, gluing, and CNC machining.

More information about this feature can be found on the following pages:
MPI Topics - Geometric Path Motion
MPI API Reference - Geometric Path Motion

See also: mpiGeometricPathCreate | mpiGeometricPathParamsGet | mpiGeometricPathParamsSet | mpiGeometricPathAppend | MPIGeometricPathElementAttributes | MPIGeometricPathElementAttrMask | MPIGeometricPathMessage | MPIGeometricPathParams | MPIGeometricPathPlanType.


The AKD SynqNet series of Servo Drives are now compatible with the MPI starting with release 04.02. These fast, feature-rich, and flexible drives easily integrate into any application.

Some important things regarding AKD-SQ:

  • Minimum software versions are:

    MPI: 04.02.00 (includes controller firmware version 899A1)
    AKD firmware AKD-B-NBSQ-V01-07-00-002 (includes FPGA FP0008_0301_00_00)
    AKD WorkBench

  • The MPI version data for the FPGA does not report the same information as WorkBench. The SynqNet ID and version report only the SynqNet library version (the SynqNet modules within the AKD FPGA). WorkBench reports the full name and version of the complete FPGA image. For example, AKD-B-NBSQ-V01-06-06-000 contains FPGA FP0008_0301_00_00 which has module 0xDA000003 version 0502_02_01 (see below)

    SynqNet version information:
    FPGA ID : 0xDA000003
    FPGA Ver : 0x04020502
    FPGA Branch : 0x00000201

    Workbench version information:
    FPGA Version : FP0008_0301_00_00
    Operational image : FP0008_0301_00_00:SQ_VER:DA000003_0502_02_01

  • Standard releases will support only the “Rev 9” AKD Control Board (PN AKD-x-NBxx). Contact Kollmorgen if you have an older “Rev 7” control board (PN AKD-x-NAxx).

  • The AKD-SQ uses a single “drive firmware” download file, which includes both “operational firmware” and “operational FPGA” images. The download filename for AKD-SQ will use the format AKD-B-NBSQ-Vxx-xx-xxx.i00. This file may be downloaded using WorkBench (over the service port) or over SynqNet (using MotionConsole or sqNodeFlash.exe utility). Since the FPGA image is part of the “drive firmware” download, the “SynqNet” FPGA download is not necessary and is not supported by the MPI.

  • AKD firmware image files (which include FPGA) may be downloaded over SynqNet or via WorkBench. The SynqNet download requires about 12 minutes for a typical user file (contains operational firmware and FPGA). Download using WorkBench requires about 4 minutes.

  • With AKD-SQ, each SynqNet initialization (and therefore controller reset such as meiReset.exe) takes 30 to 60 seconds due to the AKD firmware initialization process. Improvements are proposed but not scheduled at this time.

  • For some absolute feedback devices, the AKD-SQ may not sign-extend the initial absolute position sent to the MPI SynqNet controller. For example, an AKM motor with Endat 2.2 multi-turn absolute feedback keeps a 12 bit multi-turn count. At intialization, the AKD returns a 44-bit absolute value which is NOT sign extended. In this case, absolute position works as expected while using positive positions. But if the motor is moved to a negative position such as “-1000”, and the controller is reset, the initial position will become (2^44)-1000. Other feedback devices with a full 16-bit multi-turn count will return a sign-extended absolute position, and will handle negative values as expected.

For more information on the AKD SynqNet drive, reference the communications manual found here.


The compare module generates an output signal based on comparison to a position feedback value. When the position exceeds the compare value, the module can generate an output pulse or state (pulse width set by time or position). The compare module currently runs in streaming compare mode. Additional functionality is planned for future releases.

More information about this feature can be found on the following pages:
MPI Topics - Compare
MPI API Reference - Compare

04.03 - New Feature: Compare Delta (Divide-by-N)

The compare delta (Divide-By-N) mode generates a sequence of output signal pulses based on position feedback (at hardware speeds). For example, the pulses might begin at position 1,000,000 and repeat every 262,144 (2^18) counts until they stop at 10,000,000.

The divide-by-N feature is typically used to trigger external devices, such as a camera, at precise locations along an axis, with very high accuracy and low latency.

Note at introduction, only the AKD-SynqNet drive supports this feature. AKD-SynqNet firmware must be V01-08-00-005 or later.

Windows 7 32-bit and 64-bit Support

The 04.02 release adds support for operation on 64-bit Windows 7 machines. There are separate installers, named appropriately, which includes either a 32-bit device driver or a 64-bit device driver.  Be sure to download and install the appropriate .MSI installer file for your particular version of Windows 7.

Note:  The device driver is the only difference between the installers

Microsoft VS2010 support

The 04.02 release of the MPI introduces support for Microsoft Visual Studio 2010. For the first time, the MPI library is built using Visual Studio 2010. For our customers using earlier versions of Visual Studio, the dll libraries and MDK solution files are provided for VS2005 with service pack 1 or later. Note that the utilities have also been built using VS2010, but these are still compatible with VS2005. Both of these versions of Visual Studio have their own respective directories as part of the MPI installation. Use the appropriate directory when building your applications with your preferred version of Visual Studio. The screenshot below shows the new directory structure.

figure: MPI install directory structure

Interface Changes

New Data Types

Several data types have been changed in versions 04.02 and 04.03. The table below illustrates these changes. Use this as a reference when porting your existing code to version 04.02 or 04.03. The API reference page has also been updated to reflect the correct data types for each object.

Old Data Type   New Data Type  
long int32_t
unsigned long uint32_t
short int16_t
unsigned short uint16_t
long long int64_t
unsigned long long   uint64_t


Certain system architectural restrictions may limit how a motion control system can be accessed. In such cases, a possible solution is to use a remotely installed motion controller such as an eXMP-SynqNet and establish communication to the device via a Client-Server connection over TCP/IP. It is an ideal solution for "headless" type controllers providing remote diagnostic capability and control. You can also use one host computer to control multiple remote controllers.

Client/Server has been updated in the 04.02 and 04.03 releases to support multiple client threads. The mpiThreadCreate method was modified to accept a control object as an argument. These changes allow each client thread to have a separate server thread. The following prototype should be used when implementing client/server:

MPI_RESULT mpiThreadCreate(MPIControl control, MPIThread, MPIThreadOptions *options);

To learn more about this feature, click here.

New mpiAxisCommandOriginSet Method

A new method has been added that implements the common operation of adjusting the command position by changing the origin. mpiAxisCommandOriginSet sets the command position without changing the position error. As a result, no jumps in motion occur when this method is used.

New features for User Limits

Several useful new features have been added to the User Limits:

  1. Outputs have been extended to support 16, 32, and 64 bit data types.
  2. Up to four outputs can be set by a single User Limit. (MPIUserLimitOutputTypeCUSTOM_ARRAY)
  3. New condition types have been added (MPIUserLimitConditionTypeMOTION_STATUS, MPIUserLimitConditionTypeAXIS_STATUS, and MPIUserLimitConditionTypeAXIS_MOVEID)
  4. A disable condition that disables the limit has been added.

Power-On Self-Test (POST)

Power-on Self-Test (POST) is a test that the QMP firmware executes every time the board is powered up (but NOT on meireset) to verify that the hardware is functional. With this release, only the memory is checked, but more test cases will be added in the future. If POST succeeds, the POST LED will be solid. If it fails, the POST and Dubug LEDs will flash the number of times corresponding to the failing test (1-3). In addition, the controller will not boot up and the MPI utility ‘version’ will display an error code corresponding to ‘Control: Power-on Self-Test Failed’. POST was optimized in versions 04.02.02 and later to take just a few milliseconds to complete.


HID tests are executed by stopping the controller and putting it in a state to receive HID commands. A software utility is provided to initiate and execute HID tests. Once the tests are completed, the controller must be reset (with meiReset) before attempting to use it for normal operation. At this time, only memory tests are supported; more tests will be added in future releases.

mpiControlConfigSet (04.03)

MPI objects allocated prior to an mpiControlConfigSet call, in which dynamic reallocation is performed, will be considered "obsoleted". The user will have to delete these objects and reallocate them.

If it is desired to capture the configuration of these objects, the user will have to retrieve the configuration using, say, mpiAxisConfigGet on an MPIAxis object, PRIOR to calling mpiControlConfigSet. The stored configuration can be applied on the newly obtained MPIAxis object AFTER calling mpiControlConfigSet.

If an "obsoleted" object as described above is used in an MPI method, the error returned is:

ERROR 0x631: Control: Object cannot be used after reallocation

Unsupported Features


At the time of the release, the development of SimServer had not been completed. This feature is released as a standalone package and is not included in the MPI distributables. SimServer is planned to be completed and supported in future releases.


meiConfig.exe and meiConfigGUI.exe were temporarily removed from the MPI in the 04.02.00 and 04.02.01 releases. Development of these utilities has been completed and they are available in the 04.02.02 and later releases.

Note: meiConfig is supported in 04.02.02 and later releases.

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