Important Things to Know for MechaWare 04.00.01

Release Type
MPI Version
Release Date
Production Release


The MechaWare 04.00 release contains several new features and improvements since the 03.02.xx series. This section provides a summary of the changes that were implemented for the 04.00 release.


Important Notes and Requirements

Note: MechaWare is not supported on XMP and eXMP-SynqNet controllers.

Installation Note: The MPI 4.0 library must be installed before installing MechaWare. For more information about instructions on installing the MPI Library, see Installing the Motion Development Kit (MDK).

WARNING! MechaWare 04.00 requires Microsoft Visual Studio 2005 with Service Pack 1. For more information, see System Requirements.

MPI 4.0 Support

MechaWare 4.0 is built on top of the MPI 4.0 software library. Several MPI 4.0 key features apply to MechaWare 4.0. For more information about MPI 4.0 features, see Important Things To Know.

64-bit Trajectory Calculations

The trajectory calculator of the controller was upgraded to use 64-bit double data types from 32-bit float data types. This increased resolution provides the following benefits:

  • Point-to-Point move distances are not limited to 31-bits
  • Smooth trajectory at move velocities greater than 24-bits
  • Command and Actual Position delta per sample period is not limited to 31-bits
  • Double precision variables are limited to 52-bits for the mantissa.

Note: If the trajectory parameter values are beyond +/- 52-bits, the MPI and controller double position data has precision loss in the least significant bits.

64 Model Objects

MPI and controller firmware was expanded in MPI 4.0 to support up to 64 axes (MS, Axis, Filter, and Motor objects). MechaWare was also upgraded to support up to 64 Model objects.

The memory allocation of the controller was changed from static to dynamic which allows scaling to fit the motion system. While dynamic memory allocation provides exact fit flexibility, it also requires initial planning for applications that need to support multiple network topologies or need to scale the object counts of the controller during operation. The control object count configuration now has two parts, dynamicMemAlloc and enabled. The dynamicMemAlloc count determines the memory allocated to the number of objects and enabled determines how many objects are processed by the controller.

During SynqNet network initialization, the memory of the controller is dynamically allocated and initialized with dynamicMemAlloc and enabled object counts (MS, Axis, Model, Motor, etc.) matching the discovered network topology. For example, if 2x nodes are discovered with 2x motors each, then the controller is automatically configured to allocate and enable 4 MS, Axis, Model, and Motor objects.

If your application uses the discovered object count, then no control object count configuration is necessary. If it is desired to decrease the number of controller objects, reduce the enabled count to reduce the processing load of the controller. To increase the number of controller objects, re-configure the dynamicMemAlloc and enabled object counts of the controller.

WARNING! Configuring the control dynamicMemAlloc object counts will clear the dynamic memory of the controller and any configurations previously written to the dynamic memory of the controller is lost.

Note: It is highly recommended to configure the control dynamicMemAlloc object counts first before configuring other objects.

For more information, see Addressing, MPIControlConfigDynamicMemAlloc, and MPIControlConfigEnabled.

Integrated Flash Interface

The MechaWare C++ API was simplified to reflect changes in the way the MPI 4.0 manages flash. The controller’s flash provides non-volatile storage for the controller’s executable code (firmware and FPGA) and configurations.

Note: The MechaWare C++ API no longer provides methods for saving specific objects to flash. Instead, user applications should use mpiControlFlashSaveAll(…). The mpiControlFlashSaveAll(…) copies entire contents of the dynamic memory configuration including MechaWare Models to flash. These Models are automatically restored from flash on reset.

For more information, see the diagram Saving/Clearing a SynqNet Topology and mpiControlFlashSaveAll.

Installation (Directories, Device Driver, and Environment Variables)

The InstallShield distribution package was updated to support future multiple MechaWare version installations and new installation directories. If installing a new version, the InstallShield package provides an option to uninstall the old version or install the new version to a different directory. If multiple versions are required, the shortcuts and environment variables are updated to reflect the latest installation. If switching between versions is desired, it is required to configure the environment variables manually.

The default installation directory was changed to:

C:\Program Files\Danaher Motion\MDK\xx.xx.xx

Note: Where xx.xx.xx is the version number.

The new directory structure and contents are as follows:

\controller – Controller’s firmware, firmware address map, and FPGA files.
\Win32 – Libraries, utility programs, and executable programs for the Windows platform.
\MechaWare – MechaWare header files, sources, Matlab files, and examples.

Software Runtime License

The controllers are configured during manufacturing to enable features that are specified by the order. The number of axes, MechaWare, and motion control (filter and data recorder objects) features are enabled by the controller runtime license. The MPI verifies the controller’s runtime license and automatically restricts usage to the licensed features.

Note: Enabling an unlicensed feature returns a runtime license error. To view the licenses for your controller, use the version.exe utility program or call the mpiLicenseInfoText(…) method.

Note: It is strongly recommended to purchase a full-featured runtime license for your development controllers. Once your machine transitions to the manufacturing stage and specific details are finalized such as how many axes and whether MechaWare are used, you can then purchase future controllers with only the features your machine requires.

For more information, see Controller Runtime License.

Reorganized MechaWare Block Library

This release of MechaWare organizes blocks in categories found in the Simulink Library Browser to make it easier to find the block you need. When using .mdl files created with prior versions of MechaWare, you will need to double-click on “bad link” blocks in Simulink to add the category to their names. Additionally, some block names have changed and will require updating:

"Output " was changed to "Torque Output"
"Error" was changed to "Position Error"
"Asymetric Clip" was changed to "Asymmetric Clip"
"Sum (2 Input) " was changed to "Sum (2 Input)"
"Memory Out User Buffer " was changed to "Memory Out User Buffer"

Note: This change only affects Matlab/Simulink. The MechaWare Model Downloader uses a different method to identify blocks and is not affected.

New MechaWare Utility Library

MechaWare 4.0 includes the mwutils library, which provides C functions for common operations on MechaWare blocks and models. The library is provided in both pre-compiled and source form, allowing linking of your application to the library or inclusion of the source code.

Improved MechaWare Samples

The Samples directory of the MechaWare install includes a variety of new examples of how to use MechaWare. These samples have Visual Studio build files and models to download, as appropriate. For more information, see the individual sample directories located at C:\Program Files\MEI\MDK\04.00.01\MechaWare\Samples.

Enhanced Simulink Interface

The following improvements to the MechaWare interface in Simulink were implemented to provide a better user experience.

  • Subsystem Block Support – MechaWare 4.0 supports Subsystem blocks, both without and without mask parameters.
  • MechaWare Model Downloader – Extended to import variables from the Matlab workspace, allowing models to reference workspace variables.
  • Simulation Only Inputs and Outputs – Certain blocks with simulation-only inputs and outputs were added, allowing simulation of system behavior in Matlab.
  • Block Ordering – users can define their own block ordering, in the event that the Model Downloader’s ordering algorithm does not match their intentions.
  • Drop-Down Selection of Enumerated Types – Several of the enumerated type fields in MechaWare blocks were replaced by drop down lists, allowing the user to select the appropriate values.

Inverse Kinematics Support

MechaWare 4.0 offers a variety of new blocks to allow users to design applications with inverse kinematics support. This release fills in the gaps in math blocks by adding the remaining inverse trigonometric functions. Combined with the Actual Position Output and Origin blocks, these provide the model designer everything they need to command moves and set limits in world coordinates rather than joint space. Several examples of these blocks are found in the Samples director located at C:\Program Files\MEI\MDK\04.00.01\MechaWare\Samples.

Integration with BodeTool

MechaWare 4.0 was designed alongside the new 4.0 version of the BodeTool, leading to better integration between those two utilities. The BodeTool can now recognize the differences between MechaWare firmware and non-MechaWare firmware, and displays the appropriate information accordingly. The BodeTool can also configure parameters for the PID, PIV, and BiQuad blocks in MechaWare firmware, as well as select which noise sources to be used for measurement. Additionally, the redesigned Torque Output block and new Demand block eliminates the need to add Noise blocks to your models.


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