What is the MPI?
The Motion Programming Interface (MPI) defines
a set of object-oriented, C-language functions and data types that
you can use to develop motion control applications. The MPI is designed
to be independent of the motion controller hardware used, as well
as the platform (operating system & compiler) on which the motion
control application is built.
To support the MPI, a platform must be 32-bit
(e.g. Windows NT). Most 32-bit platforms are capable of multi-threading
and multi-tasking, and the MPI has built-in features that simplify
the design and development of these types of applications.
Why was the MPI developed?
The MPI is a C language, object-oriented interface
that makes it easy to develop motion control applications that run
on different types of platforms. Programs written using the MPI
range from simple, single-task, single-controller applications to
complex multi-task applications that use mutiple motion controllers.
The MPI hides platform-specific and firmware implementation details
while providing a rich set of functions to control motion at any
desired level.
What are the prerequisites for learning
the MPI?
You do not need to be a master programmer, but
you do need a solid foundation in C. The XMP is a C-programmable
motion controller that uses object-oriented programming. Familiarity
with C will allow you to quickly attack potentially complex implementation
issues. Some familiarity with the basic concepts of motion control
is required to understand how to use the sample applications. With
no concept of motion control, it is dificult to know what parameters
to set to make a motion.
What is the difference between 'mpi'
and 'mei' data types and methods?
The purpose of the MPI/MEI prefixes was to prevent
any possible conflict with any symbols already defined in the supported
operating systems and in C-language and third-party libraries.
|
- MPI/MEI - data symbol (data type)
- mpi/mei - code symbol (method)
|
The "MEI/mei" prefix denotes additions or extensions
to the MPI that usually pertain to the XMP. For example, the MEIAxisConfig{}
data structure contains XMP-specific axis configuration parameters
that extend the MPI-defined axis configuration parameters (beyond
what is already defined in MPIAxisConfig).
Earlier versions of the MPI classified objects
or features as generic (MPI) or target-specific (MEI). Generic features
were supposed to apply to any motion control design, while target-specific
features were only applicable to the XMP. This differentiation has
been abandoned for the most part, but backward compatibility has
caused some separation of these features to remain. MPI data descriptions
are contained in header files in the MPI/include directory while
MEI data descriptions are in XMP/include. The documentation emphasizes
the type (MPI or MEI) for each feature.
Does the MPI work with Visual C++ .NET?
Yes, Visual C++ .NET can compile non-.NET applications. The MPI will continue to function just as it did with non-.NET compilers. The MPI can also be integrated as unmanaged code into managed .NET applications.
Is the MPI compatible with .NET?
Yes, the MPI can work together as unmanaged code with .NET applications.
Are there any limitations in using the MPI with .NET?
Yes. Since the MPI is an unmanaged library, pure managed applications cannot access it.
Is there an existing .NET version of the MPI?
No. The connection between the MPI and .NET applications must be managed by the user.
Users interested in using a .NET library should consider using the MPX, Kollmorgen’s .NET library for accessing SynqNet controllers.
What is the MPX?
The MPX is a .NET API (application programming interface) for SynqNet controllers. It is an alternative way of writing code for users who do not want to write C code using the standard MPI libraries.
What is the difference between the MPI and MPX in terms of functionality, authoring code, etc.?
The MPI can only be used by C and C++ compilers while the MPX can be used by any language that supports .NET -- including .NET scripting languages.
The MPX only runs on Windows while the MPI can be used on many more operating systems.
The MPX is easier to use for most tasks, but for complicated tasks it can be more difficult to use, in which case it is better to use the MPI.
The MPX is programmed using the MPI, so everything that is possible with the MPX is possible with the MPI.
Should I use the MPI or the MPX to author code?
The MPX is easier to use for most tasks. There are some tasks that the MPX does not currently support where the MPI would need to be used. Typically, you should program using the MPI if one of the following is true:
|
- If the MPX does not provide the functionality you need
- If the overhead of running an ActiveX control is unacceptable
- If you are programming on a platform other than Windows
|
Otherwise, you can program using the MPX.
Should I save application-specific parameters to firmware?
Though this is possible and while it may simplify software design, it can become problematic from a business standpoint in the future. There are three ways to implement application-specific parameters within your application:
|
Save these parameters to firmware.
- Potential Obstacle: Parameters for machines may need to change. Your customers may demand that firmware must not change. Also, you may have to fill out a lot of paper work or go through a lot of red tape in order to implement such changes.
- Potential Obstacle: You decide to upgrade to a new version of the MPI and firmware. Then you will have to load the application-specific parameters into the firmware with Motion Console or config.exe.
Hard code these parameters into your application code.
- Potential Obstacle: Parameters for machines may need to change--especially if you are designing one piece of software intended to work with multiple machines. Though you don't have to change the firmware, you will need to change your application's code and possibly send customers a new copy of your application.
- Problem Solved: You no longer have to worry about loading the application-specific parameters into new versions of firmware.
Have your application load these parameters from a configuration file.
- Potential Obstacle: More effort needed in software design.
- Problem Solved: You can send customers new parameters without having to change the firmware or your application.
- Problem Solved: You no longer have to worry about loading the application-specific parameters into new versions of firmware.
Have your MPX application load these parameters from an MPX configuration file.
-
Problem Solved: Less effort needed in software design as saving and loading MPX configuration files is part of the MPX library and simple to accomplish.
-
Problem Solved: You can send customers new parameters without having to change the firmware or your application.
-
Problem Solved: You no longer have to worry about loading the application-specific parameters into new versions of firmware.
|
At Kollmorgen, we strongly encourage loading configurations from files. For the MPX, we recommend using MPX configuration files. Please feel free to talk to one of our applications engineers if you have any further questions.
Troubleshooting PCI Bridge Device Installation Error?
See the Troubleshooting PCI Bridge Device Installation Error page.
How can I perform a silent installation
of MEI software (MDK) in a user defined directory?
In the command line prompt, type the following:
Win32Setup
/v"/qn INSTALLDIR=\"C:\Program Files\Mei\" INSTALLLEVEL=32767" /s
How can I verify that MEI software
(MDK) has already been installed?
Check the Winnt\System32 directory to see if the
mpivc*.dll file exists. We currently use the mpivc40.dll, mpivc60.dll,
and mpivc60d.dll, depending on the version of software installed..
When the MEI software is uninstalled, the MPI *.dll is removed.
What is the difference between a
node and motion block on a SynqNet Motion Network?
A node is a place on a network where something
happens. For example, CAN is an I/O network that connects I/O nodes
(places to hook up digital or analog inputs and outputs).
A motion block refers to a node on a SynqNet
Motion Network that is related to motion. A motion block has connections
for motors, encoders, I/O, etc.
Are DSP controllers compatible with Windows XP?
ISA bus DSP controllers have no known compatibility issues on Win XP Service pack 1.
Motion Engineering does not support PCI bus DSP controllers with Windows XP. Robotic Systems Integration has developed a device driver and software development kit for PCI bus DSP controllers. Please contact Robotic Systems Integration for more information.
|