.

Release Note
MPI Library Version 03.04.00

Release Type
MPI Version
Release Date
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.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.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.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
    S300 drive cannot support 1kHz controller sample rate - MPI1919
    Multiple recorder object create/delete - MPI1916
    Discovery through IN port fails to detect nodes beyond first node with 0x020C Boot FPGA - MPI1908
    S1800 Drive monitors are not supported - MPI1899
    Multiple eventMgr via client/server - MPI1578

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

 

New Features

Version 03.04.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.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.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

  S300 drive cannot support 1kHz controller sample rate
    Reference Number: MPI 1919
    Type: Existing Bug
    MPI Version: 03.04.00
   

Problem/Cause:
If the controller sample rate is configured for 1kHz and a Kollmorgen S300 drive is connected to the network, the SynqNet initialization will fail.


  Multiple recorder object create/delete
    Reference Number: MPI 1916
    Type: Existing Bug
    MPI Version: 03.04.00
   

Problem/Cause:
mpiRecorderCreate(...) allows an application to create multiple recorder objects using the same controller recorder number. mpiRecorderCreate(...) also supports a (-1) for the recorder number, which will automatically select the next available recorder. If multiple recorder objects are created specifying the same recorder number (0,1,2, etc.) and one object is deleted (but not all), the next mpiRecorderCreate(...) call with recorder number = -1 may improperly, automatically select a recorder number that is not available.


  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.


  S1800 Drive monitors are not supported
    Reference Number: MPI 1899
    Type: Existing Bug (S1800 drive only)
    MPI Version: 03.04.00
   

Problem/Cause:
Kollmorgen S1800 drives (Firmware versions v1.7, v1.8) do not support direct service commands to configure monitors. The MPI will return an UNSUPPORTED error for S1800 drive monitor configuration.


  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

  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.


  Point to point 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.


  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.


  Kaff for velocity demand mode
    Reference Number: MPI 1909
    Type: Limitation
    MPI Version: 03.04.00
   

Problem/Cause:
The velocity demand mode does not support an "Acceleration Feedforward Torque" demand to the drive. This feature will be added in a future release. See SynqNet Demand Modes.


  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-2021 Motion Engineering