|
Release Note
MPI Library Version 03.01.00
|
Release Type
|
MPI Version
|
Release Date
|
|
Production Release
|
03.01.00 |
30July2004
|
New Features
Version 03.01.00
| |
Support
for AMC Drive DQ113EE |
| |
|
Reference Number: MPI 1392 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
Support has been added for the AMC Drive DQ113EE. This drive is
similar to the rest of the DQ-series family with the exception of
its I/O (4 outputs, 12 inputs). Changes were made to the amc_digiflex.c
drive module.
|
| |
|
How do I use this feature?
For more information about the AMC Drive DQ113EE, please contact
Advanced Motion Controls.
|
| |
Probe
Support for Kollmorgen CD Drive |
| |
|
Reference Number: MPI 1391 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The Kollmorgen CD Drive now has Probe support.
|
| |
|
How do I use this feature?
Please see the Probe
object.
|
| |
Probe
Support for the RMB-10V2 |
| |
|
Reference Number: MPI 1355 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The RMB-10V2 now has Probe support. In order to use Probe with the
RMB-10V2, you must download the C0FE0033 FPGA. In order to have
enough space for the Probe feature, Pulse support was removed from
the C0FE0033 FPGA.
|
| |
|
How do I use this feature?
Please see the Probe
object.
|
| |
meiCanCommand
supports NMT Protocol |
| |
|
Reference Number: MPI 1354 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The following new Can commands have been added to meiCanCommandType.
MEICanCommandTypeNMT_ENTER_PRE_OPERATIONAL
MEICanCommandTypeNMT_START_REMOTE_NODE
MEICanCommandTypeNMT_STOP_REMOTE_NODE
MEICanCommandTypeNMT_RESET_NODE
MEICanCommandTypeNMT_RESET_COMMUNICATION
These new Can commands allow each of the CANOpen protocols NMT
commands to be issued from the host. These replace the original
MEICanCommandTypeNMT_STOP and MEICanCommandTypeNMT_START commands.
|
| |
|
Code Interface:
|
can.h
OLD
typedef enum {
MEICanCommandTypeSDO_READ,
MEICanCommandTypeSDO_WRITE,
MEICanCommandTypeCLEAR_STATUS_BITS,
MEICanCommandTypeBUS_START,
MEICanCommandTypeBUS_STOP,
MEICanCommandTypeNMT_STOP,
MEICanCommandTypeNMT_START
} MEICanCommandType;
NEW
typedef enum {
MEICanCommandTypeSDO_READ,
MEICanCommandTypeSDO_WRITE,
MEICanCommandTypeCLEAR_STATUS_BITS,
MEICanCommandTypeBUS_START,
MEICanCommandTypeBUS_STOP,
MEICanCommandTypeNMT_ENTER_PRE_OPERATIONAL,
MEICanCommandTypeNMT_START_REMOTE_NODE,
MEICanCommandTypeNMT_STOP_REMOTE_NODE,
MEICanCommandTypeNMT_RESET_NODE,
MEICanCommandTypeNMT_RESET_COMMUNICATION,
} MEICanCommandType;
For more information, see MEICanCommandType.
|
|
| |
|
How do I use this feature?
The new NMT_ENTER_PRE_OPERATIONAL and NMT_START_REMOTE_NODE commands
are used in the same way as the original NMT START and NMT_STOP
commands.
|
| |
Addition
of Configurable Axis Frame Buffers |
| |
|
Reference Number: MPI 1353 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The controller's axis frame buffers are now configurable on a per
axis basis.
This feature is useful when frame buffers greater than the default
128 frames are required, such as when the axis Camming feature is
used.
|
| |
|
Code Interface:
|
control.h
NEW
#define MPIControlMAX_AXES (32)
typedef struct MPIControlConfig {
...
long axisFrameCount[MPIControlMAX_AXES];
...
}MPIControlConfig;
For more information, see MPIControlConfig.
|
|
| |
|
How do I use this feature?
The number of frames allocated for any one axis MUST be a power
of 2 (128, 256, 512, etc...)
WARNING!
Due to the nature of dynamic allocation and the clearing of external
memory buffers, mpiControlConfigSet(...) should ONLY be called at
the time of motion application initialization and NOT during an
motion.
|
| |
Support
for auto-detect bit rate feature on MEI CANopen nodes |
| |
|
Reference Number: MPI 1351 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
To simplify the setup and initialization process, the CANOpen I/O
nodes from MEI support an auto-detect bit rate feature that automatically
detects and sets the appropriate bit rate for the CAN Network Adapter.
For more information, please see the SLICE
I/O Quick-Start Guide: CANopen.
To support CANOpen nodes that support auto-bit rate detection, CAN
firmware versions from 2B1 and onwards now work with nodes that
support auto-bit rate detection.
|
| |
|
How do I use this feature?
The auto-detect bit rate feature is only supported with CAN firmware
CAN002B1 and later.
|
| |
Version.exe
reports CAN node version information |
| |
|
Reference Number: MPI 1326 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
Version.exe now reports the vendor ID, product code, version number
and serial number of all the nodes on the CANopen network. You can
use version.exe to quickly identify the type of node on the CAN
network and what version of CAN firmware is being run on the CANopen
node.
|
| |
|
How do I use this feature?
|
C:\>version
MPI: version 03.01.00
MPI firmware: version 525 option 0
XMP firmware: version 525 revision B sub-revision 4 option
0
branchId
0
Driver: version 3.00
PLD : version 0x0011 option 0x2192
Rincon: version 0x0218 package 0x9201
XMP : T014-0001 Serial Number 440060
CAN
Bootloader Version: 2
CAN Firmware: version 2 revision B sub-revision 1
CAN Node[4]
Type : 401 (IO Node)
Vendor ID : 0x014F (MEI)
Product Code : 0x0204
Version Number : 0x10030
Serial Number : 0x1234
CAN Node[5]
Type : 401 (IO Node)
NOTE: Node 4 is an MEI Slice I/O node and Node 5 is
a CANOpen I/O node from a supplier that does not support reporting
the vendor ID information.
|
|
| |
Addition
of CAN Node Version calls to the MPI |
| |
|
Reference Number: MPI 1323 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
CAN Node Version calls have been added to the MPI. The addition
of these fields will allow you to quickly identify the type of node
on the CAN network and what version of CAN firmware is being run
on the CANopen node.
|
| |
|
Code Interface:
|
can.h
NEW
typedef struct MEICanNodeInfo {
MEICanNodeType type;
unsigned long digitalInputCount;
unsigned long digitalOutputCount;
unsigned long analogInputCount;
unsigned long analogOutputCount;
MEICanHealthType healthType;
unsigned long
vendorID;
unsigned long productCode;
unsigned long versionNumber;
unsigned long serialNumber;
} MEICanNodeInfo;
For more information, see MEICanNodeInfo.
|
|
| |
|
How do I use this feature?
Please see the documentation for the MEICanNodeInfo
method.
|
| |
Mapable
Secondary Encoder Programming Interface |
| |
|
Reference Number: MPI 1319 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
Support has been added for re-mapping secondary encoders to different
motors on the same node. Please see the documentation for the meiSqNodeConfigSet(...)
method.
|
| |
|
Code Interface:
|
sqNode.h
typedef struct MEISqNodeFeedbackSecondary {
long motorIndex;
} MEISqNodeFeedbackSecondary;
typedef struct MEISqNodeConfig {
MEISqNodeConfigAlarm nodeAlarm;
MEISqNodeConfigIoAbort ioAbort;
MEISqNodeConfigPacketError upStreamError;
MEISqNodeConfigPacketError downStreamError;
MEISqNodeConfigUserFault userFault;
MEISqNodeFeedbackSecondary
feedbackSecondary
[MEISqNodeMaxFEEDBACK_SECONDARY];
} MEISqNodeConfig;
For more information, see MEISqNodeFeedbackSecondary
and MEISqNodeConfig.
|
|
| |
|
How do I use this feature?
Please see the documentation for the meiSqNodeConfigSet
method.
|
| |
Manufacturer
and User Fields added to the EEPROM |
| |
|
Reference Number: MPI 1311 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
Manufacturer and User Fields added to the EEPROM as specified in
the Node ID specification. This feature should be used for reading
and writing both manufacturer and user information to the node EEPROM.
|
| |
|
Code Interface:
|
sqNode.h
NEW
typedef struct MEISqNodeUserData {
char data[MEISqNodeUserDATA_CHAR_MAX];
}MEISqNodeUserData
For more information, see MEISqNodeUserData.
typedef struct MEISqNodeInfoId {
unsigned long nodeType;
/* product/mfg code */
char
*nodeName; /* product/mfg string */
unsigned long option;
/* product
option code*/
unsigned long switchId;
/* rotary switch id */
unsigned long unique;
/* unique id code */
long exactMatch;
/* TRUE/FALSE */
char serialNumber[MEISqNodeID_CHAR_MAX];
char modelNumber[MEISqNodeID_CHAR_MAX];
char manufacturerData
[MEISqNodeManufacturerDATA_CHAR_MAX];
} MEISqNodeInfoId;
For more information, see MEISqNodeInfoId.
|
|
| |
|
How do I use this feature?
This feature should be used to store vendor and user specific information
on the node.
|
| |
Replacement
of MEIControlVersion with MEIControlInfoX structures |
| |
|
Reference Number: MPI 1294 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The lengthy MEIControlVersion structure was divided into several
MEIControlInfoX structures.
|
| |
|
Code Interface:
|
stdmei.h
OLD - Deleted
typedef struct MEIControlVersion {
struct { /* control.c */
char *version;
/* MEIControlVersionMPI (YYYYMMDD) */
struct { /* xmp.h */
long version; /*
MEIXmpVERSION */
long option; /*
MEIXmpOPTION */ }
firmware;
} mpi;
struct {
long version;
/* hardware version */
struct { /*
MEIXmpData.SystemData{} */
long
version; /* MEIXmpVERSION_EXTRACT(SoftwareID) */
char
revision; /* ('A' - 1) + MEIXmpREVISION_EXTRACT(SoftwareID)
*/
long
subRevision; /* MEIXmpSUB_REV_EXTRACT(Option) */
long
developmentId; /* MEIXmpDEVELOPMENT_ID_EXTRACT(Option) */
long
option; /* MEIXmpOPTION_EXTRACT(Option) */
long
userVersion;
long
branchId;
} firmware;
struct {
struct
{
long
version;
long
option;
}
PLD;
struct
{
char
number[10];
char
rev[5];
}
model;
struct
{
long
version;
}
FPGA;
} board;
} xmp;
struct {
char version[10];
}
driver;
} MEIControlVersion;
typedef struct MEIControlInfo {
char tNumberMEIControlSTRING_MAX;
char serialNumber[MEIControlSTRING_MAX];
char boardType[MEIControlSTRING_MAX];
}MEIControlInfo;
NEW - Added
typedef struct MEIControlInfo {
MEIControlInfoMpi mpi;
MEIControlInfoFirmware firmware;
MEIControlInfoPld pld;
MEIControlInfoRincon rincon;
MEIControlInfoHardware hardware;
MEIControlInfoDriver driver;
} MEIControlInfo;
For more information, see MEIControlInfo.
|
|
| |
|
How do I use this feature?
For more information, see MEIControlInfo.
|
| |
New
Compensator object |
| |
|
Reference Number: MPI 1287 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
A new Compensator object has been added to the MPI to handle Axis
position compensation based on compenstion values loaded onto the
controller.
|
| |
|
How do I use this feature?
Please see the MPI
Software Documentation for more information.
|
| |
Encoder
Filter Enable/Disable has been added to MEIMotorConfig |
| |
|
Reference Number: MPI 1269 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The ability to disable the encoder filter on quadrature encoders
has been added to MEIMotorConfig. This feature should be used to
enable or disable the quadrature encoder filter.
|
| |
|
Code Interface:
|
stdmei.h:
NEW
typedef struct MEIMotorEncoder {
MEIMotorEncoderType type;
long encoderPhase;
/* 0 => normal, else reversed */
long filterDisable;
/* 0 => quad filter enabled,
else not enabled */
long countsPerRev;
MEIMotorEncoderRatio ratio;
MEIMotorEncoderReverseModulo reverseModulo;
} MEIMotorEncoder;
See MEIMotorConfig
and MEIMotorEncoder.
|
|
| |
|
How do I use this feature?
To disable the filter, set filterDisable to TRUE.
|
| |
An
AmpWarning event has been added to MPIMotorConfig/Status |
| |
|
Reference Number: MPI 1230 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
An AmpWarning event has been added to MPIEventType. This feature
should be used to trigger motorEvents off of the AmpWarning bit,
which is returned by the drive through the Dedicated I/O word.
|
| |
|
Code Interface:
|
| |
|
How do I use this feature?
The configuration and reporting of the AMP_WARNING event behaves
identically to the AMP_Fault event. To configure the event type,
use MPIMotorConfig.
To check the status of the event type, use mpiMotorStatus.
|
| |
ZMP
Software Support |
| |
|
Reference Number: MPI 1197 |
| |
|
Type: New Feature |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
Support has been added for the ZMP-series controllers. The ZMP-series
is a new high performance SynqNet controller. It supports the same
features as the XMP-series and uses the same MPI Library. There
are currently no differences in MPI methods or data structures for
the ZMP controllers. The main difference between the XMP and ZMP
controllers is performance. In general, ZMP controllers can be operated
at sample rates from 4 to 8 times the rates for XMP controllers.
The ZMP can be used in place of XMP controllers for applications
with performance requirements that exceed the limits of XMP controllers.
|
| |
|
How do I use this feature?
The installation of ZMP controllers is identical to that of XMP
controllers. Please see the ZMP
Hardware Quick-Start Guide for details.
|
General Changes
Version 03.01.00
|
MoveID
and ElementID changed to 16-bit resolution |
| |
|
Reference Number: MPI 1434 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
MoveID and ElementID have been changed to 16-bit resolution. The
16-bit limit on both the MoveID and ElementID was implemented because
there was not enough room to support 32 bits for each of the MoveID
and ElementID parameters in both the positive and negative frame
directions.
For both the MoveID and ElementID, there is now support for 32
bits in both the positive and negative frame directions. For example,
in a frame, the lower 16 bits of the MoveID field represent the
MoveID for the positive frame direction. The upper 16 bits represent
the MoveID for the negative direction.
|
| |
|
How do I use this feature?
The basic functionality of MoveID and ElementID has not changed.
The only change is that the MoveID and ElementID values are limited
to 16 bits. The user does not need to change their implementation
(other than to choose IDs that are limited to 16 bits). This is
a lower lever implementation issue.
|
|
Changed
meiSqNodeAnalogIn(...) to meiSqNodeAnalogInput(...) |
| |
|
Reference Number: MPI 1428 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
meiSqNodeAnalogIn(...) has been changed to meiSqNodeAnalogInput(...).
This method should be used to read analog inputs located on the
Node. It is used on an application level to read analog inputs.
|
| |
|
Code Interface:
|
sqNode.h:
OLD
long meiSqNodeAnalogIn(MEISqNode
node,
long channel,
double *state);
NEW
long meiSqNodeAnalogInput(MEISqNode
node,
long channel,
double *state);
|
|
| |
Changes
to meiObject[Flash]ConfigGet and meiObject[Flash]ConfigSet |
| |
|
Reference Number: MPI 1368 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The MEI object config method and object flash config method interfaces
have been changed to be consistent with the MPI object config and
flash config methods.
NOTE: This change breaks backwards compatibility for the
effected MEI config methods. Your application may need to be recompiled.
In addition, the meiCanFlashNodeConfigGet/Set methods have been
depricated in this release. While these methods are still supported,
MEI reserves the right to remove depricated methods. Your application
should use the new meiCanNodeFlashConfigGet/Set
methods if you plan to upgrade to future versions of the MPI.
|
| |
|
Code Interface:
|
| |
New
MPI Version Numbering |
| |
|
Reference Number: MPI 1358 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The MPI version numbering has been updated from date codes (YYYYMMDD)
to a more traditional numbering scheme (Major.Minor.Release). Please
see MPI
Version Numbering for details. The Software Release Types have
also been formally defined. Please see MPI
Release Types for details.
|
| |
|
Code Interface:
|
control.h:
The version defines were expanded and changed to support the
new version numbering.
OLD
#define MPI_VERSION "20040330"
#define MPI_INTERFACE_VERSION "20040330"
NEW
#define MPI_VERSION_MAJOR "02"
#define MPI_VERSION_MINOR "01"
#define MPI_VERSION_RELEASE "Dev0"
#define MPI_VERSION MPI_VERSION_MAJOR"."MPI_VERSION_MINOR"."MPI_VERSION_RELEASE
#define MPI_INTERFACE_VERSION MPI_VERSION_MAJOR"."MPI_VERSION_MINOR
|
|
| |
Deletion of MEIXmpIOFrame |
| |
|
Reference Number: MPI 1349 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
In xmp.h, the MEIXmpIOFrame data type was deleted and the
MEIXmpHoldFrame data type was created as a replacement. The
functionality has not changed and should be used the same way for
triggers.
In xmp.h, the MEIXmpOutputFrame data type was created. It
is essentially the same as MEIXmpIOFrame, except Mask is
now OffMask and Pattern is now OnMask.
As a result of these changes, MEIMotionAttrOutput was modified
accordingly.
|
| |
|
Code Interface:
|
stdmei.h:
OLD
typedef struct MEIMotionAttrOutput {
MEIMotionAttrOutputType type;
union {
long *output;
long motor;
} as;
long mask;
long pattern;
long pointIndex; /* MEIMotionAttrMaskOUTPUT
for path motion - point index for turning on output - used
with point lists */
} MEIMotionAttrOutput;
NEW
typedef struct MEIMotionAttrOutput {
MEIMotionAttrOutputType type;
union {
long *output;
long motor;
} as;
long offMask;
long onMask;
long pointIndex; /* MEIMotionAttrMaskOUTPUT
for path motion - point index for turning on output - used
with point lists */
} MEIMotionAttrOutput;
For more information, see MEIMotionAttrOutput.
|
|
| |
|
How do I use this feature?
This feature should be used when there is a frame set or to clear
an output.
For MEIMotionAttrOutput:
OffMask - any bits that are SET will be turned off.
OnMask - any bits that are SET will be turned on.
The OffMask is applied first: output & = ~OffMask
For Output frames, bits Set in the OffMask are turned OFF and bits
Set in the OnMask are turned ON.
The order of operations should be:
output &= ~OffMask;
output |= OnMask;
Since the OnMask is applied last, the OnMask has precedence. If
a bit is set in both the OffMask AND the OnMask, the result is that
the bit is turned ON.
|
| |
MEI SLICE I/O using CANopen Interface reads digital I/O |
| |
|
Reference Number: MPI 1325 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The digitalInputCount and digitalOutputCount fields of the MEICanNodeInfo
structure report the number of digital inputs and outputs a node
supports. The CANOpen protocol only allows the number of digital
inputs and outputs to be interrogated in multiples of eight (i.e.
if a node has two digital inputs then digitalInputCount will return
eight). For MEI CANOpen Slice nodes, an extension to the CANOpen
protocol is supported that allows the exact number of digital inputs
to be returned in this field. The CAN firmware on the XMP (versions
2A7 and higher) has been modified to use this field if it is available.
Nodes that don't support this feature (i.e. nodes not made by MEI)
are still supported, the only difference is that the number of digital
inputs and outputs will still be reported in multiples of eight.
|
| |
|
Code Interface:
|
can.h:
typedef struct MEICanNodeInfo {
MEICanNodeType type;
unsigned long digitalInputCount;
unsigned long digitalOutputCount;
unsigned long analogInputCount;
unsigned long analogOutputCount;
MEICanHealthType healthType;
unsigned long vendorID;
unsigned long productCode;
unsigned long versionNumber;
unsigned long serialNumber;
} MEICanNodeInfo;
For more information, see MEICanNodeInfo.
|
|
| |
|
How do I use this feature?
The digitalInputCount and digitalOutputCount fields of the MEICanNodeInfo
structure report the number of digital inputs and outputs a node
supports. The CANOpen protocol only allows the number of digital
inputs and outputs to be interrogated in multiples of eight, i.e.
if a node has two digital inputs then digitalInputCount will return
eight.
For MEI CANOpen SLICE I/O nodes, an extension to the CANOpen protocol
is supported that allows the exact number of digital inputs to be
returned in the digitalInputCount field. The CAN firmware for the
XMP has been modified to use this field if it is available. Nodes
that do NOT support this feature (i.e. nodes not made by MEI) are
still supported, the only differance is that the number of digital
inputs and outputs will still be reported in multiples of eight.
For more information, see MEICanNodeInfo.
|
| |
Allow MPI to set RESUME any time a STOP is in progress or finished |
| |
|
Reference Number: MPI 1320 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
Allow MPI to set RESUME anytime a STOP is in progress or finished.
MPI does not allow RESUME while STOPPING, only when STOPPED. This
feature is helpful for an immediate RESUME after a STOP has been
commanded without having to wait for a STOP to complete.
|
| |
|
How do I use this feature?
Use mpiMotionAction() as normal for an immediate RESUME after a
STOP has been commanded without having to wait for STOP to complete.
|
| |
MPIMotorEventTrigger.encoder should be MPIMotorEncoderFault |
| |
|
Reference Number: MPI 1314 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
MPIMotorEventTrigger.encoder changed from "long" to MPIMotorEncoderFault.
|
| |
|
Code Interface:
|
motor.h:
OLD
typedef union {
long polarity; /*
0 => active low, else active high */
long position; /*
MPIEventTypeLIMIT_SW_[POS|NEG] */
float error; /*
MPIEventTypeLIMIT_ERROR */
long
encoder; /* MPIEventTypeENCODER_FAULT */
} MPIMotorEventTrigger;
NEW
typedef union {
long polarity;
/* 0 => active low,
else active high */
long position;
/* MPIEventTypeLIMIT_SW_[POS|NEG] */
float error;
/* MPIEventTypeLIMIT_ERROR */
MPIMotorEncoderFault
encoder; /* MPIEventTypeENCODER_FAULT */
} MPIMotorEventTrigger;
|
|
| |
|
How do I use this feature?
For more information, see MPIMotorEventTrigger.
|
| |
Phase
Reversal moved to MEIMotorEncoder |
| |
|
Reference Number: MPI 1289 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
Encoder "phaseReversal" was moved from MPIMotorConfig to MEIMotorEncoder,
thereby allowing the user to loop through the array of encoder configurations.
This change cleans up the design considerably and was necessary
because the encoder phase is dependent on the encoder type. Therefore,
encoder phase and encoder type needed to be grouped together. Currently,
phase reversal is only applicable to quadrature feedback.
|
| |
|
Code Interface:
|
motor.h:
OLD
typedef struct MPIMotorConfig {
MPIMotorType
type; /* Event configuration,
ordered by MPIEventType */
MPIMotorEventConfig event[MPIEventTypeMOTOR_LAST];
long
encoderPhase;
/* 0 => normal,
else reversed */
long
secondaryEncoderPhase;
/* 0 => normal,
else reversed */
float
abortDelay;
float
enableDelay;
MPIMotorBrake
brake;
MPIObjectMap
filterMap;
} MPIMotorConfig;
NEW
typedef struct MEIMotorEncoder {
MEIMotorEncoderType
type;
long
encoderPhase; /* 0 => normal,
else reversed */
long
filterDisable; /* 0 => quad filter
enabled, else not enabled */
long
countsPerRev;
MEIMotorEncoderRatio
ratio;
MEIMotorEncoderReverseModulo reverseModulo;
} MEIMotorEncoder;
For more information, see MPIMotorConfig
and MEIMotorEncoder.
mpiMotorConfigGet/Set
|
|
| |
|
How do I use this feature?
For more information, see mpiMotorConfigGet/Set.
|
| |
Feedforward
for PTF and PVTF improvements |
| |
|
Reference Number: MPI 1286 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
In previous versions, feedforward values were passed to the controller
with each point for PTF and PVTF motion. These values were constant
during the interval between points. Improvements have been made
so that the values can now be interpolated linearly over the interval.
The motion types MPIMotionTypePTF and MPIMotionTypePVTF, support
user-specified feedforward values for each point. The following
improvements have been made to the PTF and PVTF motion types.
- The feedforward values are interpolated linearly over the PT
or PVT time intervals. The feedfoward values correspond to the
P or PV values. (i.e. When the motion reaches a specified position
(PTF) or position and velocity (PVTF), the interpolated feedforward
value will be equal to what is specified in the motion parameters.)
- The feedforward values are not set to 0 at the beginning of
the move; they retain the last value that is specified in the
PTF or PVTF motion parameters.
- The feedforward values are not changed by non-PTF or PVTF moves.
Previous versions of the firmware would set the feedforward value
to zero for any move that was not a PTF or PVTF move (i.e. PT,
PVT, Spline, S-Curve, etc.).
|
| |
|
Code Interface:
|
motion.h:
NEW
typedef struct MPIMotionPTF {
long pointCount;
double *position;
double *feedForward;
double *time;
MPIMotionPoint point;
} MPIMotionPTF;
typedef struct MPIMotionPVTF {
long pointCount;
double *position;
double *velocity;
double *feedForward;
double *time;
MPIMotionPoint point;
} MPIMotionPVTF;
See MPIMotionPTF
and MPIMotionPVTF
|
|
| |
|
How do I use this feature?
See MPIMotionPTF
and MPIMotionPVTF.
|
| |
Reordered the Capture Source Enum |
| |
|
Reference Number: MPI 1249 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
The Capture source enum (MPICaptureSource) used to specify triggers
sources for the capture engine.
The enumeration for the capture sources has been reordered so that
the I/O sources are listed first. As a result, the value for MPICaptureSourceMOTOR_IO_0
will correspond with the value for MEIMotorIoConfigIndex0. In the
future, we will improve the way I/O labels, masks, and sources are
presented to the user. I/O capture sources will also be modified.
|
| |
|
Code Interface:
|
capture.h:
OLD
typedef enum MPICaptureSource {
MPICaptureSourceINVALID = -1,
MPICaptureSourceHOME,
MPICaptureSourceINDEX,
MPICaptureSourceLIMIT_HW_NEG,
MPICaptureSourceLIMIT_HW_POS,
MPICaptureSourceGLOBAL,
MPICaptureSourceMOTOR_IO_0,
MPICaptureSourceMOTOR_IO_1,
MPICaptureSourceMOTOR_IO_2,
MPICaptureSourceMOTOR_IO_3,
MPICaptureSourceMOTOR_IO_4,
MPICaptureSourceMOTOR_IO_5,
MPICaptureSourceMOTOR_IO_6,
MPICaptureSourceMOTOR_IO_7,
MPICaptureSourceINDEX_SECONDARY,
MPICaptureSourceLAST,
MPICaptureSourceFIRST = MPICaptureSourceINVALID
+ 1,
MPICaptureSourceCOUNT = MPICaptureSourceLAST,
} MPICaptureSource;
NEW
typedef enum MPICaptureSource {
MPICaptureSourceINVALID = -1,
MPICaptureSourceMOTOR_IO_0,
MPICaptureSourceMOTOR_IO_1,
MPICaptureSourceMOTOR_IO_2,
MPICaptureSourceMOTOR_IO_3,
MPICaptureSourceMOTOR_IO_4,
MPICaptureSourceMOTOR_IO_5,
MPICaptureSourceMOTOR_IO_6,
MPICaptureSourceMOTOR_IO_7,
MPICaptureSourceHOME,
MPICaptureSourceINDEX,
MPICaptureSourceLIMIT_HW_NEG,
MPICaptureSourceLIMIT_HW_POS,
MPICaptureSourceGLOBAL,
MPICaptureSourceINDEX_SECONDARY,
MPICaptureSourceLAST,
MPICaptureSourceFIRST = MPICaptureSourceINVALID
+ 1,
MPICaptureSourceCOUNT = MPICaptureSourceLAST,
} MPICaptureSource;
See MPICaptureSource.
|
|
| |
|
How do I use this feature?
This feature should be used to configure the capture engine. For
more information, see MPICaptureSource.
|
| |
Use zero velocity to generate a DONE status/event |
| |
|
Reference Number: MPI 1202 |
| |
|
Type: General Change |
| |
|
MPI Version: 03.01.00 |
| |
|
Description:
In previous versions, velocity moves to zero velocity would cause
the motion supervisor to remain in the MOVING state. The MPI library
has been modified so velocity moves to zero velocity will cause
the motion supervisor to go to the IDLE state (when the settling
criteria has been met).
|
| |
|
Code Interface:
|
event.h:
NEW
typedef enum {
...
MPIEventTypeMOTION_DONE, /*
10 */
MPIEventTypeMOTION_AT_VELOCITY, /*
11 */
...
} MPIEventType;
See mpiMotionStart
and mpiMotionModify
|
|
| |
|
How do I use this feature?
This feature affects velocity move calls to mpiMotionStart() and
mpiMotionModify().
Velocity moves to zero velocity will now result in an MPIStateIDLE
state rather than MPIStateMOVING state at the end of motion. As
a result, an MPIEventTypeMOTION_DONE will be generated now instead
of an MPIEventTypeMOTION_AT_VELOCITY event.
The state and events generated when velocity moves of zero velocity
are specified are different. You may have to modify how an application
waits for these velocity moves to be completed.
|
| |
|
See Also
mpiMotionStart,
mpiMotionModify
|
Fixed Bugs
Version 03.01.00
| |
Motor
resource boundary check |
| |
|
Reference Number: MPI 1441 |
| |
|
Type: Fixed Bug |
| |
|
MPI Version: 03.01.00 |
| |
|
Problem/Cause:
Motor resources were being retrieved for a motor that did not exist.
This problem occurred because there was no check for whether or
not the capture motor existed.
|
| |
|
Fix/Solution:
There was a check added to validate the motor being used. If a capture
is being configured on a motor that does not exist, then an error
is returned. See MPICaptureMessageMOTOR_INVALID
for more information.
|
| |
|
Affects to Application Code:
The following changes were made to the internal MPI/MEI libraries
and will not affect customer code.
|
|