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 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. See Software Release Notes.
The MPX is easier to use for most tasks, but for more complicated tasks users may find it easier to use the MPI instead of the MPX.
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 accessing .NET is unacceptable
- If you are programming on a platform other than Windows
|
Otherwise, you can program using the MPX.
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.
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.
Can an XMP-SynqNet controller generate a hardware interrupt that can be serviced by the Event Manager?
The XMP-SynqNet controller generates hardware interrupts whenever a controller event is generated. To configure which controller events generate interrupts, use the mpi<Object>EventNotifySet(...) functions. Ex: mpiMotorEventNotifySet
MEI does not control the interrupt request line (IRQ) number assigned to the controller. The IRQ number is assigned by either the computer BIOS or by the operating system. Contact the motherboard manufacturer and/or WindRiver if you need to control the assignment of the IRQ numbers. You can also try to change the slot assignments of the installed PCI cards until you find an acceptable IRQ configuration. However, there is no guarentee that changing slot assignments will work.
|