.

Release Note
MPI Library Version 03.04.03

Release Type
MPI Version
Release Date
Patch Release
03.04.03
08Jan2007
Patch Release
03.04.02
22Nov2006
Patch Release
03.04.01
27Oct2006
Production Release
03.04.00
16Aug2006


  Table of Contents
    Notes
      System Requirements
Software Installation Instructions
Important Things to Know - This section highlights the most important changes in this release.
     
    New Features
     

Version 03.04.03
     Support for the Yaskawa SGDZ-BS61/62/63 - MPI2003

Version 03.04.02
     Drive Firmware download support for the Kollmorgen CD drive DSP Rev-G - MPI2010

Version 03.04.01
     Support of SqDC Warning Codes/Messages - MPI1937
     Sanyo Denki Q-Series and R-Series SynqNet Drives - MPI1935

Version 03.04.00
     New Functions for Actual and Command Position Data - MPI1896
     Glentek Omega Drive Update Rate Options - MPI1895
     Support for Kollmorgen SqDC Drive - MPI1874
     Add Pn600 drive parameter for SGDS-72/75 drives - MPI1819
     New SynqNet HotReplace Feature- MPI1820
     New Flash Origin Methods - MPI1809
     Support for Node I/O Fault bits on SQID Nodes - MPI1807
     Addition of Configurable Demand Modes - MPI1796
     64-bit Position - MPI1795
     Support for Kollmorgen S1800 Drive - MPI1794
     Maximum Number of Controllers - MPI1788
     Support for Yaskawa SGDS75A Drive - MPI1780
     Source for Axis and Motion Supervisor States - MPI1777
     Volatile Buffer in Controller's External Memory - MPI1739
     Addition of Methods for Decoding Node I/O Addresses - MPI1715
     Addition of Drive Monitor Information to the MPI - MPI1702
     Addition of compatibility check between client/server - MPI1684
     Support for Kollmorgen S600 Drive - MPI1592
     Support for Kollmorgen S300 Drive - MPI1591
     Axis Frame Buffer Status - MPI1254
     Controller Statistics Methods - MPI1232


    General Changes
     

Version 03.04.03
     Multi-turn reset without network shutdown for Yaskawa SGDS and SGDZ-MD drives - MPI1987
     Support for additional drive parameters for the S200 drive - MPI1981

Version 03.04.01
     Revision of frame buffer loading to decrease likelihood of "Out-of-Frames" events - MPI1950
     S200 Drive Brake Logic - MPI1936

Version 03.04.00
     Motor I/O Brake source inverted with SSI FPGA - MPI1871
     Cable Length Discovery Improvement - MPI1850
     Elimination of Control word in from OR'd with Axis.Status - MPI1824
     Motor Stepper Configuration Hardware Check - MPI1790
     Cam Motion now uses Double Data Types - MPI1764
     Change of S200's Default Secondary Feedback - MPI1754
     New defaults for MEIEventStatusInfo - MPI1478
     SynqNet Timing Improvements - MPI1176


    Fixed Bugs
     

Version 03.04.03
    meiSynqNetPacketConfigSet(...) returns "Service cmd response timeout" - MPI2075
    meiSqnodeDriveParamStore(...) times out for Kollmorgen S1800 drive - MPI2028
    Frame Buffer Under-run with mpiMotionModify + MPIMotionTypePVT - MPI2020

Version 03.04.02
    S200 drive with absolute feedback does not initialize correctly - MPI2008
    atTarget not being set with PVTF - MPI1996

Version 03.04.01
    Server.exe utility occasionally does not exit - MPI1985
    Probe does not work for more than one probe per motor - MPI1982
    meiSqNodeUserDataGet /Set did not correctly handle binary data - MPI1975
    MEISynqNetTiming values not initialized - MPI1970
    Mismatch when saving Frame Buffer Size to Flash - MPI1952
    Feedback Fault cannot be cleared when AmpFault = NONE - MPI1928
    Limits with Non-zero Duration may trigger immediately - MPI1920
    S300 drive cannot support a 1kHz controller sample rate - MPI1919
    Errors missing when creating multiple MPIRecorder objects with the same index - MPI1916

Version 03.04.00
    Network Initialization problem with x0103 FPGA - MPI1891
    An application can hang if another application calls meiSqNodeDownload(...) - MPI1890
    Calling mpiMotionModify(...) before mpiMotionStart(...) - MPI1884
    Noise Excitation Problem - MPI1854
    AMP Enable Not Working for Stepper Drives - MPI1848
    mpiMotionStart/Modify may Incorrectly Return MEIMotionMessageBAD_PATH_DATA - MPI1847
    Motion Out of Frames Error when using Gates - MPI1843
    Topology Mismatch with Ring vs. String - MPI1841
    Watchdog sample applications encountered race conditions - MPI1840
    Memory Access Violation when calling mpiMotionModify(...) - MPI1838
    Error when enabling more than one recorder - MPI1823
    Multi-turn Reset Failure through the Controller's IN port - MPI1822
    Configurable AMP_WARNING Limit Action - MPI1782
    Postfilter methods did not work over client-server connection - MPI1779
    Rollover Issue with Path Motion - MPI1763
    Service Channel Timeout during SynqNet Initialization - MPI1761
    ZMP Controller I/O Mapping Error - MPI1756
    Position Jump with mpiMotionModify(...) - MPI1753
    Velocity and Acceleration Feedforwards for Shaped Trajectories - MPI1743
    SqNode UpStreamError limits are not saved to flash - MPI1505


    Open Issues
      Existing Bugs
    Multiple recorder object create/delete - MPI1916
    Discovery through IN port fails to detect nodes beyond first node with 0x020C Boot FPGA - MPI1908
    S1800 Drive monitors are not supported - MPI1899
    Multiple eventMgr via client/server - MPI1578

      Limitations
    Possible motor jump with Stop action and amp disable/enable - MPI1946
    Moves longer than 31 bits - MPI1918
    Recorder Start/Stop Triggers - MPI1917
    Kaff for velocity demand mode - MPI1909
    drive Map does not support .dm files for non-windows OS - MPI1697
         

 

New Features

Version 03.04.03

  Support for Yaskawa SGDZ-BS61/62/63 Drives
    Reference Number: MPI 2003
    Type: New Feature
    MPI Version: 03.04.03
   

Description:
Support has been added to the MPI for the following Yaskawa SGDZ-BS Series Drives: SGDZ-BS61, SGDZ-BS62, SGDZ-BS63.

   

How do I use this feature?
For more information, please contact Yaskwawa (www.yaskawa.com).

 

Version 03.04.02

  Drive Firmware download support for the Kollmorgen CD drive DSP Rev-G
    Reference Number: MPI 2010
    Type: New Feature
    MPI Version: 03.04.02
   

Description:
The Kollmorgen CD drive with DSP rev G has a new drive firmware download sequence. To support the DSP rev G, the drive firmware download method was modified and a new kollmorgen_ember.a00 file was updated. The support for the drive firmware download feature on the DSP rev G is not backwards compatible with older MPI versions.

   

How do I use this feature?
For more information, please see the Kollmorgen CD drive.

 

Version 03.04.01

  Support of SqDC Warning Codes/Messages
    Reference Number: MPI 1937
    Type: New Feature
    MPI Version: 03.04.01
   

Description:
The Kollmorgen SqDC and SqStep drives now support warning codes/messages. Support has also been added for the SqDC2 model.

   

How do I use this feature?
For more information, please see the Kollmorgen SqDC and SqStep drives.


  Sanyo Denki Q-Series and R-Series SynqNet Drives
    Reference Number: MPI 1935
    Type: New Feature
    MPI Version: 03.04.01
   

Description:
The Sanyo Denki R-Series is now supported. The Q-Series support has been expanded to include service channel, drive faults/warnings, drive parameters, etc. In previous MPI versions, the Q-Series support was minimal. If you have a Q-Series drive and upgrade the MPI, please contact Sanyo Denki (www.sanyodenki.com) for the latest drive firmware.

   

How do I use this feature?
For more information, please contact Sanyo Denki (www.sanyodenki.com).
See also, Sanyo Denki Q-Series and R-Series drives.

 

Version 03.04.00

  New Functions for Actual and Command Position Data
    Reference Number: MPI 1896
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
New functions were added to get the lower 32 bits of actual and command position data.

mpiAxisActualPositionGet32(...)
mpiAxisCommandPositionGet32(...)

If only the lower 32 bits of position data need to be read, it's faster to use these new functions instead of using the standard -Get position functions.

   

How do I use this feature?
For descriptions and sample code, see the links to the function pages above.


  Glentek Omega Drive Update Rate Options
    Reference Number: MPI 1895
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
The following drive update rate options are now available on the Glentek Omega Drive. EEPROM option numbers 4-7 were added.

EEPROM
Interpolator
Flash Download
Update Rate (kHz)
0
No
No
24
1
Yes
No
24
2
No
Yes
24
3
Yes
Yes
24
4
No
Yes
16
5
Yes
Yes
16
6
No
Yes
12
7
Yes
Yes
12
   

How do I use this feature?
See the Glentek Omega Drive. To determine the update rate or period for the drive, use MEISynqNetTiming.node[].updateFreq or MEISynqNetTiming.node[].updatePeriod.


  Support for Kollmorgen SqDC Drive
    Reference Number: MPI 1874
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
Support was added to the MPI for the Kollmorgen SqDC drive.

   

How do I use this feature?
See Kollmorgen SqDC Drive for more details.


  New SynqNet HotReplace Feature
    Reference Number: MPI 1820
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
In a ring topology, SynqNet allows the remaining nodes to operate if one or more nodes fail. Previously, the only way to restore normal operation for all nodes was to reinitialize the entire network, which would disrupt any operating node. In cases of modular machines, it may be necessary to service one or more nodes while the other nodes are actively controling motion and I/O. The new SynqNet HotReplace feature allows one or more nodes to be shut down, serviced, and then brought back to normal operation without affecting the operation of other nodes.

   

How do I use this feature?
See SynqNet HotReplace for more details.


  Add Pn600 drive parameter for SGDS-72/75 drives
    Reference Number: MPI 1819
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
Support was added for the Pn600 "Regenerative Resistor Capacity" drive parameter for the SGDS-72/75 drives.

   

How do I use this feature?
To access the Pn600 drive parameter, use the methods meiSqNodeDriveParamGet(...) and meiSqNodeDriveParamSet(...), or meiSqNodeDriveParamListGet(...) and meiSqNodeDriveParamListSet(...). See the Yaskawa SGDS Drive.


  New Flash Origin Methods
    Reference Number: MPI 1809
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
New methods were added to read and write the axis origin to/from the controller's flash memory. This feature is useful for applications that use ABS encoders. However, you cannot save the ABS encoder offset to the drive's flash memory.

   

How do I use this feature?
To write the origin to the controller's flash memory, use mpiAxisFlashOriginSet(...).
To read the origin from the controller's flash memory, use mpiAxisFlashOriginGet(...).
NOTE: These methods do not access the origin value of the axis in the controller's dynamic memory.


  Support for Node I/O Fault bits on SQID Nodes
    Reference Number: MPI 1807
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
The FPGA that is used with SQID nodes, C0FE0030_xxxx.sff, has been extended to detect errors communicating with any of the I/O modules (e.g. DIN32DOU32). The MPI has been extended to report these new error conditions.

   

How do I use this feature?
See the I/O Faults section. See MEISqNodeStatusIoFaults and MEISqNodeStatus.


  Addition of Configurable Demand Modes
    Reference Number: MPI 1796
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
Configurable Demand Modes have been added to the MPI. The new feature should be used when it is appropriate for a drive to change its demand mode. Currently, only the S300, S600, and S1800 drives support multiple demand modes. Check with the drive manufacturer for possible settings. Nodes that do not support a drive interface (ex: RMB-SynqNet) should use ANALOG or use ANALOG_DUAL_DAC for nodes with two DAC's per axis.

   

How do I use this feature?
See MEIMotorDemandMode and MEIMotorConfig. A drive will default to an appropriate demand mode. Use mpiMotorConfigGet/Set(...) to change the demand mode. See SynqNet Demand Modes.


  64-bit Position
    Reference Number: MPI 1795
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
The controller's command and actual position registers have been expanded to 64 bit. The MPI uses doubles for command and actual positions, which are limited to 1.7E+/-308 (at least 15 digits precision).

   

How do I use this feature?
See the "Position Resolution Extended" section of the Important Things to Know page.


  Support for Kollmorgen S1800 Drive
    Reference Number: MPI 1794
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
Support was added to the MPI for the Kollmorgen S1800 drive.

   

How do I use this feature?
See Kollmorgen S1800 Drive for more details.


  Maximum Number of Controllers
    Reference Number: MPI 1788
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
The maximum number of controllers supported using a particular OS is now available from a macro, MEIPlatformControlCountMax, in platform.h.

   

How do I use this feature?
This macro should only be used to determine the maximum number of controllers supported on a single system. See MEIPlatformControlCountMax.


  Support for Yaskawa SGDS75A Drive
    Reference Number: MPI 1780
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
Support was added to the MPI for the Yaskawa SGDS75A drive.

   

How do I use this feature?
See Yaskawa SGDS Drive for more details.


  Source for Axis and Motion Supervisor States
    Reference Number: MPI 1777
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
It is now possible to determine whether a non-idle axis and motion supervisor state was caused by an application on the host computer or by a controller action. It is useful to know whether a non-IDLE state was caused by a controller event or a user action. If the action source was the controller, the controller may be queried to find out what event caused the error state. In a multi-threaded or multi-process environment, it can also be useful to know if a another thread or process commanded an action that placed the motion supervisor or axis into a non-idle state.

   

How do I use this feature?
The action source can be obtained by calling mpiMotionStatus(...) or mpiAxisStatus(...) and then reading the MPIStatus.actionSource value. Use the enumeration, MPIActionSource, to decode the value.


  Volatile Buffer in Controller's External Memory
    Reference Number: MPI 1739
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
The XmpBufferData.VolatileBuffer was added to the controller's external memory. This volatile memory buffer is initialized to zero after a controller reset or power-up cycle.

   

How do I use this feature?
The volatile memory buffer can be useful for setting application flags, which can denote that certain operations have taken place. For example, once an axis has been successfully homed, a flag can be set in the volatile buffer. However, after a controller reset, the flag will be reset to zero, indicating that the axis is no longer homed.


  Addition of Methods for Decoding Node I/O Addresses
    Reference Number: MPI 1715
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
The following functions have been added to sqNode.h to assist the setup of recorders and user limits with I/O on SynqNet nodes.

sqNodeDigitalInPtr(...)
sqNodeDigitalOutPtr(...)
sqNodeAnalogInPtr(...)
sqNodeAnalogOutPtr(...)

   

How do I use this feature?
For descriptions and sample code, see the links to the function pages above.


  Addition of Drive Monitor to the MPI
    Reference Number: MPI 1702
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
The meiSqNodeDriveMonitorInfo(...) method was added to the MPI for retrieving drive monitor information. This method retrieves the number of supported drive monitors, the firmware locations of the monitors, a mask and shift value for retrieving the monitors, and a list of possible monitor configurations.

   

How do I use this feature?
This feature should be used when configuring drive monitors. The sqDriveMonitor utility contains an example of how to read and display the monitor information.


  Addition of compatibility check between client/server
    Reference Number: MPI 1684
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
The compatibility of a client object to a server is now verified by meiClientValidate(...). Compatibility is based on MPI_INTERFACE_VERSION and the equality of members of the MEIRemoteMethod enumeration.

   

How do I use this feature?
The compatibility check feature is automatically invoked when the client object is validated.


  Support for Kollmorgen S600 Drive
    Reference Number: MPI 1592
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
Support was added to the MPI for the Kollmorgen S600 drive.

   

How do I use this feature?
See Kollmorgen S600 Drive for more details.


  Support for Kollmorgen S300 Drive
    Reference Number: MPI 1591
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
Support was added to the MPI for the Kollmorgen S300 drive.

   

How do I use this feature?
See Kollmorgen S300 Drive for more details.


  Axis Frame Buffer Status
    Reference Number: MPI 1254
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
A new function has been added to the MPI which can be used to determine the size of the controller's frame buffer and how many frames are currently in the frame buffer for a particular axis.

   

How do I use this feature?
See meiAxisFrameBufferStatus(...) for sample code and implementation details.


  Controller Statistics Methods
    Reference Number: MPI 1232
    Type: New Feature
    MPI Version: 03.04.00
   

Description:
The controller firmware performance can be measured with meiControlStatistics(...). This method will read the maximum and average times for the foreground and background controller firmware tasks. The controller performance counters can be cleared with meiControlStatisticsReset(...). This feature is useful for determining the controller processor load. It can also help determine the maximum sample rate and number of available resources. For more details, see Sample Rate and SynqNet Controller Performance.

   

How do I use this feature?
meiControlStatistics(...) | meiControlStatisticsReset(...) | MEIControlStatistics
See the XmpStats1.c sample application.

 

General Changes

Version 03.04.03

  Multi-turn reset without network shutdown for Yaskawa SGDS and SGDZ-MD drives
    Reference Number: MPI 1987
    Type: Change Feature
    MPI Version: 03.04.03
   

Description:
In previous versions, the drive firmware for the Yaskawa SGDS and SGDZ drives did not allow the multi-turn reset command to be executed while the network was in SYNQ mode. It required the SynqNet network to be shutdown when performing an mtreset. The multi-turn reset function for the Yaskawa SGDS and SGDZ-MD drives has been modified to perform an mtreset without shutting down the whole SynqNet network. Now, when the multi-turn reset is requested, only the node associated with the drive is shutdown (ASYNQ mode) and restarted. Upon successful completion of the multi-turn reset, the node will be brought back to SYNQ mode.


  Support for additional drive parameters for the S200 drive
    Reference Number: MPI 1981
    Type: Change Feature
    MPI Version: 03.04.03
   

Description:
The SFD device contains useful information about the motor that is connected to the drive. This information is now available as new S200 Drive read-only parameters.

 

Version 03.04.01

  Revision of frame buffer loading to decrease likelihood of "Out-of-Frames" events
    Reference Number: MPI 1950
    Type: Change Feature
    MPI Version: 03.04.01
   

Description:
For path motion (Splines, PVT, PT, etc.), the MPI creates the frames used by the motion and then writes them to the controller. Typically, each point in the path has a corresponding frame for each axis of motion. For path segments with a large number of points (large number of frames), there is an initial group of frames loaded when the motion is started. More frames are loaded as a result of interrupts (events) generated when the axes' frame buffers run low on frames.

In previous versions, the number of frames loaded was always half the capacity of the frame buffer and the "low frame" trigger was hard coded at 32 frames. Although this limit is usually sufficient for the default buffer size of 128 frames, larger buffers could benefit from increasing these limits. In addition, in cases where a backup on path was not needed, the number of initially loaded frames could be larger.

This change will be most useful for customers streaming path (PVT, etc.) points at a high rate. To take advantage of this feature the frame buffers for the axes involved in the streaming motion should have increased frame buffer sizes (larger than the default of 128 frames). Increase the axes' frame buffer sizes with mpiControlConfigSet(...) or the meiConfig utility. Be sure to retain the parameter for path motion as FALSE.


  S200 Drive Brake Logic
    Reference Number: MPI 1936
    Type: Change Feature
    MPI Version: 03.04.01
   

Description:
The AmpNotPowered fault was added into the default MEIMotorFaultConfig.faultMask logic due to changes in the S200 FPGA brake logic. The "Amp Not Powered" fault bit will now trigger the motor's AmpFault when the Brake is applied directly by the drive. See FPGA issue FP523 for details.

 

Version 03.04.00

  Motor I/O Brake source inverted with SSI FPGA
    Reference Number: MPI 1871
    Type: Change Feature
    MPI Version: 03.04.00
   

Description:
The motor configuration provides a "Brake" source for the general purpose I/O for MEI RMB node types. The Brake logic for the following node type was incorrect: MEI RMB-10V2-SSI with C0FE002C FPGA

For product consistency, the MEI RMB-10V2-SSI was changed to have the same polarity as the standard RMB-10v2 (C0FE002C FPGA).

WARNING: If you are upgrading from a previous MPI software release where you're using an RMB-10V2 with C0FE002C, and are using a Brake source for a general purpose motor I/O, the logic will be opposite in 03.04.00 and later releases.


  Cable Length Discovery Improvement
    Reference Number: MPI 1850
    Type: Change Feature
    MPI Version: 03.04.00
   

Description:
In previous versions, the cable length discovery technique was inaccurate for networks with 6 or more nodes. The inaccuracies were caused by an incorrect measurement and calculation. The addition of more nodes to the network caused additional uncertainty in the time measurement, which caused inaccuracies in the cable length calculations. To reduce the inaccuracies, the cable length time measurements now occur between the controller and node or between two nodes. Thus, adding nodes to a network will no longer cause additional inaccuracies to the cable length calculations.


  Elimination of Control word in frame OR'd with Axis.Status
    Reference Number: MPI 1824
    Type: Change Feature
    MPI Version: 03.04.00
   

Description:
A potential problem existed with the Control word in frames being or'd into the axis status. Some frames are not meant to have Control words and are supposed to execute in one sample. However, there are strange cases where the user can get the axis to stop on a frame with no Control word and have that frame be active during the background cycle. When this happens, the axis status code OR's in the data in the place where a Control word would be. So, depending on the data at that location, anything could happen. As a precautionary measure, the Control word in the frame to be OR'd with Axis.Status was eliminated.


  Motor Stepper Configuration Hardware Check
    Reference Number: MPI 1790
    Type: Change Feature
    MPI Version: 03.04.00
   

Description:
A check has been put into place to ensure that Pulse engines are present before configuring a Motor type to Stepper.


  Cam Motion now uses Double Data Types
    Reference Number: MPI 1764
    Type: Change Feature
    MPI Version: 03.04.00
   

Description:
To be consistent with the rest of the MPI the data types for specifying positions for cam moves have been changed from a long to a double.

See MPIMotionCam and MPIMotionAttributes.

    Affects to Application Code:
The following changes may cause compiler warnings.

OLD:
typedef struct MPIMotionCam { long pointCount; long **slavePosition; long *masterDistance; double **gearRatio; } MPIMotionCam;
NEW:
typedef struct MPIMotionCam {
long pointCount;
double **slavePosition; double *masterDistance; double **gearRatio; } MPIMotionCam;
OLD:
typedef struct MPIMotionAttributes {
double *delay;
long id;
long *elementId;
long masterStart;
long repeatFrom;
} MPIMotionAttributes;
NEW:
typedef struct MPIMotionAttributes {
double *delay;
long id;
long *elementId;
double masterStart;
long repeatFrom;
} MPIMotionAttributes;

  Change of S200's Default Secondary Feedback
    Reference Number: MPI 1754
    Type: Change Feature
    MPI Version: 03.04.00
   

Description:
The S200's default secondary feedback was changed from MEIMotorEncoderTypeQUAD_AB to MEIMotorEncoderTypeDRIVE. The default for the S200's Aux Feedback is now Drive Feedback instead of Quadrature.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  New defaults for MEIEventStatusInfo
    Reference Number: MPI 1478
    Type: Change Feature
    MPI Version: 03.04.00
   

Description:
The MEIEventStatusInfo structure was expanded to handle 64 bit data. New default data structures were added and defined to overlay the 10 word data buffer that is returned by an event. By default, the new addressing was designed to match the new overlays.

NOTE: If the defaults are changed, the MPI overlays will not be accurate and cannot be used to extract data from the buffer.

See MEIEventStatusInfo.

NEW:
typedef typedef struct MEIEventStatusInfo {
union {
MPIHandle handle; /* generic */
MPIAxis axis; /* MEIEventTypeAXIS_FIRST ...
MEIEventTypeAXIS_LAST - 1 */
long node; /* MEIEventTypeCAN_FIRST...
MEIEventTypeCAN_LAST - 1 */
long number; /* MPIEventTypeMOTION MPIEventTypeMOTOR_FIRST...
MPIEventTypeMOTOR_LAST - 1 MEIEventTypeMOTOR_FIRST ... MEIEventTypeMOTOR_LAST - 1 */
long value; /* MPIEventTypeEXTERNAL */ } type; MEIXmpSignalID signalID; /* Contents of addresses specified by MEIEventNotifyData{} */
union {
long sampleCounter;
struct {
long sampleCounter;
} motion;
struct {
long sampleCounter; long positionError;
MEIInt64 actualPosition; MEIInt64 commandPosition;

} axis;
struct {
/* Data associated with the CAN event. */
long data[4];
} can;
struct {
long sampleCounter;
long dedicatedIn; MEIInt64 encoderPosition;
} motor;
long word[MEIXmpSignalUserData];
} data;
} MEIEventStatusInfo;

 

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  SynqNet Timing Improvements
    Reference Number: MPI 1176
    Type: Change Feature
    MPI Version: 03.04.00
   

Description:
SynqNet Timing improvements were made to improve node control latency. For 16 kHz drives (the majority of SynqNet nodes), the new scheduling algorithm results in control latency times identical to previous MPI releases. For other drive update rates, and for non-periodic nodes (RMBs), control latency may change.

Since a change in control latency may affect system performance, special attention is recommended for these node types when upgrading from previous MPI releases.

Please see the SynqNet Performance Compatibility section of the online documentation for more information.

    Affects to Application Code:
The MEISynqNetTiming structure was changed to support the SynqNet packet schedule improvements. For more information about the packet schedule: See "SynqNet Packet Schedule Improvements" in the Important Things to Know section.

The controlLatency sub-structure in MEISynqNetTiming was removed. The calculationTime and calculationSlack were promoted to the MEISynqNetTiming structure.

OLD:
MEISynqNetTiming.controlLatency.calculationTime MEISynqNetTiming.controlLatency.calculationSlack
NEW:
MEISynqNetTiming.calculationTime
MEISynqNetTiming.calculationSlack

The demandLatency and feedbackLatency were moved to the new per node sub-structure of the MEISynqNetTiming structure.

OLD:
MEISynqNetTiming.controlLatency.demandLatency
MEISynqNetTiming.controlLatency.feedbackLatency
NEW:
MEISynqNetTiming.node[].demandLatency
MEISynqNetTiming.node[].demandLatency

The total latency was promoted and renamed to controlLatency and the latencySlack was promoted and renamed to latencyOverhead.

OLD:
MEISynqNetTiming.controlLatency.total
MEISynqNetTiming.controlLatency.latencySlack
NEW:
MEISynqNetTiming.controlLatency
MEISynqNetTiming.latencyOverhead

 

Fixed Bugs

Version 03.04.03

  meiSynqNetPacketConfigSet(...) returns "Service cmd response timeout"
    Reference Number: MPI 2075
    Type: Fixed Bug
    MPI Version: 03.04.03
   

Problem/Cause:
During the packet configuration portion of the SynqNet network initialization, controller firmware reads the feedback positions/status and writes the torque demands. The controller firmware writes the torque demands at the time of the packet re-configuration. Since the MPI changed the packet format at the same time that the firmware was writing to the packets, it caused the torque demand value to corrupt the packet data. The "bad" packet was detected by the service channel and caused the MPI return code: 0x1b08 (6920) SqNode: service cmd response timeout

   

Fix/Solution:
In versions 03.04.03 (and later), the network initialization was corrected by preventing the firmware from writing torque demands BEFORE packet configuration and only allowing the firmware to write torque demands AFTER packet configuration. This change protects both the normal network initialization and the packet re-configuration during network re-initialization.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  meiSqnodeDriveParamStore(...) times out for Kollmorgen S1800 drive
    Reference Number: MPI 2028
    Type: Fixed Bug
    MPI Version: 03.04.03
   

Problem/Cause:
Although the drive parameters could be successfully stored to the EEPROM of the Kollmorgen S1800 drive, a timeout error message would be returned when calling the meiSqNodeDriveParamStore(...) function.

   

Fix/Solution:
The parameter storage takes about 30 seconds depending on the number of parameters to be stored. This timing requirement is corrected in the Kollmorgen S1800 drive module so that the meiSqNodeDriveParamStore(...) function will wait long enough to store all the parameters.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  Frame Buffer Under-run with mpiMotionModify + MPIMotionTypePVT
    Reference Number: MPI 2020
    Type: Fixed Bug
    MPI Version: 03.04.03
   

Problem/Cause:
When using MPIMotionTypePVT with MPIMotionAttrMaskAPPEND and mpiMotionModify(...) to add frames to an already existing set of frames, the BufferLowLimit did not change and stayed at the default value of -1. As a result, the PVT motion that was generated from multiple motion modify's to append points was running out of frames.

   

Fix/Solution:
Corrections were made to the MPI so that if a single mpiMotionStart(...) is used with MPIMotionTypePVT and the total sum of frames exceeds 128, the BufferLowLimit will be set to 32 by default, and a Frame Buffer Under-run will not occur.

    Affects to Application Code:
The methods for deleting frames and setting buffer low and empty limits were revised to correct the problem.

 

Version 03.04.02

  S200 drive with absolute feedback does not initialize correctly
    Reference Number: MPI 2008
    Type: Fixed Bug
    MPI Version: 03.04.02
   

Problem/Cause:
S200 drives with absolute feedback did not initialize correctly beyond +/-128 revs. The absolute feedback initialization did not use the upper 8 bits of the 16-bit mutlti-turn feedback data.
The S200 drive provides up to 16 bits of multi-turn and 24 bits of rotational absolute postion data. Only the lower 32 bits of position data is available on the cyclic data. The upper bits need to be read from the drive at the time of drive initialization to initialize the correct actual position.

   

Fix/Solution:
The SynqNet intialization for the S200 was corrected to read the full absolute position data from the drive and initialize the controller's actual position. Also, when the S200 drive uses absolute feedback as its primary source for commutation, only 32 bits of its position are available to the controller. To prevent missing position data, the auxiliary feedback pointer is used as the primay feedback pointer and the number of encoders supported by the drive is reduced from 2 to 1.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  atTarget not being set with PVTF
    Reference Number: MPI 1996
    Type: Fixed Bug
    MPI Version: 03.04.02
   

Problem/Cause:
The AT_TARGET status bit was not getting set correctly after the first move with multi-point motion (PT, PVT, PTF, PVTF, etc.). The MPI was not calculating the targetPosition correctly in the startID/modifyID frames that were downloaded.

   

Fix/Solution:
The targetPosition calculations were corrected, so that values were sign extended for full 64 bits.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

 

Version 03.04.01

  Server.exe utility occasionally does not exit
    Reference Number: MPI 1985
    Type: Fixed Bug
    MPI Version: 03.04.01
   

Problem/Cause:
If Motion Console was running via client/server and the ESC key was pressed to quit the server.exe utility, occasionally server.exe did not exit. The problem was caused by the MPI's server side routine. The MPI was waiting for the packet recv buffer to empty while Motion Console was continually sending packets to the server.

   

Fix/Solution:
To correct the problem, the packet close routines were changed to immediately shut down the socket connection and not to wait for the packet recv buffer to empty.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  Probe does not work for more than one probe per motor
    Reference Number: MPI 1982
    Type: Fixed Bug
    MPI Version: 03.04.01
   

Problem/Cause:
All Probe trigger control registers need to be configured to get the probe data coming at the expected location at the feedback packet. In previous versions, the drive module did not configure any probe trigger control register for the depth of the probe and the FPGA used the default depth of one. This caused a problem when the axis had more than one probe.

   

Fix/Solution:
This problem was fixed by configuring the trigger control registers of all the available probes of the axis during the node initialization.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  meiSqNodeUserDataGet /Set did not correctly handle binary data
    Reference Number: MPI 1975
    Type: Fixed Bug
    MPI Version: 03.04.01
   

Problem/Cause:
meiSqNodeUserDataGet(...) and meiSqNodeUserDataSet(...) incorrectly treated the buffer as a string. All data after a null byte would not be written to nor read from a node's user data area. If the data supplied to meiSqNodeUserDataSet(...) did not contain a null byte, it could have corrupted other parts of the process's memory.

    Fix/Solution:
meiSqNodeUserDataGet(...) and meiSqNodeUserDataSet(...) now correctly handle binary data. meiSqNodeUserDataSet(...) no longer modifies the user supplied buffer and meiSqNodeUserDataGet(...) now only writes to the user supplied buffer on success.
    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  MEISynqNetTiming values not initialized
    Reference Number: MPI 1970
    Type: Fixed Bug
    MPI Version: 03.04.01
   

Problem/Cause:
meiSynqNetTiming(...) did not properly initialize the calcuationTime and calculationSlack values in the MEISyqnNetTiming structure.

   

Fix/Solution:
The problem was corrected by translating the values from the controller and initializing the values in MEISynqNetTiming.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  Mismatch when Saving Frame Buffer Size to Flash
    Reference Number: MPI 1952
    Type: Fixed Bug
    MPI Version: 03.04.01
   

Problem/Cause:
Using mpiControlFlashConfigSet(...) to save the frame buffer size to flash would not save the external allocation tables to flash, but would save the frame buffer size in the Axis object. As a result, there was a mismatch (after a reset) between the presumed size in the Axis object and the actual size allocated in external memory causing frame buffer corruption. The symptoms of a corrupted frame buffer are erratic motion profiles.

   

Fix/Solution:
Changes have been made to mpiControlFlashConfigSet(...) was modified to update the external allocation tables and frame buffer size. The frame pointers in the Axis object will ensure that there will not be a mismatch between them. Anytime the new configuration parameters require the extAlloc tables to be updated in either working memory or flash memory, or both, the SynqNet network will shutdown and be reinitialized. Anytime the new configuration parameters require the extAlloc tables to be updated in flash memory and the SynqNet topology has NOT been previously saved, MEIFlashMessageNETWORK_TOPOLOGY_ERROR is returned and the extAlloc tables will not be updated.

    Affects to Application Code:
If the network topology has not previously been saved, mpiControlFlashConfigSet(…) will return MEIFlashMessageNETWORK_TOPOLOGY_ERROR. The application will need to call meiSynqNetFlashTopologySave(…) to save the topology.

  Feedback Fault cannot be cleared when AmpFault = NONE
    Reference Number: MPI 1928
    Type: Fixed Bug
    MPI Version: 03.04.01
   

Problem/Cause:
In previous versions, Feedback Fault was not cleared if the Feedback fault event was set to 'None.' Previously, mpiMotionAction(...) checked if the Encoder Fault event status was triggered before it cleared the encoder fault. In firmware version 619A1 (and later), motor limits do not generate events if the action is set to NONE. As a result, if the AmpFault action = NONE and an Encoder Fault occurred, it could not be cleared.

   

Fix/Solution:
To correct this problem, mpiMotionAction(...) was modified and now checks the Encoder Fault bit instead of the event status, which ensures that the Amp Fault is properly cleared.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  Limits with Non-zero Duration may trigger immediately
    Reference Number: MPI 1920
    Type: Fixed Bug
    MPI Version: 03.04.01
   

Problem/Cause:
A motor limit with a non-zero duration may trigger if the condition is met at the time the limit is configured.

   

Fix/Solution:
The controller firmware was modified to remove the possibility of false triggers. Changes have been made so that the state may be calculated during configuration. If the state is 0x10 (triggered), it will override the newly calculated state during the first sample after configuration.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  S300 drive cannot support a 1kHz controller sample rate
    Reference Number: MPI 1919
    Type: Fixed Bug
    MPI Version: 03.04.01
   

Problem/Cause:
The S300 drive module initialization code failed to correctly calculate an internal scale factor when the controller's sample rate was 1kHz, which caused the SynqNet network intialization to fail.

   

Fix/Solution:
This problem was fixed by correcting the calculation.

    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  Errors missing when creating multiple MPIRecorder objects