.

Release Note
MPI Library Version 03.04.11

Release Type
MPI Version
Release Date
Patch Release
03.04.11
6Nov2007
Patch Release
03.04.10
4Oct2007
Patch Release
03.04.09
24Aug2007
Patch Release
03.04.08
16Jul2007
Patch Release
03.04.07
4Jun2007
Patch Release
03.04.06
26Apr2007
Patch Release
03.04.05
29Feb2007
Patch Release
03.04.04
01Feb2007
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.11

CacheService Object - MPI2247

Cache status locally for client/server applications - MPI2246

Version 03.04.10

Add MPI support for ZMP-SYNQNET-CPCI-3U-uD-XIO - MPI2216

Version 03.04.09

Support for Demand output of double variables - MPI2217

Version 03.04.08
S200 Drive Firmware download is supported - MPI2189
meiMotorDemandModeSet(...) allows on-the-fly demand mode switching - MPI2187
Feed-forward support for Velocity Demand Mode - MPI2186
Gain Table Index over SynqNet - MPI2176

Version 03.04.06
     Yaskawa Encoder Counts Per Revolution - MPI2095
     Support for AMC-DPQ series drives - MPI2046

Version 03.04.05
     Addition of Axis Current Limit Fault to Kollmorgen SqDC drive - MPI2084
     Addition of mpiMotorPositionFeedBackOffsetGet/Set(...) methods - MPI2078

Version 03.04.04
     Controller I/O now supported on ZMP-SynqNet Controllers (T115-0001; T127-0001) - MPI2038

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.10

Optimize specific methods for client/server operation - MPI2235

Version 03.04.09

AMC DPQ-Series Drive Faults - MPI2165

Version 03.04.08
MEIXmpAlgorithm Enumeration - MPI2205
meiSqNodeInfo(...) with a failed node - MPI2167

Version 03.04.07
     mpiMotionConfigSet(...) decel stop/E-stop range - MPI2152
     Yaskawa SGDZ-MD Drive - Motor Fault Mask - MPI2141

Version 03.04.06
     Updated Yaskawa drive module supports new drive parameters - MPI2117
     Yaskawa SGDS drive: Default Fault Mask - MPI2107
     CPU usage during SynqNet Initialization - MPI2104

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.11

Motion params are corrupted if mpiMotionAction RESET called - MPI2251

MPIControl create/delete - MPI2228

Version 03.04.10

Zero Position when Actual Position >31 bits - MPI2224

Command velocity trajectory discontinuity - MPI2223

Version 03.04.09

Recorder START trigger may fail - MPI2214

Divide by zero causes exception - MPI2210

PVT move fails when starting position is larger than 32 bits - MPI2203

Motion Modify with Velocity move causes discontinuity - MPI2201

mpiMotorConfigSet(...) does not support ANALOG_DUAL_DAC mode - MPI2197

mpiControlReset(...) locks up after downloading invalid firmware - MPI2188

Flash utility crash when using '-erase' - MPI2006

Version 03.04.08
meiPlatformMemorySet64(...) function changes the value of the src pointer - MPI2185
HotReplace feature unable to restart drives - MPI2181
Software Position Limits Falsely Triggered - MPI2180
meiSqNodeStatus(...) with failed node - MPI2169
mtReset fails for a single node network - MPI2140

Version 03.04.07
    SynqNet Fault Recovery causes motor to jump - MPI2164
    Motor limit problem when 32-axis configuration is saved to flash - MPI2161
    meiPlatformObjectLockGive/Take(...) do not work over client/server for multi-thread apps - MPI2160
    Yaskawa SGDS Parameter Pn212 Problem - MPI2158
    Sequence Motion Commands - MPI2137
    meiSynqNetIdleCableStatus(...) no longer causes CRC errors - MPI2109

Version 03.04.06
    S200 Drive Dedicated I/O Support - MPI2136
    Motor limit OutputPtr checked for NULL value - MPI2125
    mpiControlReset(...) via client/server with erased flash memory - MPI2122
    SynqNet Node with Boot FPGA - MPI2111
    FPGA download erases the drive firmware on Glentek drives - MPI2110
    S200 Drive: Setting "OOUT1" as Brake would disengage during initialization - MPI2108
    MEIXmpLimitData.State with non-zero Duration - MPI2102
    Yaskawa SGDS, SGDZ-MD, SGDZ-BS Improper Modulo Configuration - MPI2089
    mpiMotorEventConfigSet(...) disables a User Limit - MPI2087
    SynqNet Initialization hangs with ABS feedback and no motor object - MPI2029

Version 03.04.05
    meiSqNodeDriveParamGet(...) could not read a string parameter - MPI2082
    Drive firmware download with SGDZ-BS - MPI2071
    mpiMotorEventConfigSet(ENCODER_FAULT) service command unsupported error - MPI2068
    Yaskawa SGDS and SGDZ-BS param read problem - MPI2047
    Incorrect Synqnet Timing values when new sample rate is saved to flash - MPI1880
    mpiMotorConfigSet possible hang with encoder ratio - MPI2054
    SynqNet initialization hangs with ABS feedback and no motor object - MPI2029

Version 03.04.04
    ASSERT violation after a Save Topology and power cycle - MPI2053
    Hot Restart fails to restart some nodes - MPI2044
    S200 Absolute Encoder data changes during mpiMotorConfigSet(...) - MPI2043
    Protection fault occurs at controller frame low event - MPI2035
    S200 Drive parameter COMM_OFF angle wrapping inconsistency - MPI2032

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

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

meiMotionConfigSet(...) can crash a ZMP controller - MPI2241

MEIMotorInfo.sqNode.driveIndex invalid value - MPI2168

Discovery through IN port fails to detect nodes beyond first node with 0x020C Boot FPGA - MPI1908

Multiple eventMgr via client/server - MPI1578

 

      Limitations
Capture is not supported when using a non-zero modulo value
    S1800 drive does not support monitor configuration - MPI2171
    rmbSsiEncoderConfigGet/Set(...) Limitations - MPI2018
    Possible motor jump with Stop action and amp disable/enable - MPI1946
    Moves longer than 31 bits - MPI1918
    Recorder Start/Stop Triggers - MPI1917
    drive Map does not support .dm files for non-windows OS - MPI1697
         

 

New Features

Version 03.04.11

  CacheService Object
    Reference Number: MPI 2247
    Type: New Feature
    MPI Version: 03.04.11
   

Description:
CacheService object creates and handles a thread that helps update the Controller’s status cache. The CacheService object is a convenient way to have a program periodically update the Controller’s status cache, allowing the MPI methods to avoid the occasional penalty of explicitly updating the cache.

   

How do I use this feature?
The CacheService object is not part of the standard MPI. In order to use the CacheService Object, the apputil.h header file needs to be included by your code and the apputil library linked to your application.

For more information on this new feature, see CacheService Object.


  Cache status locally for client/server applications
    Reference Number: MPI 2246
    Type: New Feature
    MPI Version: 03.04.11
   

Description:
In order to reduce the function execution time when polling MPI status attributes in a client/server setting, some status structures will be cached on the client control object. With caching enabled, certain MPI status methods will get status values that are stored locally in a cache. This feature only works for client type controllers.

   

How do I use this feature?
Caching can be enabled by calling mpiControlStatusCacheIntervalSet(...) to set a cache refresh interval. Once caching is enabled, the supported status functions will automatically refresh the cache if it is out of date with respect to the refresh interval.

For more information on this feature, see Status Caching.

 

Version 03.04.10

  Add MPI support for ZMP-SYNQNET-CPCI-3U-uD-XIO
    Reference Number: MPI 2216
    Type: New Feature
    MPI Version: 03.04.10
   

Description:
Support was added to the MPI for the new controller: ZMP-SYNQNET-CPCI-3U-uD-XIO. The control I/O tables were extended to support the meiControlInfo(...) method with the new ZMP controller.

 

Version 03.04.09

  Support for Demand output of double variables
    Reference Number: MPI 2217
    Type: New Feature
    MPI Version: 03.04.09
   

Description:
The firmware transfers internal controller variables to fields of the SynqNet Demand packet each sample. Currently the internal variables are limited to 32-bits (float and long). By adding support for the transfer of the 64-bit type double, the outputs from MechaWare blocks can be transferred to the Demand packet. This feature would not normally be used directly by a customer. It is intended for use by future demand output MechaWare blocks.

A new enumerated type MEIXmpDACInputTypeDOUBLE, was added to the MEIXmpDACInputType enumeration. Code was added to motor.c to support the transfer of this type.

   

How do I use this feature?
The appropriate DemandChannel[ ].Input pointer is set by the MPI to the address of the controller variable. The value of DemandChannel[ ].InputType is set to MEIXmpDACInputTypeDOUBLE.



Version 03.04.08

  S200 Drive Firmware download is supported
    Reference Number: MPI 2189
    Type: New Feature
    MPI Version: 03.04.08
   

Description:
The S200 drive firmware can be now downloaded via SynqNet. The drive Firmware versions 3.0A to 127.9Z and 255.0A to 255.9Z support firmware download via SynqNet. The following versions do not support drive firmware download: 2.0a, 2.1a, 2.1b, 129.0a, 130.0a


  meiMotorDemandModeSet(...) allows on-the-fly demand mode switching
    Reference Number: MPI 2187
    Type: New Feature
    MPI Version: 03.04.08
   

Description:
Demand mode can now be switched while the amplifier is enabled, which was not possible before. Only certain mode switches are supported, such as between velocity and torque mode. Motors can only be switched to a mode that the motor supports.

   

How do I use this feature?
meiMotorDemandModeSet(...) is called with a motor and the demand mode to switch to. Demand mode can still be changed using mpiMotorConfigSet(...), but only while the amp is not enabled.


  Feed-forward support for Velocity Demand Mode
    Reference Number: MPI 2186
    Type: New Feature
    MPI Version: 03.04.08
   

Description:
Support for the feed-forward terms has been added for velocity mode. In SynqNet velocity mode, the controller will send both a velocity demand and torque demand to the drive. In previous versions, the torque demand was always zero and the velocity demand would be set to the output of the closed-loop control algorithm.

   

How do I use this feature?
In version 03.04.08 and later, if a motor is in velocity mode the Kaff and Kff terms will apply to the torque demand field, the other terms will apply to the velocity demand field. Please see the PID and PIV block diagrams.

The torque mode feed-forward terms operation has not been changed.


  Gain Table Index over SynqNet
    Reference Number: MPI 2176
    Type: New Feature
    MPI Version: 03.04.08
   

Description:
For Velocity and Position Mode drives that support gain tables, the gain table index will be sent to the drive via SynqNet. This feature allows users to switch gain tables in the controller and the drive simultaneously. The gain index is sent to all drives, even if the drives do not support it. Drives that do not support the gain index will ignore the data. Please consult your drive manufacturer's documentation for details about drive parameters for gain tables.

   

How do I use this feature?
The controller firmware automatically copies the controller's gain index value to the drive via cyclic data in the SynqNet packets. See Gain Tables.

 

Version 03.04.06

  Yaskawa Encoder Counts Per Revolution
    Reference Number: MPI 2095
    Type: New Feature
    MPI Version: 03.04.06
   

Description:
New Yaskawa drive-specific methods were added to read the encoder counts per revolution for feedback devices that support this feature. These drive-specific methods will be replaced in a future release with a general purpose interface to read the feedback counts per revolution.

   

How do I use this feature?
The following methods can now be used to read the encoder counts per revolution for the Yaskawa drives/motors. If a drive/motor does not support the encoder counts per revolution, it will return a value of zero for the counts per revolution.

   sgdsEncoderCountsPerRev(MPIControl  control,
                           long        nodeNumber,
                           long        *countsPerRev);

   sgdsBsEncoderCountsPerRev(MPIControl control,
                             long       nodeNumber,
                             long       driveIndex,
                             long       *countsPerRev);

   sgdzMdEncoderCountsPerRev(MPIControl control,
                             long       nodeNumber,
                             long       driveIndex,
                             long       *countsPerRev);

    control - a handle to a control object.
    nodeNumber - index to the SqNode.
    driveIndex - index to the drive interface, relative to the SqNode.
    *countsPerRev - a pointer to the number of counts per motor revolution.
                              A value of zero indicates the counts per revolution are unknown.


  Support for AMC DPQ series drives
    Reference Number: MPI 2046
    Type: New Feature
    MPI Version: 03.04.06
   

Description:
The new AMC-DPQ series drives are now supported. The following drives are now supported.
   - DPQNNIE
   - DPQNNIR
   - DPQNNIA
   - DPQNNIS

   

How do I use this feature?
Contact Advanced Motion Controls for more information. (www.a-m-c.com)

 

Version 03.04.05

  Addition of Axis Current Limit Fault to Kollmorgen SqDC drive
    Reference Number: MPI 2084
    Type: New Feature
    MPI Version: 03.04.05
   

Description:
The Kollmorgen SqDC drive will generate a Axis Current Limit Fault when the axis current exceeds the programmed current limit value.

   

How do I use this feature?
Support has been added to the MPI for the Axis Current Fault.


  Addition of mpiMotorPositionFeedBackOffsetGet/Set methods
    Reference Number: MPI 2078
    Type: New Feature
    MPI Version: 03.04.05
   

Description:
The mpiMotorPositionFeedbackOffsetSet(...) and mpiMotorPositionFeedbackOffsetGet(...) methods were added to the MPI to allow user applications the ability to store and read back an absolute position offset value. This value will be stored in the EEPROM on the motor itself. This feature will be supported through the drive interface on selected drives only. These methods can directly access storage on the EEPROM, allowing a position offset to be stored from session to session. In conjunction with mpiAxisOriginSet(...), this feature replicates the ability of certain drives to reset the zero position on absolute encoders.

   

How do I use this feature?
This feature can only be used with a Kollmorgan S200 drive and an EnDat 2.1-capable motor. The S200 must have AuxFB set to "EnDat 2.1" in order for this feature to work correctly.

 

Version 03.04.04

  Controller I/O now supported on ZMP-SynqNet Controllers (T115-0001; T127-0001)
    Reference Number: MPI 2038
    Type: New Feature
    MPI Version: 03.04.04
   

Description:
Previous MPI versions would not support local controller I/O for ZMP models T115-0001 and T127-0001. Support has now been added to the MPI for the T115-0001 and T127-0001.

   

How do I use this feature?
The MPI uses the model numbers to decode the local controller digital I/O bit availability. The local controller I/O can be identified via meiControlInfo(...) and accessed with mpiControlDigitalIn(...), mpiControlDigitalOutGet(...), or mpiControlDigitalOutSet(...).

 

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.10

  Optimize specific methods for client/server operation
    Reference Number: MPI 2235
    Type: Change Feature
    MPI Version: 03.04.10
   

Description:
The following functions have been optimized for client/server operation:

These functions now run remotely on the server. If you are upgrading from a previous release, make sure to upgrade the MPI DLLs on both the client and the server.

Version 03.04.09

  AMC DPQ-Series Drive Faults
    Reference Number: MPI 2165
    Type: Change Feature
    MPI Version: 03.04.09
   

Description:
AMC DPQ-Series drives now have three 32-bit words that contain the drive fault and warning codes. To support the additional drive faults/warnings, all three words are read when the meiMotorAmpFault(...) or meiMotorAmpWarning(...) is called.

Version 03.04.08

  MEIXmpAlgorithm Enumeration
    Reference Number: MPI 2205
    Type: Change Feature
    MPI Version: 03.04.08
   

Description:
WARNING!
Between MPI version 03.04.07 and 03.04.08 the order of the MEIXmpAlgorithm enumeration changed. This change was made for internal performance optimization, but unintentionally affected the MPI interface for the MEIFilterConfig{...} structure.

If your application uses the MEIXmpAlgorithm enum, please be sure to re-compile your application with the 03.04.08 library and header files. If you do not recompile your application, the filter type may not be as expected and a motor may become unstable.

03.04.07

typedef enum { 	
     MEIXmpAlgorithmINVALID = -1, 	
     MEIXmpAlgorithmPID, 	
     MEIXmpAlgorithmPIV, 	
     MEIXmpAlgorithmNONE, 	
     MEIXmpAlgorithmPIV1, 	
     MEIXmpAlgorithmUSER, 

03.04.08

typedef enum { 	
     MEIXmpAlgorithmINVALID = -1, 	
     MEIXmpAlgorithmNONE, 	
     MEIXmpAlgorithmPID, 	
     MEIXmpAlgorithmPIV, 	
     MEIXmpAlgorithmPIV1, 	
     MEIXmpAlgorithmUSER, 

  mpiMotionConfigSet(...) decel stop/E-stop range
    Reference Number: MPI 2167
    Type: Change Feature
    MPI Version: 03.04.08
   

Description:
meiSqNodeInfo(...) for a failed node would return MEISqNodeMessageRESPONSE_TIMEOUT as it attempted to send a service command to read the switchID. Although, a service command timeout is the correct error, this error prevents the user from reading the other fields. The meiSqNodeInfo(...) was modified to only send service commands to the nodes if they have not failed. If the node is in a failed state, the SwitchID is set to an invalid value (-1).

 

Version 03.04.07

  mpiMotionConfigSet(...) decel stop/E-stop range
    Reference Number: MPI 2152
    Type: Change Feature
    MPI Version: 03.04.07
   

Description:
Parameter range checking was added to mpiMotionConfigSet(...) to protect for
invalid values. mpiMotionConfigSet(...) will return MPIMessagePARAM_INVALID if the decelTime.stop or decelTime.eStop value is negative or greater than 31 bits of controller samples. If zero or less than one sample is specified, a one sample value will be applied.


  Yaskawa SGDZ-MD Drive - Motor Fault Mask
    Reference Number: MPI 2141
    Type: Change Feature
    MPI Version: 03.04.07
   

Description:
The Yaskawa SGDZ-MD Drive motor fault mask was expanded to include MEIMotorFaultMaskAMP_NOT_POWERED by default. This change will cause a dedicated Amp Fault if the Amp Not Powered drive fault bit is active.

 

Version 03.04.06

  Updated Yaskawa drive module supports new drive parameters
    Reference Number: MPI 2117
    Type: Change Feature
    MPI Version: 03.04.06
   

Description:
Yaskawa has added new drive parameters to the SGDS drive, which the MPI previously did not support. An updated .dm file was added for support, and the parameter checking code in the drive module was updated to support the new parameters. See the Yaskawa SGDS Drive section for the list of new drive parameters.


  Yaskawa SGDS drive: Default Fault Mask
    Reference Number: MPI 2107
    Type: Change Feature
    MPI Version: 03.04.06
   

Description:
The Yaskawa SGDS motor fault mask was expanded to include MEIMotorFaultMaskAMP_NOT_POWERED by default. This change will cause a dedicated Amp Fault if the Amp Not Powered drive fault bit is active. Changes to application code are not required.


  CPU usage during SynqNet Initialization
    Reference Number: MPI 2104
    Type: Change Feature
    MPI Version: 03.04.06
   

Description:
During SynqNet initialization, there are several steps where the MPI must wait for a time period for the network hardware. This would cause up to 100% CPU usage for several seconds. To reduce the CPU usage, the wait logic was optimized to sleep for the long wait periods and then poll for short intervals. This eliminated the heavy CPU usage without increasing the execution time for mpiControlInit(...) or mpiControlReset(...).

 

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.11

  Motion params are corrupted if mpiMotionAction RESET called
    Reference Number: MPI 2251
    Type: Fixed Bug
    MPI Version: 03.04.11
   

Problem/Cause:
If mpiMotionAction(...) is called with a RESET argument, then the motion type and params in the motion object would be corrupted. This caused subsequent calls to mpiMotionStart(...) to fail with an Argument invalid error. The cause of the problem was determined to be a bug in an internal function.

   

Fix/Solution:
A bug in meiMotionAxisListsGet(...) was fixed, but it was discovered that mapping more than 16 axes to a motion object is not supported. Please see MPIMotionConfig{...} for details.

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

  MPIControl create/delete Exception Error
    Reference Number: MPI 2228
    Type: Fixed Bug
    MPI Version: 03.04.11
   

Problem/Cause:
Repeated creation and deletion of the controller object (~33,000 with XMP-Series, ~1900 with ZMP-Series) would eventually cause mpiControlCreate(...) to fail with a memory fault.

The problem occurred because meiPlatformDeviceClose(...) was not unmapping all of the device memory originally mapped by meiPlatformDeviceOpen(...).

   

Fix/Solution:
meiPlatformDeviceClose(...) now unmaps all of the PCI windows rather than just one of them. Repeated creation and deletion of the controller object no longer results in failure.

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

 

Version 03.04.10

  Zero Position when Actual Position >31 bits
    Reference Number: MPI 2224
    Type: Fixed Bug
    MPI Version: 03.04.10
   

Problem/Cause:
If the value of actual position exceeds +/- 31 bits before calling mpiAxisCommandPositionSet(...) to zero the position, the command position value would be improperly calculated.

The problem was caused by the MPI changing the command position by greater than +/- 31 bits. The controller calculates a delta position value that exceeds the range of its 32-bit position counter, causing the 64-bit command position value to be calculated improperly.

   

Fix/Solution:
The problem was corrected by changing the MPI to incrementally update the command position without exceeding +/- 31 bits per sample.

   

Affects to Application Code:
No application changes are necessary.

Note: If the position error limit is less than the command position setting delta, the position error limit may trigger immediately after setting the command position. If the position error limit is set to ABORT and cmd=actual is configured, then setting the command position will fail because it will be overwritten by the current actual position.


  Command velocity trajectory discontinuity
    Reference Number: MPI 2223
    Type: Fixed Bug
    MPI Version: 03.04.10
   

Problem/Cause:
If the controller foreground/background deltas are greater than 10, two different problems can occur with the calculated trajectory velocity term:

  1. Final velocity value could be repeated for multiple samples before being zeroed at the end of a move.
  2. Velocity value is zero for one sample during a motion profile.

The problem was caused by a race condition in the controller firmware logic where update frames were occasionally not executed if the axis state was IDLE and the internal move_in_progress flag was occasionally in an improper state.

   

Fix/Solution:
The problem was corrected by changing the logic to fix the race conditions so that the update frame is executed but not advanced to the next frame if the axis state is IDLE (guaranteeing that the final position is updated at the correct sample).

    Affects to Application Code:
No application changes are necessary.

 

Version 03.04.09

  Recorder START trigger may fail
    Reference Number: MPI 2214
    Type: Fixed Bug
    MPI Version: 03.04.09
   

Problem/Cause:
When a data recorder single-shot START trigger is configured from mpiRecorderConfigSet(...) while the conditions to trigger the recorder are true, the trigger may intermittently fail to activate the recorder. The problem was caused by the race condition in mpiRecorderConfigSet(...). The method wrote the trigger configurations to the controller before the recorder configurations.

   

Fix/Solution:
mpiRecorderConfigSet(...) has been modified to write the recorder configuration before the trigger configuration.

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

  Divide by zero causes exception
    Reference Number: MPI 2210
    Type: Fixed Bug
   

MPI Version: 03.04.09

   

Problem/Cause:
During mpiControlInit(...) or meiSynqNetInit(...) a Divide By Zero exception would occur intermittently.

A Divide By Zero exception was being thrown by deprecated code that was being executed, but not used by the MPI. During testing, the Visual C++ v6 runtime library did not catch the problem. However, the Visual C++ v7 runtime library was able to detect a floating point division by zero and generate the exception error.

   

Fix/Solution:
The deprecated code was removed.

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

  PVT move fails when starting position is larger than 32 bits
    Reference Number: MPI 2203
    Type: Fixed Bug
    MPI Version: 03.04.09
   

Problem/Cause:
PVT move types would fault (position error limit) with a large position discontinuity when the starting position was greater than 32-bits. This error occurred because the initial positions used to generate the frames for path moves (PVT, B-Spline, etc.) were being incorrectly calculated. Only the lower 32 bits of the 64-bit position were being used.

   

Fix/Solution:
The PVT calculations were revised to correctly calculate the initial position. Multi-point moves are now correct over the entire 64-bit range.

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

  Motion Modify with Velocity move causes discontinuity
    Reference Number: MPI 2201
    Type: Fixed Bug
    MPI Version: 03.04.09
   

Problem/Cause:
mpiMotionModify(...) with a velocity move type, caused a one sample discontinuity in the velocity profile. The calculated command position was the same value for two successive samples.

The problem was caused by velocity frames being updated with command position values that were one sample old. This caused the motion supervisor to miscalculate the value of the command position when the modify frames were executed.

   

Fix/Solution:
The problem was corrected by updating the velocity frame's command position with the present command position value.

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

  mpiMotorConfigSet(...) does not support ANALOG_DUAL_DAC mode
    Reference Number: MPI 2197
    Type: Fixed Bug
    MPI Version: 03.04.09
   

Problem/Cause:
Calling mpiMotorConfigSet(...) with demand mode = ANALOG_DUAL_DAC, followed by calling mpiMotorConfigGet(...) would return demand mdoe = ANALOG.

The problem occurred because the internal enum values for MEIXmpMotorModeSelectANALOG and MEIXmpMotorModeSelectANALOG_DUAL_DAC were the same.

   

Fix/Solution:
The problem was corrected by updating the internal demand mode map values for MEIXmpMotorModeSelectANALOG (0xFFFFFFF0) and MEIXmpMotorModeSelectANALOG_DUAL_DAC (0xFFFFF10) to identify the DAC configuration.

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

  mpiControlReset(...) locks up after downloading invalid firmware
    Reference Number: MPI 2188
    Type: Fixed Bug
    MPI Version: 03.04.09
   

Problem/Cause:
If invalid firmware was downloaded to the controller, the mpiControlReset(...) function did not return with an error. The function would lock up because the timer used to check for the timeout depended on the controller sample counter. The problem was caused by a timeout check during the SynqNet network initialization that used the controller's sample counter.

   

Fix/Solution:
The timeout check function that used the controller's timer during SynqNet network initialization was replaced with a function that checks the host timer.

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

  Flash utility crash when using '-erase'
    Reference Number: MPI 2006
    Type: Fixed Bug
    MPI Version: 03.04.09
   

Problem/Cause:
The command line Flash utility crashed when trying to erase the binary image of a controller via client/server:

flash -server 192.168.1.74 -erase

The crash occurred because the flash utility called meiPlatformFlashSectorErase(...), which does not have a remote method. Since, meiPlatformFlashSectorErase(...) tried to access a local controller directly, it caused a memory exception error.

   

Fix/Solution:
The problem was corrected by adding a remote method for meiPlatformFlashSectorErase(...). The new remote method is: MEIRemoteMethodFLASH_SECTOR_ERASE.

Warning: When upgrading to 03.04.09, be sure to upgrade both the client and server software to correct this problem.

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


Version 03.04.08

  meiPlatformMemorySet64() function changes the value of the src pointer
    Reference Number: MPI 2185
    Type: Fixed Bug
    MPI Version: 03.04.08
   

Problem/Cause:
For ZMP-Series controllers only, meiPlatformMemorySet64(...) incorrectly changed the data of the src pointer. The problem was caused by swapping the data of the src pointer and then writing it to the ZMP. Therefore, the data of the src pointer was changed.

   

Fix/Solution:
The problem was corrected by copying the data from the src pointer to a temporary variable, swapping it, and then writing it to the ZMP.

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

  HotReplace feature unable to restart drives
    Reference Number: MPI 2181
    Type: Fixed Bug
    MPI Version: 03.04.08
   

Problem/Cause:
If more than one drive was restarted with HotReplace, errors would sometimes occur after the nodes were initialized to SYNQ mode. The errors were drive dependent, but indicated that a drive specific initialization step had failed. In some cases, errors were returned by the HotReplace functions. In other cases, drives were not fully initialized after being restarted, leaving items such as encoders uninitialized. The problem was caused by a logic error that caused only the first drive being restarted to execute the drive specific inialization routines. After the network attained SYNQ mode, the first drive would then be initialized as many times as there were drives that were restarted. As a result, the other drives were left in a partially initialized state.

   

Fix/Solution:
The logic was corrected in the MPI to run the drive specific inialization routines for each drive that is restarted.

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

  Software Position Limits Falsely Triggered
    Reference Number: MPI 2180
    Type: Fixed Bug
    MPI Version: 03.04.08
   

Problem/Cause:
The software position limits would occasisonally falsely trigger when the motor's feedback crossed the zero position from a positive to a negative position value. The problem was caused by the interruption of the position limit comparison with the lower 32-bits and upper 32-bits of feedback position at the same time the 64-bit position crossed from the positive to negative range.

   

Fix/Solution:
Fixed to firmware. The 64 bit value is now read twice and compared. If the two values are different, processing of the limit is skipped until the next sample.

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

  meiSqNodeStatus(...) with failed node
    Reference Number: MPI 2169
    Type: Fixed Bug
    MPI Version: 03.04.08
   

Problem/Cause:
meiSqNodeStatus(...) would fail with a service command timeout error when accessing a failed Slice node. This error occurred because meiSqNodeStatus(...) was not checking to see whether or not the node was dead before making a service command to the node.

   

Fix/Solution:
The problem was corrected by having meiSqNodeStatus(...) check if the node is not in a failed state before reading the status.

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

  mtReset fails for a single node network
    Reference Number: MPI 2140
    Type: Fixed Bug
    MPI Version: 03.04.08
   

Problem/Cause:
If a SynqNet network contained a single Yaskawa SGDZ-MD or SGDS drive, the meiMotorMultiturnReset(...) would fail and return a "SynqNet Hot Restart: Not in Synq state" error. The problem was caused by trying to shutdown a single node network, which causes a full network shutdown. The node re-start would then fail, since a full network re-start is required after a full network shutdown..

   

Fix/Solution:
The problem was corrected by generating a network shutdown to ASYNQ mode, performing the multi-turn reset, and then re-starting the network.

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

Version 03.04.07

  SynqNet Fault Recovery causes motor to jump
    Reference Number: MPI 2164
    Type: Fixed Bug
    MPI Version: 03.04.07
   

Problem/Cause:
During SynqNet Fault Recovery, the position delta of the bad packet feedback compensation was zero, which caused a discontinuity in the closed-loop servo control output. The problem was caused by a previous change that was added to the encoder processing code which cleared out the delta value so that if the encoder was not enabled, the axis object would not increment its feedback value. As a result, it would get out of synq with the motor object's feedback value. Unfortunately, this change caused an error in the bad packet compensation because it forced the delta value to zero just before bad packet compensation was evaluated.

   

Fix/Solution:
The problem was corrected by changing the logic in the firmware. The delta value for the encoder is now forced to zero only if the encoder is not processed. This means that bad packet compensation will work as expected and if the encoder is disabled, the delta is forced to zero, preserving the previous change.

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

  Motor limit problem when 32-axis configuration is saved to flash
    Reference Number: MPI 2161
    Type: Fixed Bug
    MPI Version: 03.04.07
   

Problem/Cause:
If the controller is configured for 32 MS/Axes/Filters/Motors, saved to flash, and then reset, the motor limit configurations would be intialized to zero. This would cause all actions to be initialized to NONE, disabling all limit actions. The controller firmware initialization code clears memory past the last allocated object (i.e. frame buffers, etc...). When the axisCount was set to 32, the firmware cleared past the end of external memory, wrapping around to the beginning of external memory, and overwrote the motor limit configurations.

   

Fix/Solution:
The problem was corrected by modifying the clear memory routine in the firmware initialization to not clear memory beyond the end of external memory.

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

  meiPlatformObjectLockGive/Take(...) do not work over client/server for multi-thread applications
    Reference Number: MPI 2160
    Type: Fixed Bug
    MPI Version: 03.04.07
   

Problem/Cause:
The platform lock mechanism did not work for multiple threads running in a single client process when connected to the controller via client server. Locks were only being taken on the server. They needed to be created and taken on the client as well.

   

Fix/Solution:
The problem was corrected. The platform lock mechanism now works for multiple threads running in a single client process when connected to the controller via client server.

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

  Yaskawa SGDS Parameter Pn212 Problem
    Reference Number: MPI 2158
    Type: Fixed Bug
    MPI Version: 03.04.07
   

Problem/Cause:
The Yaskawa SGDS drive parameter Pn212 was previously specified as a 16-bit value in the Yaskawa_SGDS.dm file.

   

Fix/Solution:
Drive parameter Pn212 was changed to a 32-bit value in the MPI and Yaskawa_SGDS.dm file.

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

  Sequence Motion Commands
    Reference Number: MPI 2137
    Type: Fixed Bug
    MPI Version: 03.04.07
   

Problem/Cause:
The sequence motion commands (seq1.c sample application) did not work. The problem was caused by extending the position range in the controller from 32-bits to 64-bits.

   

Fix/Solution:
The problem was corrected in the MPI library.

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

  meiSynqNetIdleCableStatus(...) no longer causes CRC errors
    Reference Number: MPI 2109
    Type: Fixed Bug
    MPI Version: 03.04.07
   

Problem/Cause:
The controller received spurious CRC errors when the idle cable was tested. The problem was a result of the Rincon not properly ignoring the errors.

   

Fix/Solution:
The MPI now disables the controller RX on the appropriate port before the cable test, thus avoiding the errors from echoed packets.

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

 

Version 03.04.06

  S200 Drive Dedicated I/O Support
    Reference Number: MPI 2136
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
The following Dedicated In bits are NOT supported by the S200 drive and are now masked from the user:
    MPIMotorDedicatedInINDEX_PRIMARY
    MPIMotorDedicatedInFEEDBACK_FAULT
    MPIMotorDedicatedInDRIVE_STATUS_9
    MPIMotorDedicatedInFEEDBACK_FAULT_PRIMARY

MPIMotorDedicatedInDRIVE_STATUS_10 is now supported. In previous versions it was missing from the drive module library.

   

Fix/Solution:
Changes were made to kollmorgen_s200.c. See the Drive FPGA Table: Kollmorgen S200 for a complete list of supported Dedicated I/O bits.

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

  Motor limit OutputPtr checked for NULL value
    Reference Number: MPI 2125
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
Motor limits are configured via mpiMotorConfigSet(...) or mpiMotorEventConfigSet(...). In previous versions, no argument checking was done on the value of OutputPtr when motor limits were set. A NULL value could have resulted in a controller reset or lock-up. A NULL value in OutputPtr would map to 0x0 in controller memory, which is the location of the reset register.

   

Fix/Solution:
The MPI now checks OutputPtr against NULL and uses the address of MEIXmpDataNull.Output instead. NULL pointers in OutputPtr are now safely ignored.

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

  mpiControlReset(...) via client/server with erased flash memory
    Reference Number: MPI 2122
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
mpiControlReset(...) via client/server failed after downloading new firmware to an XMP controller whose flash memory had been previously erased. mpiControlReset(...) was reinitializing the Platform object in the "bad firmware case," which caused a new client to be created, thus losing all of the previous client's locks.

   

Fix/Solution:
mpiControlReset(...) can now be called client/server even when flash has been erased.

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

  SynqNet Node with Boot FPGA
    Reference Number: MPI 2111
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
In versions 03.04.02 to 03.04.05, if a boot FPGA was found on a SynqNet network, a service channel error was returned. Motion Console was not able to recognize the error and did not automatically prompt the user to download the correct runtime FPGA.

   

Fix/Solution:
The return values for mpiControlInit(...), mpiControlReset(...), and meiSynqNetInit(...) have been improved:

  1. If ALL node FPGAs are runtime FPGAs and compatible with the MPI, the SynqNet network will change to SYNQ mode and MPIMessageOK will be returned.
  2. If any node FPGA is a Boot type, the initialization will stop, the SynqNet network will change to ASYNQ mode and MEISynqNetMessageNODE_BOOT_FPGA_VERSION will be returned.
  3. If any node FPGA MAC version is not compatible, the initialization will stop, the SynqNet network will change to ASYNQ mode and MEISynqNetMessageNODE_MAC_VERSION will be returned.
  4. If any node FPGA is not compatible with the MPI, the initialization will stop, the SynqNet network will change to ASYNQ mode and MEISynqNetMessageNODE_FPGA_VERSION will be returned.
    Affects to Application Code:
These changes were made to the internal MPI/MEI libraries and will not affect customer code.

  FPGA download erases the drive firmware on Glentek drives
    Reference Number: MPI 2110
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
If a Glentek Omega drive had no runtime FPGA image, downloading the runtime image would erase the drive firmware image from flash memory. To correct this problem in previous versions, the drive firmware would need to be re-downloaded. Glentek drives share the same flash part to store both the runtime FPGA image and the drive firmware.

   

Fix/Solution:
To correct the problem, the download routines now use the node-specific download function to upload the drive firmware, append the runtime FPGA image, and download the full image.

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

  S200 Drive: Setting "OOUT1" as Brake would disengage during initialization
    Reference Number: MPI 2108
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
On the S200 drive, motor digital output, "OOUT1" can be used as either a general purpose output or as Brake. In previous versions, the default configuration was output. If it was configured for a Brake and not saved to flash, the Brake would disengage during SynqNet initialization.

   

Fix/Solution:
To prevent a brake from disengaging during SynqNet initialization, a new GPIO type, "OUTPUT_DISABLED" was added to keep the output in a disabled state during SynqNet initialization. It will now be used as the default configuration state for the S200 GPIO "OOUT1". Any application that uses the S200 GPIO "OOUT1" should configure the I/O explicitly as OUTPUT or as Brake before using this bit. See the Drive FPGA Table: Kollmorgen S200 for more information.

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

  MEIXmpLimitData.State with non-zero Duration
    Reference Number: MPI 2102
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
In firmware version 580B3 (and earlier), MEIXmpLimitData.State was set to 0x10 when the limit's condition block evaluated to TRUE and the Duration had been exceeded. In firmware version 580B4 (and greater) the Duration was ignored.

   

Fix/Solution:
The operation has been returned to the previous logic, where the limit State is not set to 0x10 until the Duration is exceeded.

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

  Yaskawa SGDS, SGDZ-MD, SGDZ-BS Improper Modulo Configuration
    Reference Number: MPI 2089
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
The Yaskawa SGDS, SGDZ-MD, and SGDZ-BS drive initializations incorrectly configured the motor object for modulo operation based on the counts per revolution. The modulo configurations caused the motor object position and the capture values to be incorrect. A workaround for this problem is to use mpiMotorConfigGet(...) and mpiMotorConfigSet(...) to set the MEIMotorEncoderModulo.value = 0.

   

Fix/Solution:
The MEIMotorEncoderModulo{...} configuration was removed from the Yaskawa SGDS, SGDZ-MD, and SGDZ-BS drive modules.
WARNING: mpiMotorFeedback(...) is not supported when using a non-zero modulo value. Capture is NOT supported when using a non-zero modulo value.

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

  mpiMotorEventConfigSet(...) disables a User Limit
    Reference Number: MPI 2087
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
If mpiMotorEventConfigSet(motor, MEIEventTypeLIMIT_USER0, NULL, &motorEventConfigXmp); is followed by mpiMotorEventConfigSet(motor, MEIEventTypeLIMIT_USER0, &motorEventConfig, NULL); and the second mpiMotorEventConfigSet(...) would automatically set the action to NONE, causing the the User Limit to be disabled. The problem was caused by an optimization to disable unused motor limits when the action was NONE.

   

Fix/Solution:
This problem was fixed. The optimization to disable User Limits when the action is NONE has been removed.

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

  SynqNet Initialization hangs with ABS feedback and no motor object
    Reference Number: MPI 2029
    Type: Fixed Bug
    MPI Version: 03.04.06
   

Problem/Cause:
The MPI would hang during SynqNet initialization if the controller's motorCount was less than the physical number of motors on the network and the physical motor had ABS feedback and the controller was connected to an S200 drive. The problem was caused by initializing an ABS feedback device on an S200 drive with a controller motor object that was not enabled. The MPI code had a while loop that waited for the firmware to update its values. Since the motor was not enabled, the values were not updated and the MPI was stuck in the while loop.

   

Fix/Solution:
The problem was corrected by adding a timeout to the while loop. If the motor ABS initialization does not have a controller motor object, the MPI will return a TIMEOUT. To avoid the TIMEOUT error, make sure to set the motorCount with mpiControlConfigSet(...) to the number of physical motors.

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

 

Version 03.04.05

  meiSqNodeDriveParamGet(...) could not read a string parameter
    Reference Number: MPI 2082
    Type: Fixed Bug
    MPI Version: 03.04.05
   

Problem/Cause:
meiSqNodeDriveParamGet(...) could not read a string parameter from the Yaskawa SGDS and SGDZ-MD drives.

   

Fix/Solution:
This problem was corrected.

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

  Drive firmware download with SGDZ-BS
    Reference Number: MPI 2071
    Type: Fixed Bug
    MPI Version: 03.04.05
   

Problem/Cause:
meiSqNodeDownload(...) did not work with the Yaskawa SGDZ-BS drive when downloading drive firmware. The problem was caused by improper transmit and receive buffer configuration.

   

Fix/Solution:
This problem was corrected.

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

  mpiMotorEventConfigSet(ENCODER_FAULT) service command unsupported error
    Reference Number: MPI 2068
    Type: Fixed Bug
    MPI Version: 03.04.05
   

Problem/Cause:
mpiMotorEventConfigSet(ENCODER_FAULT) would fail with a service command unsupported error code. This problem was caused by an improper service command configuration in the MPI library.

   

Fix/Solution:
This problem was corrected.

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

  mpiMotorConfigSet possible hang with encoder ratio
    Reference Number: MPI 2054
    Type: Fixed Bug
    MPI Version: 03.04.05
   

Problem/Cause:
If the encoder ratio was configured with mpiMotorConfigSet(...), there was a possibility of a hang. The problem was caused by non-atomic 64-bit position reads from the controller. If the feedback values are changing across the 32-bit boundary during the position reads, the calculations in the MPI would not work correctly and the MPI would get stuck in a while loop.

   

Fix/Solution:
The problem was corrected by changing the position reads and calculations so that they do not require 64-bit atomicity. Additionally, a timeout was added to the while loop, so if the controller fails during the calculations, a TIMEOUT error will be returned.

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

  Yaskawa SGDS and SGDZ-BS param read problem
    Reference Number: MPI 2047
    Type: Fixed Bug
    MPI Version: 03.04.05
   

Problem/Cause:
meiSqNodeDriveParamGet(...) was unable to read the following Yaskawa SGDS and SGDZ-BS drive parameters: MotorCapacity, MotorType, SerialNumber, EncoderType, Customize number, and Electric angle. The problem was caused by an incorrect parameter addresses in the MPI library.

   

Fix/Solution:
The MPI library parameter addressing was corrected.

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

  SynqNet initialization hangs with ABS feedback and no motor object
    Reference Number: MPI 2029
    Type: Fixed Bug
    MPI Version: 03.04.05
   

Problem/Cause:
The MPI would hang during SynqNet initialization if the controller's motorCount was less than the physical number of motors on the network AND if the physical motor had ABS feedback AND was connected to a Kollmorgen S200 drive. The problem was caused by initializing an ABS feedback device on an S200 with a controller motor object that was not enabled. The MPI code has a while loop that waits for the firmware to update values. Since the motor was not enabled, the values were not updated and the MPI was stuck in the while loop.

   

Fix/Solution:
The problem was corrected by adding a timeout to the while loop. If the motor ABS initialization does not have a controller motor object, the MPI will return a TIMEOUT. To avoid the TIMEOUT error, make sure to set the motorCount with mpiControlConfigSet(...) to the number of physical motors.

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

  Incorrect Synqnet Timing values when new sample rate is saved to flash
    Reference Number: MPI 1880
    Type: Fixed Bug
    MPI Version: 03.04.05
   

Problem/Cause:
Several new SynqNet timing parameters are calculated when the sample rate is changed. These new timing parameters were not being saved in flash memory by mpiControlFlashConfigSet(...) if the current running sample rate matched the new sample rate. Only the value in dynamic memory (not the flash value) of the sample rate was compared to the new sample rate. The timing values were not written to flash becuase the MPI library function, mpiControlFlashConfigSet(...), did not detect a change.

   

Fix/Solution:
The value of the sample rate stored in flash is now checked and if the new sample rate is different, all the timing parameters are written to flash. When a new sample rate is set (the flash value is changed) the network is re-initialized and all the new parameters are stored in flash.

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

 

Version 03.04.04

  ASSERT violation after Save Topology and power cycle
    Reference Number: MPI 2053
    Type: Fixed Bug
    FW Version: 629A3
   

Problem/Cause:
If the topology was saved and the controller was powered off/on, the SynqNet network initialization would fail. The problem will not occur on ZMP-SynqNet series controllers. The cause of the problem was that the ASYNQ config buffer and the packet config buffer were not restored from flash during reset. As a result, the firmware was not be able to bring the network to SYNQ mode after a hard reset (power down).

In the case of a soft reset, the data in the ASYNQ config and packet buffers would still be there and things would appear to work normally.

   

Fix/Solution:
The ASYNQ config and packet config buffers are now explicitly restored from flash during boot up.

    Affects to Application Code:
These changes were made to the controller firmware and will not affect customer code.

  Hot Restart fails to restart some nodes
    Reference Number: MPI 2044
    Type: Fixed Bug
    MPI Version: 03.04.04
   

Problem/Cause:
If Motion Console was open while another application performed a meiSynqNetNodeRestart(...), certain SynqNet nodes (S200, S1800, and Slice I/O) may have failed to restart. This problem was caused by missing node locks during the restart.

   

Fix/Solution:
To correct this problem, node locks were added to meiSynqNetNodeRestart(...).

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

  S200 Absolute Encoder data changes during mpiMotorConfigSet(...)
    Reference Number: MPI 2043
    Type: Fixed Bug
    MPI Version: 03.04.04
   

Problem/Cause:
The S200 drive sends the absolute encoder data on both the primary and the secondary encoder. However, in previous versions the primary encoder data did not have the absolute multi-turn data. Instead it had relative multi-turn data. Only the Aux encoder would have the correct absolute multi-turn feedback data. There was a previous initialization fix (MPI 2022) in the 03.04.02 release, which switched the S200 secondary encoder pointer to be the primary encoder value and set the encoder counter to 1 in the controller. As a result, the drive module switched the pointer on the firmware memory. Therefore, when the mpiMotorConfigSet(...) function was called, it overwrote the changed pointer to the default stored in the MEIXMPBuffer memory.

   

Fix/Solution:
Changes have been made so that the drive module changes the default value stored in the MEIXMPBuffer memory. This will ensure that when the mpiMotorConfigSet(...) function is called, the correct Encoder pointer mapping will occur.

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

  Protection fault occurs at controller frame low event
    Reference Number: MPI 2035
    Type: Fixed Bug
    MPI Version: 03.04.04
   

Problem/Cause:
Types of motion that needed frame-low events to reload the frame buffers were causing protection faults (access violation errors). The MPI relied on a valid motion handle being returned for frame low events. An incorrect (or missing) initialization of the event data could have caused an invalid handle to be returned by the event. Access to a motion object using this handle would cause a protection fault.

   

Fix/Solution:
The MPI now writes the correct motion handle every time the motion (needing frame low events) is started.

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

  S200 Drive parameter COMM_OFF angle wrapping inconsistency
    Reference Number: MPI 2032
    Type: Fixed Bug
    MPI Version: 03.04.04
   

Problem/Cause:
The drive module converted the float parameter COMM_OFF to a signed 12bit number and stored it in the drive. When reading back the value, the 12bit signed number was treated as a 32bit signed number without correctly extending the sign bit before converting it to a float, which made the negative COMM_OFF angles appear as large +ve values.

   

Fix/Solution:
The drive module now reads the 12bit signed COMM_OFF angle and correctly extends the sign bit before converting the number to a float.

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

 

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.

 

Version 03.04.00

  Network Initialization problem with x0103 FPGA
    Reference Number: MPI 1891
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
If a node with a version x0103 FPGA is followed by a node with a boot FPGA, then the node with the boot FPGA (and all subsequent nodes) may not be discovered during network initialization.

   

Fix/Solution:
The delay after sending the ResetComplete packet was increased from 0.1 to 1 seconds.

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

  An application can hang if another application calls meiSqNodeDownload(...)
    Reference Number: MPI 1890
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
If Application X calls meiSqNodeDownload(...) to download drive firmware to a Kollmorgen CD or PicoDad drive, then Application Y will hang on mpiControlInit(...) until Application X either exits or destroys its SqNode handles.

   

Fix/Solution:
Applications will no longer hang when calling meiSqNodeDownload(...).

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

  Calling mpiMotionModify(...) before mpiMotionStart(...)
    Reference Number: MPI 1884
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
A memory access violation occurred when calling mpiMotionModify(...) with PVT and APPEND before calling mpiMotionStart(...). This problem was caused by meiMotionFrameBufferCreate(...), which was allocating memory for a frame and appending it to the frameList. When meiMotionFrameBufferDelete(...) was called, it de-allocated the memory without removing it from the frameList. As a result, frameList had a frame on it with no memory associated with it.

   

Fix/Solution:
meiMotionFrameBufferDelete(...) now removes the frame from the list before freeing up the memory.

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

  Noise Excitation Problem
    Reference Number: MPI 1854
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
Noise from the Test Signal can get added to the DAC output if the test signal is active for PID, the PID multiplying coefficient is zero, and the multiplying coefficient for PIV is non-zero.

   

Fix/Solution:
The algorithm types are now checked before the Test Signal multiplying coefficient is used.

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

  AMP Enable Not Working for Stepper Drives
    Reference Number: MPI 1848
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
The AMP Enable was not working properly for Stepper drives. This problem was caused by the AMP enable polarity, which was inverted.

   

Fix/Solution:
An FPGA configuration was changed. The AMP enable should now function properly.

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

  mpiMotionStart/Modify may Incorrectly Return Bad Path Data Error
    Reference Number: MPI 1847
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
The mpiMotionStart and mpiMotionModify may have incorrectly returned MEIMotionMessageBAD_PATH_DATA with multi-dimensional PT, PTF, PVT, PVTF, Spline, BSpline, BSpline2, and Bessel moves.

   

Fix/Solution:
Checks for finite values in motion code have been modified to only check valid elements for the time-delta array.

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

  Motion Out of Frames Error when using Gates
    Reference Number: MPI 1843
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
Calls to mpiMotionStart(...) with a HOLD attribute would intermittently cause an Out of Frames status. This was caused by the control word from a motion frame being OR'd into the axis status. A small timing window could allow the motion status to interpret the axis status with an Out of Frames error.

   

Fix/Solution:
The problem was corrected by eliminating the control word ORing with the axis status.

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

  Topology Mismatch with Ring vs. String
    Reference Number: MPI 1841
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
In previous versions, the topology checker did not consider ring and string topolgies to be different. It was previously thought that as long as the node types and the ordering of the nodes was the same, the difference between a ring and a string topology was inconsequential. However, for applications that rely on the ring topology for fault tolerance, it is helpful to know if a string was discovered instead of a ring.

   

Fix/Solution:
The topology checker now verifies that the network type that is discovered matches the expected network type. If the network type does not match, a topology mismatch error will be returned.

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

  Watchdog sample applications encountered race conditions
    Reference Number: MPI 1840
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
Watchdog sample applications encountered race conditions, which would cause intermittent false-positive events.

   

Fix/Solution:
The watchdog sample applications have been modified and no longer contain a race condition.
See the watchdog1.c, watchdog2.c, and watchdog3.c sample applications.

    Affects to Application Code:
Update your application code to use the revised setupWatchdog(…) function.

  Memory Access Violation when calling mpiMotionModify(...)
    Reference Number: MPI 1838
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
A memory access violation occurred when mpiMotionMotionModify(...) with PVT and APPEND was called before mpiMotionStart(...).

   

Fix/Solution:
Changes were made to the MPI to correct this problem.

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

  Error when enabling more than one recorder
    Reference Number: MPI 1823
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
When enabling more than one recorder, the following error message was received:

Controller 0: mpiControlConfigSet: Control: Invalid record count set for recorder object :: Recorder Number 1 : recordCount must be >= 1

This error would occur when changing recorderCount from 1 to 2 in Motion Console.

   

Fix/Solution:
A define was added to the MPI for the default recordCount (same as the firmware default = 16384):
       #define MPIControlRECORD_COUNT_DEFAULT (16384)

The MPI will now use the default value if the user's application specifies 0 for recordCount. The error code MPIControlMessageEXTERNAL_MEMORY_OVERFLOW will be returned if there is insufficient memory available for the specified or default recordCount. The MPI will clean-up left-over recordCounts when disabling recorders by setting the recordCounts to back to zero.

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

  Multi-turn Reset Failure through the Controller's IN port
    Reference Number: MPI 1822
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
In a string topology, the Yaskawa Multi-turn Reset routine would fail if the drive was connected to the controller's SynqNet IN port. The discovery algorithm in the drive module only looked for drives through the controller's OUT port.

   

Fix/Solution:
The node discovery routine was changed and now accesses the drive through both the IN and OUT ports of the controller. The Yaskawa Multi-turn Reset routine can now work with any topology type.
NOTE: The Yaskawa drive needs to be in Asynq mode when performing a Multi-turn Reset.

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

  Configurable Demand Modes
    Reference Number: MPI 1796
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
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. All drives will default to a demand mode that it supports. Check with the drive manufacturer for alternate settings. Nodes that do not support a drive interface (eg RMB, Trust, Soonhan) do not have the option of configurable demand modes, and will show a fixed value of MEIMotorDemandModeVELOCITY.

   

Fix/Solution:
MEIMotorDemandMode has been added to the MPI and the MEIMotorConfig structure now contains demandMode.

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

  Configurable AMP_WARNING Limit Action
    Reference Number: MPI 1782
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
The AMP_WARNING limit action was not configurable through meiMotorConfigSet(...) if the MEIMotorConfig structure was passed in with the MPIMotorConfig structure.

   

Fix/Solution:
The AMP_WARNING limit action is now configurable through meiMotorConfigSet(...).

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

  Postfilter methods did not work over client-server connection
    Reference Number: MPI 1779
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
Postfilter methods did not work over a client-server connection.

   

Fix/Solution:
In previous versions, using postfilter methods over a client-server connection would result in a memory access violation. This problem has been corrected and the postfilter methods now work over client-server connections.

The postfilter methods are:

meiFilterPostfilterGet(...)
meiFilterPostfilterSet(...)
meiFilterPostfilterSectionGet(...)
meiFilterPostfilterSectionSet(...)

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

  Rollover Issue with Path Motion
    Reference Number: MPI 1763
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
Under the following conditions, mpiMotionStart(...) would miscalculate the acceleration parameter for the first section of the PVT (or other multi-point) move. The result was usually a large position discontinuity.

  • commandPosition = 2144920611
  • origin = 2619887
  • first position of pvt = 2144920606

The problem was caused by the MPI using the wrong entry in an array when calculating the initial delta between the current command position and the first point in the path move. As a result, the MPI did not adjust the origin value and subsequently miscalculated the move parameters for the initial frame.

   

Fix/Solution:
Changes have made so that the MPI uses the correct entry in the array.

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

  Service Channel Timeout during SynqNet Initialization
    Reference Number: MPI 1761
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
In a ring configuration, with topology saved, a service channel timeout would occur during SynqNet initialization. As a result, all communication via the service channel would fail. The problem was caused by an improper logical sequence when turning off the repeater on the last node, which caused the service channel DONE handshake bit to be stuck on.

   

Fix/Solution:
The problem was corrected by clearing the status header BEFORE starting the service channel transaction that turns off the repeater. The fix was implemented in the controller firmware.

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

  ZMP Controller I/O Mapping Error
    Reference Number: MPI 1756
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
The meiContorlInfo(...) method incorrectly decoded the labels for the digital inputs on a ZMP-SynqNet controller. However, the information for an XMP-SynqNet controller was reported correctly.

   

Fix/Solution:
The meiContorlInfo(...) method has been modified and now correctly reports information for both ZMP-SynqNet and XMP-SynqNet controllers.

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

  Position Jump with mpiMotionModify(...)
    Reference Number: MPI 1753
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
A position jump resulted when an mpiMotionStart(...) with an S-Curve move type and final velocity attribute was followed by a mpiMotionModify(...) during the last few samples of the S-Curve motion. Due to a race condition between the foreground and background task in the controller, the final velocity portion of the move was misscalculated because the trajectory time value was incorrect.

   

Fix/Solution:
To correct the problem, the logic for setting the time value for a velocity frame was changed. If the modify flag is not set, time = 0. If the modify flag is set and the count is not 0, do not change the time value because it is already the correct value. If the modify flag is set and count == 0, add the feedrate to the TC.Time value to get the time value.

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

  Velocity and Acceleration Feedforwards for Shaped Trajectories
    Reference Number: MPI 1743
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
The command shaping was only applied to position so the velocity and accleration feedforwards were calculated based on the shaper input rather than the output. This problem would only appear if Convolve patented trajectory shaping was enabled.

   

Fix/Solution:
The shaping filter was modified to shape both the command position and velocity. Since the acceleration used for feedforward is derived from the shaped velocity the acceleration feedforward has also been corrected.

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

  SqNode UpStreamError limits are not saved to flash
    Reference Number: MPI 1505
    Type: Fixed Bug
    MPI Version: 03.04.00
   

Problem/Cause:
In previous versions, meiSqNodeFlashConfigSet(...) did not save the packet error upStreamError limits to flash because there was no place in the firmware memory allocated to store the values.

   

Fix/Solution:
Registers were added in firmware to hold fault and fail values for all nodes. Values can now be saved to flash memory. The firmware was modified to use the values specified to set the fault and fail thresholds instead of using the defines.

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

 

Open Issues

Existing Bugs

  meiMotionConfigSet(...) can crash a ZMP controller
    Reference Number: MPI 2241
    Type: Existing Bug
    MPI Version: 03.04.10
   

Warning:
Calling mpiMotionConfigSet(...) will crash a ZMP controller if:

MEIMotionConfig.axisNumber[N] = -1

and

MEIMotionConfig.axisCount is greater than N

For example, the following code will cause a ZMP controller to crash:

MEIMotionConfig.axisCount = 3; 
MEIMotionConfig.axisNumber[0] = 0; 
MEIMotionConfig.axisNumber[1] = 1; 
MEIMotionConfig.axisNumber[2] = -1; 
mpiMotionConfigSet(...); 

In MPI version 03.04.11, protection will be added to prevent mpiMotionConfigSet(...) from allowing the user to enter invalid data.


  MEIMotorInfo.sqNode.driveIndex invalid value
    Reference Number: MPI 2168
    Type: Existing Bug
    MPI Version: 03.04.08
   

Problem/Cause:
The driveIndex value reported by meiMotorInfo(...) is wrong. The MPI incorrectly sets this value to the motor number. This will be corrected in a future release.


  Discovery through IN port fails to detect nodes beyond first node with 0x020C Boot FPGA
    Reference Number: MPI 1908
    Type: Existing Bug
    MPI Version: 03.04.00
   

Problem/Cause:
If the network topology is a string or dual-string, and the first node connected to the controller's IN port has a Boot FPGA version 0x020C, then any nodes beyond the first node will not be discovered. To recover, download the Runtime FPGA to the node. After the Runtime FPGA is downloaded, all nodes will be discovered properly.


  Multiple eventMgr objects over client/server bug
    Reference Number: MPI 1578
    Type: Existing Bug
    MPI Version: 03.04.00
   

Problem/Cause:
While MEI discourages the use of multiple eventMgrs objects for one controller, some customers still use multiple eventMgrs in specific situations. A problem has been found while running multiple eventMgr objects over client/server. This problem can cause the loss of events and will deadlock the system in certain situations.

 

Limitations

  Capture is not supported when using a non-zero modulo value
    Type: Limitation
    MPI Version: 03.04.00
   

Cause:
Capture code in the MPI library does not currently support the use of moduloed values. Please see MPI 2089 for additional information.


  S1800 drive does not support monitor configuration
    Reference Number: MPI 2171
    Type: Limitation
    MPI Version: 03.04.00
   

Problem/Cause:
meiSqNodeDriveMonitorConfigGet/Set(...) will return a "Service cmd unsupported" error with a Kollmorgen S1800 drive. As of drive firmware version 1.19, the S1800 drive does not support the standard SynqNet service commands for monitor configurations.


  rmbSsiEncoderConfigGet/Set(...) Limitations
    Reference Number: MPI 2018
    Type: Limitation
    MPI Version: 03.04.00
   

mpiMotorConfigGet(...) and mpiMotorConfigSet(...) in the MPI release 03.04.00 (or later) support the configuration of SSI encoder with baud rates up to 500kHz. We recommend using mpiMotorConfigGet/Set(...) for SSI configuration.

Do NOT use rmpSsiEncoderConfigGet/Set(...) for SSI configuration. rmbSsiEncoderConfigGet/Set(...) does not have a parameter to specify the axis number. rmbSsiEncoderConfigGet/Set(...) will be removed in MPI version 03.05.00.


  Possible motor jump with Stop action and amp disable/enable
    Reference Number: MPI 1946
    Type: Limitation
    MPI Version: 03.04.00
   

Warning!
The motor can jump if you perform the following sequence:

  1. Use the STOP action to pause a motion.
  2. Disable the amplifier.
  3. Physically move the motor with an external force.
  4. Enable the amplifier.
  5. Motor will servo to the location where the amplifier was disabled. This may cause a motor to jump!

To avoid a jump, either use E-STOP or use a motion RESET action to clear the trajectory before the amplifier enable.

Cause:
This behavior is a result of the STOP action, which pauses the motor on the move trajectory. Since the trajectory is still active, an amp disable/enable will not automatically set the command position equal to the actual position. The move trajectory can be continued by using the RESUME action or cleared by the RESET action.


  Moves longer than 31 bits
    Reference Number: MPI 1918
    Type: Limitation
    MPI Version: 03.04.00
   

Problem/Cause:
The motion types: MPIMotionTypeS_CURVE, MPIMotionTypeTRAPEZOIDAL, and MPIMotionTypeS_CURVE_JERK do not support move lengths beyond 31 bits (+/- 2,147,483,648). Longer moves will require the application to break-up the motion into multiple mpiMotionStart(...) and mpiMotionModify(...) calls. The maximum move distance will be extended in a future release. The motion type: MPIMotionTypeVELOCITY does not support acceleration or deceleration profiles (acceleration frame) longer than 31 bits (+/- 2,147,483,648). Make sure the acceleration distance (Vinitial * time + (Accel/2 * time * time)) is less than 31 bits.


  Recorder Start/Stop triggers
    Reference Number: MPI 1917
    Type: Limitation
    MPI Version: 03.04.00
   

Problem/Cause:
The Data Recorder does not support 64bit position comparisons. Only the lower 32bits are evaluated for position triggers.


  drive Map does not support .dm files for non-windows OS
    Reference Number: MPI 1697
    Type: Limitation
    MPI Version: 03.04.00
   

Problem/Cause:
The MPI only supports drive map files (*.dm) for Windows XP/NT/2000. Alternative operating systems are not supported. This feature will be added in a future release. See SynqNet Drive Parameters.

 

 

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