ETC MC1251A-E

Advanced Step Motor
Control Chipset
MC1451A, MC1451A-E
MC1251A, MC1251A-E
MC1151A, MC1151A-E
Features
Advanced control of up to 4 step motors
per chipset
High speed pulse and direction output
S-curve, trapezoidal, velocity contouring,
and electronic gearing trajectory modes
Optional incremental encoder feedback
Software & feature compatible with other
versions of PMD's chipset family
Available in 1, 2, or 4 axis configurations
32-bit position, velocity, acceleration and
jerk trajectory profile registers
Pulse and direction output for each axis at
up to 1.5 Mpulses/sec
On-the-fly stall detection
Two travel-limit switches per axis
External motion breakpoint per axis
Intelligent easy-to-use packet-oriented
command protocol
Programmable pulse output modes
Chipset Developer's kit available
Typical Configuration
Amp
M
E
Axis 1
Amp
M
E
Axis 2
(MC1451A, MC1251A
only)
Amp
M
E
Axis 3
(MC1451A only)
Amp
The MC1451A is a dedicated motion processor which functions
as a complete chip-based step motor controller. Packaged in a
2-IC chipset, this device performs trajectory generation and
pulse and direction signal generation for use in a wide variety of
stepper-based systems. The MC1451A provides an optional
third IC which allows incremental encoder signal input for
position verification and on-the-fly stall detection. The MC1451A
is available in a one, a two, and a four-axis configuration.
The MC1451A is functionally similar to other PMD motion
processors however it is dedicated to the control of step motors,
instead of servo motors. All of these devices provide
sophisticated trajectory generation and synchronization features
allowing the creation of complex motion sequences.
Host
Processor
MC1451A
(I/O & CP
& ENC)
General Description
M
E
In addition to pulse and direction circuitry which can output at
up to 1.5 megapulses per second the chipset provides two limit
switches per axis, a programmable external signal breakpoint
per axis, and an 'At Rest' output signal.
The chipset is controlled by a host processor which interfaces
with the chipset via an 8-bit bi-directional port. Communications
to/from the chipset consist of packet-oriented messages. A host
interrupt line is provided so that the chipset can signal the host
when special conditions occur such as stall detection.
The chipset is packaged in 2 68-pin PLCC packages. An
optional third 44 pin PLCC chip provides encoder input. All
chips are CMOS and are powered by 5 volts.
Axis 4
(MC1451A only)
Doc. Rev. 12.02, Nov. 1997
Performance Motion Devices, Inc. 12 Waltham St. Lexington, MA 02421 tel: 781.674.9860 fax: 781.674.9861 www.pmdcorp.com
Table of Contents
Packet Format...................................................Page 25
Packet Checksum .............................................Page 26
Illegal Commands .............................................Page 26
Command Errors...............................................Page 26
Axis Addressing.................................................Page 26
Axis Status ............................................................Page 27
Status Word ......................................................Page 27
Miscellaneous Mode Status Word.....................Page 27
Host Interrupts.......................................................Page 28
Pulse & Direction Signal Generation.....................Page 29
Product Family Overview....................................... Page 3
Introduction........................................................... Page 3
Family Summary................................................... Page 3
Electrical Characteristics....................................... Page 4
Absolute Maximum Ratings.................................. Page 5
Operating Ratings................................................. Page 5
DC Electrical Characteristics ................................ Page 5
AC Electrical Characteristics ................................ Page 5
I/O Timing Diagrams............................................. Page 7
Pinouts .................................................................... Page 11
MC1451A.............................................................. Page 11
MC1251A, MC1151A............................................ Page 12
Pin Descriptions.................................................... Page 13
Theory of Operations ............................................. Page 17
Trajectory Profile Generation................................ Page 18
S-curve Point to Point....................................... Page 19
Trapezoidal Point to Point................................. Page 20
Velocity Contouring........................................... Page 20
Electronic Gear................................................. Page 21
Trajectory Control ................................................. Page 21
Halting The Trajectory ...................................... Page 21
Motion Complete Status ................................... Page 22
Parameter Loading & Updating ............................ Page 22
Manual Update ................................................. Page 22
Breakpoints....................................................... Page 23
External Breakpoints and Homing .................... Page 23
Disabling Automatic Profile Update .................. Page 24
Travel Limit Switches............................................ Page 24
Axis Timing ........................................................... Page 24
Host Communications .......................................... Page 25
Electrical Interface ............................................ Page 25
Pulse Generation Control...........................................Page 29
At Rest Indicator.........................................................Page 29
Encoder Position Feedback ..................................Page 29
Stall Detection............................................................Page 30
Position Error .............................................................Page 30
Recovering From A Motion Error ...............................Page 30
Host Commands .....................................................Page 32
Command Summary .............................................Page 32
Command Reference ............................................Page 34
Axis Control.......................................................Page 34
Profile Generation .............................................Page 35
Parameter Update.............................................Page 39
Interrupt Processing ..........................................Page 41
Status/Mode ......................................................Page 42
Pulse Generation ..............................................Page 43
Encoder.............................................................Page 44
Miscellaneous ...................................................Page 45
Application Notes ...................................................Page 48
ISA bus interfacing ................................................Page 48
Performance Motion Devices, Inc. does not assume any responsibility for use of any circuitry described in this manual, nor does it make
any guarantee as to the accuracy of this manual. Performance Motion Devices, Inc. reserves the right to change the circuitry described in
this manual, or the manual itself, at any time.
The components described in this manual are not authorized for use in life-support systems without the express written permission of
Performance Motion Devices, Inc.
2
Product Family Overview
# of axes
Motors Supported
Encoder Format
Output Format
S-curve profiling
Electronic gearing
On-the-fly changes
Limit switches
PID & feedforward
PWM output
DAC-compatible output
Pulse & direction output
Index & Home signal
Chipset p/n's
MC1401 series
4, 2, or 1
DC Servo
Incremental (no dash version)
and Parallel ('-P' version)
DC servo
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
MC1401A, MC1401A-P (4 axes)
MC1201A, MC1201A-P (2 axes)
MC1101A, MC1101A-P (1 axis)
Developer's Kit p/n's: DK1401A, DK1401A-P
* optional using third I.C. ('-E' version)
MC1231 series
2 or 1
Brushless Servo
Incremental
MC1241 series
2 or 1
Stepper
Incremental
MC1451 series
4, 2, or 1
Stepper
Incremental*
Sinusoidally
commutated
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
MC1231A (2 axes)
MC1131A (1 axis)
Microstepping
Pulse and Direction
Yes
Yes
Yes
Yes
Yes
Yes
Yes
MC1241A (2 axes)
MC1141A (1 axis)
DK1231A
DK1241A
Yes
Yes
Yes
Yes
Yes
Yes
MC1451A, MC1451A-E (4 axes)
MC1251A, MC1251A-E (2 axes)
MC1151A, MC1151A-E (1 axis)
DK1451A
Introduction
Family Summary
This manual describes the operational characteristics of the MC1451A,
MC1251A, MC1151A, MC1451A-E, MC1251A-E, and MC1151A-E
Motion Processors. These devices are members of PMD's 1st
generation motion processor family, which consists of 16 separate
products organized into four groups.
MC1401 series (MC1401A, MC1201A, MC1101A, MC1401A-P,
MC1201A-P, MC1101A-P) - These chipsets take in incremental
encoder signals (standard version) or parallel word encoder signals
(-P version) and output a motor command in either PWM or DACcompatible format. These chipsets come in 1, 2 or 4 axis versions
and can be used with DC brushed motors, or brushless motors using
external commutation.
Each of these devices are complete chip-based motion controllers.
They provide trajectory generation and related motion control functions.
Depending on the type of motor controlled they provide servo loop
closure, on-board commutation for brushless motors, and high speed
pulse and direction outputs. Together these products provide a
software-compatible family of dedicated motion processor chips which
can handle a large variety of system configurations.
MC1231 series (MC1231A, MC1131A) - These chipsets take in
incremental quadrature encoder signals and output sinusoidally
commutated motor signals appropriate for driving brushless motors.
They are available in one or two axis versions. Depending on the
motor type they output two or three phased signals per axis in either
PWM or DAC-compatible format.
Each of these chips utilize a similar architecture, consisting of a highspeed DSP (Digital Signal Processor) computation unit , along with an
ASIC (Application Specific Integrated Circuit). The computation unit
contains special on-board hardware such as a multiply instruction that
makes it well suited for the task of motion control.
MC1241 series (MC1241A, MC1141A) - These chipsets provide
internal microstepping generation for stepping motors. They are
available in a one or a two-axis version. Two phased signals are
output per axis in either PWM or DAC-compatible format. An
incremental encoder signal can be input to confirm motor position.
Along with a similar hardware architecture these chips also share most
software commands, so that software written for one chipset may be reused with another, even though the type of motor may be different.
MC1451 series (MC1451A, MC1251A, MC1151A, MC1451A-E,
MC1251A-E, MC1151A-E) - These chipsets provide very high speed
pulse and direction signal output appropriate for driving step motorbased systems. They are available in a one, two, or four-axis version
and are also available with quadrature encoder input.
This manual describes the operation of the MC1451A, MC1251A,
MC1151A, MC1451A-E, MC1251A-E, and MC1151A-E chipsets. For
technical details on other members of PMD's first generation
motion processors see the corresponding product manual.
Each of these chipsets has an associated Chipset Developer's
Kit available for it. For more information contact your PMD
representative.
3
Electrical Characteristics
Using the -E chipset parts it is possible to input quadrature encoder
feedback to the chipset. The encoder signals consist of the A and B
quadrature signals from the encoder.
Overview
The host processor is interfaced via an 8-bit bi-directional bus and
various control signals. Host communication is coordinated by a
ready/busy signal, which indicates when communication is allowed.
The MC1451A-consists of either two 68 pin PLCC's (standard version),
or these same two I.C.s with an additional 44 pin PLCC for incremental
encoder feedback (-E version). All of these devices are fabricated in
CMOS. The two 68 pin PLCCs are known as the I/O and the CP chips.
The 44-pin PLCC is known as the ENC chip.
Interconnections between the I/O and the CP chip consist of a data bus
(8 bits) and various control and synchronization signals.
Interconnections between the CP and the ENC chip (if used) also
consist of a data bus (10 bits) and various control and synchronization
signals. Many of these signals are common between the I/O, CP, and
the ENC chips although there are no direct connections between just
the ENC and the I/O chip. The following table summarizes the signals
that must be interconnected for the chipset to function properly. For
each listed signal the I/O chip pin on the left side of the table is
connected to the CP chip pin in the middle which is connected to the
ENC chip pin on the right side.
The Peripheral Input/Output IC (I/O chip) is responsible for interfacing
to the host processor and for generating the high speed pulse and
direction output. The Command Processor IC (CP chip) is responsible
for all host command, trajectory, and related computations. The ENC
chip is responsible for incremental encoder feedback.
The following figure shows a typical system block diagram, along with
the pin connections between the I/O chip, CP chip, and ENC chip if it is
used.
I/O Chip
Signal
Name
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
CPAddr0
CPAddr1
CPAddr2
CPAddr3
CPCntr0
CPCntr1
CPCntr2
CPCntr3
CPWrite
CPClk
CPReset
Motor
(4 axis)
Amplifier
(1-4 axis)
Encoder
(1-4 axis)
I/O
Data4-11
Data4-11
I/OAddr0-3
I/OAddr0-3
I/OWrite
CP
I/OWrite
I/OCntrl0-3
I/OCntrl0-3
ClkOut
ClkOut
ENC
Host
Processor
Use of the ENC chip does not require a special version of the I/O or CP
chips. The CP chip automatically recognizes the presence or absence
of the ENC chip and functions accordingly.
The CP, I/O, and ENC chip (if used) form a complete chipset and
function together as one integrated motion processor. The major
components connected to the chipset are the step & direction
compatible amplifier (4, 2, or 1 axes), the optional encoder feedback
channels (4, 2, or 1 axes), and the host processor.
I/O
Chip
Pin
18
5
6
7
8
17
3
1
68
27
29
12
20
36
22
63
2
46
43
CP Chip
Signal
Name
Data2
Data3
Data4
Data5
Data6
Data7
Data8
Data8
Data10
Data11
I/OAddr0
I/OAddr1
I/OAddr2
I/OAddr3
I/OCntr0
I/OCntr1
I/OCntr2
I/OCntr3
I/OWrite
ClkOut
Reset
CP
Chip
Pin
58
57
50
49
46
43
40
39
36
35
28
9
6
5
16
18
68
67
15
19
17
ENC Chip
Signal
Name
CPData2
CPData3
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
CPAddr0
CPAddr2
CPAddr3
CPCntr0
CPWrite
CPClk
-
ENC
Chip
Pin
22
19
9
31
41
42
44
1
12
2
24
20
23
15
13
7
-
For a complete description of all pins see the 'Pin Descriptions'
section of this manual.
Unless specifically noted otherwise, the term 'MC1451' or
'MC1451A' refers to the MC1451A, MC1251A, MC1151A, MC1451AE, MC1251A-E, and MC1151A-E Motion Processors.
The chipset's pulse and direction output signals are connected to the
motor amplifier. Using this scheme the direction bit indicates whether
the motor should move in the positive or negative direction, and the
pulse signal indicates the desired motor speed. Pulse and direction
output is compatible with a wide variety of full, half, and microstepping
amplifiers.
4
Absolute Maximum Ratings
Operating Ratings
Unless otherwise stated, all electrical specifications are for both
the I/O and CP chips.
Operating Temperature, Ta .................0 deg. C to +70 deg. C*
Nominal Clock Frequency, Fclk ...........25.0 Mhz
Supply Voltage, Vcc.............................4.75 V to 5.25 V
Storage Temperature, Ts .................... -55 deg. C to +150 deg. C
Supply Voltage, Vcc ............................ -0.3 V to +7.0 V
Power Dissipation, Pd ......................... 650 mW (I/O and CP
combined)
* Industrial and Military operating ranges also available. Contact your
PMD representative for more information.
DC Electrical Characteristics
(Vcc and Ta per operating ratings, Fclk = 25.0 Mhz)
Symbol
Vcc
Idd
Input Voltages
Vih
Vil
Vihclk
Vihreset
Output Voltages
Voh
Parameter
Supply Voltage
Supply Current
Min.
4.75
Logic 1 input voltage
Logic 0 input voltage
Logic 1 voltage for clock pin
(ClkIn)
Logic 1 voltage for reset pin
(reset)
Logic 1 Output Voltage
2.4
Vol
Logic 0 Output Voltage
Iout
Iin
Iinclk
Tri-State output leakage current
Input current
Input current ClkIn
Max.
5.25
100
Units
V
mA
2.0
-0.3
3.0
Vcc + 0.3
0.8
Vcc+0.3
V
V
V
4.0
Vcc+0.3
V
V
-20
-50
-20
0.33
V
20
50
20
uA
uA
uA
Conditions
open outputs
@CP Io = 300 uA
@I/O Io = 4 mA
@CP Io = 2 mA
@I/O Io = 4 mA
0 < Vout < Vcc
0 < Vi < Vcc
0 < Vi < Vcc
AC Electrical Characteristics
(see reference timing diagrams)
(Vcc and Ta per operating ratings; Fclk = 25.0 Mhz)
(~ character indicates active low signal)
Timing Interval
Encoder and Index Pulse Timing
Motor-Phase Pulse Width
Dwell Time Per State
Index Pulse Setup and Hold
(relative to Quad A and Quad B low)
Reset Timing
Stable Power to Reset
Reset Low Pulse Width
Clock Timing
Clock Frequency (Fclk)
Clock Pulse Width
Clock Period
T#
Min.
T1
T2
T3
1.6
0.8
0
uS
uS
uS
0.25
1.0
Sec
uS
6.7
19.5
39
T4
T5
5
Max.
25.6
75 (note 2)
149 (note 2)
Units
Mhz
nS
nS
Timing Interval
Command Byte Write Timing
~HostSlct Hold Time
~HostSlct Setup Time
HostCmd Setup Time
Host Cmd Hold Time
HostRdy Delay Time
~HostWrite Pulse Width
Write Data Setup Time
Write Data Hold Time
Data Word Read Timing
~HostSlct Hold Time
~HostSlct Setup Time
HostCmd Setup Time
HostCmd Hold Time
Read Data Access Time
Read Data Hold Time
~HostRead high to HI-Z Time
HostRdy Delay Time
Read Recovery Time
Data Word Write Timing
~HostSlct Hold Time
~HostSlct Setup Time
HostCmd Setup Time
HostCmd Hold Time
HostRdy Delay Time
~HostWrite Pulse Width
Write Data Setup Time
Write Data Hold Time
Write Recovery Time
note 1
note 2
note 3
note 4
T#
Min.
Max.
Units
T6
T7
T8
T9
T13
T14
T15
T16
15
10
10
25
2000 (note 3)
nS
nS
nS
nS
nS
nS
nS
nS
T6
T7 (read only)
T8 (read only)
T9
T10
T11
T12
T13
T17
15
- 20
- 20
25
70
50
35
30
2000 (note 3)
50
10
50
70
60
T6
T7
T8
T9
T13
T14
T15
T16
T18
15
10
10
25
2000 (note 3)
70
50
35
30
60
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
nS
~HostSlct and HostCmd may optionally be de-asserted if setup and hold times are met.
Chip-set performance figures and timing information valid at Fclk = 25.0 only. For timing information & performance parameters at Fclk <
25.0 Mhz, call PMD.
Two micro seconds maximum to release interface before chip set responds to command
ClkOut from CP is 1/4 frequency of ClkIn (CP chip).
6
I/O Timing Diagrams
The following diagrams show the MC1451A electrical interface timing. T#' values are listed in the above timing chart.
Quadrature Encoder Input Timing
T1
T1
Quad A
T2
T2
Quad B
T3
T3
~Index
Index = ~A * ~B * ~IND
Clock Timing
ClkIn
T4
T4
T5
7
Command Byte Write TIming
T7
T6
T8
T9
~HostSlct
HostCmd
T14
~HostWrite
T15
HostData0-7
T16
HostRdy
T13
8
Data Word Read TIming
T7
T6
Note 1
~HostSlct
T8
T9
Note 1
HostCmd
T17
~HostRead
T12
HostData0-7
High-Z
High-Z
High
Byte
T10
High-Z
Low
Byte
T11
HostRdy
T13
9
Data Word Write TIming
T7
T6
Note 1
~HostSlct
T8
T9
Note 1
HostCmd
T18
T14
T14
~HostWrite
T15
HostData0-7
T15
High
Byte
Low
Byte
T16
T16
HostRdy
T13
10
Pinouts
9
61
1
9
60
10
61
1
6
40
1
60
10
39
7
I/O
(Top view)
CP
ENC
(Top view)
(Top view)
29
17
26
44
44
26
18
27
43
27
28
43
(Chip Outlines Not Drawn To Scale)
MC1451A & MC1451A-E Pinouts
4, 21, 25, 38, 55
VCC
28
42
13
26
30
23
40
35
11
39
34
10
46
52
45
29
12
2
20
36
43
Pulse1
Dir1
Home1
Pulse2
Dir2
Home2
Pulse3
Dir3
Home3
Pulse4
Dir4
Home4
CPClk
I/OClkIn
I/OClkOut
CPAddr2
CPAddr3
CPWrite
CPCntrl0
CPCntrl1
CPReset
I/O
GND
CPCntrl2
CPCntrl3
HostCmd
HostRdy
HostRead
HostWrite
HostSlct
HostIntrpt
HostData0
HostData1
HostData2
HostData3
HostData4
HostData5
HostData6
HostData7
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
CPAddr0
CPAddr1
14, 15, 32, 49, 54, 66
4, 22, 33
22
63
41
37
51
47
48
44
50
61
53
65
67
62
64
60
18
5
6
7
8
17
3
1
68
27
VCC
56
55
54
53
24
19
17
16
18
68
67
AtRest1
AtRest2
AtRest3
AtRest4
ClkIn
ClkOut
Reset
I/OCntrl0
I/OCntrl1
I/OCntrl2
I/OCntrl3
CP
GND
3, 34
11
Data2
Data3
Data4
Data5
Data6
Data7
Data8
Data9
Data10
Data11
I/OAddr0
I/OAddr1
I/OAddr2
I/OAddr3
I/OWrite
PosLimit1
PosLimit2
PosLimit3
PosLimit4
NegLimit1
NegLimit2
NegLimit3
NegLimit4
58
57
50
49
46
43
40
39
36
35
28
9
6
5
15
52
45
42
38
51
44
41
37
3, 14, 16, 25, 35
VCC
30
36
17
18
27
28
5
29
7
33
6
QuadA1
QuadB1
QuadA2
QuadB2
QuadA3
QuadB3
QuadA4
QuadB4
CPClk
I/OClkIn
I/OClkOut
ENC
CPAddr0
CPAddr2
CPAddr3
CPWrite
CPCntrl0
CPData2
CPData3
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
GND
10, 21, 32, 34, 43
24
20
23
13
15
22
19
9
31
41
42
44
1
12
2
MC1251A & MC1251A-E Pinouts
4, 21, 25, 38, 55
VCC
28
42
13
26
30
23
46
52
45
29
12
2
20
36
43
Pulse1
Dir1
Home1
Pulse2
Dir2
Home2
CPClk
I/OClkIn
I/OClkOut
CPAddr2
CPAddr3
CPWrite
CPCntrl0
CPCntrl1
CPReset
I/O
GND
CPCntrl2
CPCntrl3
HostCmd
HostRdy
HostRead
HostWrite
HostSlct
HostIntrpt
HostData0
HostData1
HostData2
HostData3
HostData4
HostData5
HostData6
HostData7
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
CPAddr0
CPAddr1
4, 22, 33
22
63
41
37
51
47
48
44
50
61
53
65
67
62
64
60
18
5
6
7
8
17
3
1
68
27
VCC
3, 14, 16, 25, 35
56
55
24
19
17
16
18
68
67
AtRest1
AtRest2
ClkIn
ClkOut
Reset
I/OCntrl0
I/OCntrl1
I/OCntrl2
I/OCntrl3
CP
Data2
Data3
Data4
Data5
Data6
Data7
Data8
Data9
Data10
Data11
I/OAddr0
I/OAddr1
I/OAddr2
I/OAddr3
I/OWrite
PosLimit1
PosLimit2
NegLimit1
NegLimit2
58
57
50
49
46
43
40
39
36
35
28
9
6
5
15
52
45
51
44
VCC
30
36
17
18
7
33
6
QuadA1
QuadB1
QuadA2
QuadB2
CPClk
I/OClkIn
I/OClkOut
ENC
CPAddr0
CPAddr2
CPAddr3
CPWrite
CPCntrl0
CPData2
CPData3
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
24
20
23
13
15
22
19
9
31
41
42
44
1
12
2
GND
10, 21, 32, 34, 43
GND
14, 15, 32, 49, 54, 66
3, 34
MC1151A & MC1151A-E Pinouts
4, 21, 25, 38, 55
VCC
28
42
13
46
52
45
29
12
2
20
36
43
Pulse1
Dir1
Home1
CPClk
I/OClkIn
I/OClkOut
CPAddr2
CPAddr3
CPWrite
CPCntrl0
CPCntrl1
CPReset
I/O
GND
CPCntrl2
CPCntrl3
HostCmd
HostRdy
HostRead
HostWrite
HostSlct
HostIntrpt
HostData0
HostData1
HostData2
HostData3
HostData4
HostData5
HostData6
HostData7
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
CPAddr0
CPAddr1
14, 15, 32, 49, 54, 66
4, 22, 33
22
63
41
37
51
47
48
44
50
61
53
65
67
62
64
60
18
5
6
7
8
17
3
1
68
27
VCC
3, 14, 16, 25, 35
56
24
19
17
16
18
68
67
AtRest1
ClkIn
ClkOut
Reset
I/OCntrl0
I/OCntrl1
I/OCntrl2
I/OCntrl3
CP
Data2
Data3
Data4
Data5
Data6
Data7
Data8
Data9
Data10
Data11
I/OAddr0
I/OAddr1
I/OAddr2
I/OAddr3
I/OWrite
PosLimit1
NegLimit1
58
57
50
49
46
43
40
39
36
35
28
9
6
5
15
52
51
VCC
30
36
7
33
6
QuadA1
QuadB1
CPClk
I/OClkIn
I/OClkOut
ENC
CPAddr0
CPAddr2
CPAddr3
CPWrite
CPCntrl0
CPData2
CPData3
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
GND
10, 21, 32, 34, 43
GND
3, 34
12
24
20
23
13
15
22
19
9
31
41
42
44
1
12
2
Pin Descriptions
The following tables provide pin descriptions for the MC1401 and MC1401-P series chipsets.
IC
Pin Name
I/O Chip Pinouts
I/O
Pulse1
Pulse2
Pulse3
Pulse4
I/O
I/O
Dir1
Dir2
Dir3
Dir4
~Home1
~Home2
~Home3
~Home4
Pin #
Description/Functionality
28
26
40
39
Pulse signal for channels 1-4 (output). This signal is always a square wave, regardless of
pulse rate. Nominal 'step' occurs when signal goes from a high state to a low state.
42
30
35
34
13
23
11
10
NOTE: For MC1451A all 4 pins are valid. For MC1251A pins for axes 1 & 2 only are valid.
For MC1151A pins for axis 1 only are valid. Invalid axis pins can be left unconnected.
Direction signal for channels 1-4 (output). This signal indicates the direction of motion, and
works in conjunction with the pulse signal. A high level on this signal indicates a positive
direction move, and a low level indicates a negative direction move.
NOTE: For MC1451A all 4 pins are valid. For MC1251A pins for axes 1 & 2 only are valid.
For MC1151A pins for axis 1 only are valid. Invalid axis pins can be left unconnected.
Home signals for axis 1-4 (input). Each of these signals provide a general purpose input to
the external breakpoint mechanism. Using these signals it is possible to stop, start, or alter
the motion trajectory. See theory of operations for details.
An active home signal is recognized by the chipset as a low state.
I/O
CPClk
46
I/O
I/OClkIn
52
I/O
I/OClkOut
45
I/O
CPAddr0
CPAddr1
CPAddr2
CPAddr3
~CPWrite
68
27
29
12
2
I/O
CPCntrl0
CPCntrl1
CPCntrl2
CPCntrl3
HostCmd
20
36
22
63
41
I/O
HostRdy
37
I/O
I/O
NOTE: For MC1451A all 4 pins are valid. For MC1251A pins for axes 1 & 2 only are valid.
For MC1151A pin for axis 1 only is valid. Invalid axis pins can be left unconnected.
I/O chip clock (input). This signal is connected directly to the ClkOut pin (CP chip) and
provides the clock signal for the I/O chip. The frequency of this signal is 1/4 the user-provided
ClkIn (CP chip) frequency.
Phase shifted clock (input). This signal is connected to I/OClkOut (I/O chip), and inputs a
phase shifted clock signal.
Phase shifted clock (output). This signal is connected to I/OClkIn (I/O chip), and outputs a
phase shifted clock signal.
I/O chip to CP chip communication address (input). These 4 signals are connected to the
corresponding I/OAddr0-3 pins (CP chip), and together provide addressing signals to
facilitate CP to I/O chip communication.
I/O chip to CP chip communication write (input). This signal is connected to the ~I/OWrite pin
(CP chip) and provides a write strobe to facilitate CP to I/O chip communication.
I/O chip to CP chip communication control (mixed). These 4 signals are connected to the
corresponding I/OCntrl0-3 pins (CP chip), and provide control signals to facilitate CP to I/O
chip communication.
Host Port Command (input). This signal is asserted high to write a host command to the chip
set. It is asserted low to read or write a host data word to the chipset
Host Port Ready/Busy (output). This signal is used to synchronize communication between
the DSP and the host. HostRdy will go low (indicating host port busy) at the end of a host
command write or after the second byte of a data write or read. HostRdy will go high
(indicating host port ready) when the command or data word has been processed and the
chip set is ready for more I/O operations. All host port communications must be made with
HostRdy high (indicating ready).
Typical busy to ready cycle is 82.5 uSec..
13
IC
I/O
Pin Name
~HostRead
Pin #
51
I/O
~HostWrite
47
I/O
~HostSlct
48
I/O
~HostIntrpt
44
I/O
I/O
HostData0
HostData1
HostData2
HostData3
HostData4
HostData5
HostData6
HostData7
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
~CPReset
50
61
53
65
67
62
64
60
18
5
6
7
8
17
3
1
43
I/O
Vcc
4, 21, 25, 38, 55
I/O
GND
14, 15, 32, 49, 54,
66
I/O
IC
Pin Name
CP Chip Pinouts
CP
AtRest1
AtRest2
AtRest3
AtRest4
CP
PosLimit1
PosLimit2
PosLimit3
PosLimit4
Description/Functionality
Host Port Read data (input). Used to indicate that a data word is being read from the chip set
(low asserts read).
Host Port Write data (input). Used to indicate that a data word or command is being written to
the chip set (low asserts write).
Host Port Select (input). Used to select the host port for reading or writing operations (low
assertion selects port). ~HostSlct must remain inactive (high) when the host port is not in use.
Host Interrupt (output). A low assertion on this pin indicates that a host interrupt condition
exists that may require special host action.
Host Port Data 0-7 (bi-directional, tri-stated). These signals form the 8 bit host data port used
during communication to/from the chip set. This port is controlled by ~HostSlct, ~HostWrite,
~HostRead and HostCmd.
I/O chip to CP chip data port (bi-directional). These 8 bits are connected to the corresponding
Data4-11 pins on the CP chip, and facilitate communication to/from the I/O and CP chips..
I/O chip set reset (input). When brought low this pin resets the I/O chip to its initial condition.
Reset should occur no less than 250 mSec after stable power has been provided to the chip
set. This signal should be connected to the ~Reset pin of the CP chip, which in turn should
be connected to the master reset signal.
I/O chip supply voltage pin. All of these pins must be connected to the supply voltage. Supply
voltage = 4.75 to 5.25 V
I/O chip ground pin. All of these pins must be connected to the power supply return.
Pin #
Description/Functionality
56
55
54
53
At Rest indicator signals for axes 1-4 (output). A high level on this signal indicates the axis is
at rest. A low signal indicates the axis is in motion.
52
45
42
38
This signal is useful for driving amplifiers with an input bit to control running and holding
torque.
NOTE: For MC1451A all 4 pins are valid. For MC1251A pins for axes 1 & 2 only are valid.
For MC1151A pin for axis 1 only is valid. Invalid axis pins can be left un connected.
Positive limit switch input for axis 1-4. These signals provide directional limit inputs for the
positive-side travel limit of the axis. Upon powerup these signals default to "active high"
interpretation, but the interpretation can be set explicitly using the SET_LMT_SENSE
command. If not used these signals should be tied low for the default interpretation, or tied
high if the interpretation is reversed.
NOTE: For MC1451A all 4 pins are valid. For MC1251A pins for axes 1 & 2 only are valid.
For MC1151A pin for axis 1 only is valid. Invalid axis pins can be left un connected.
14
IC
CP
Pin Name
NegLimit1
NegLimit2
NegLimit3
NegLimit4
Pin #
51
44
41
37
CP
CP
ClkIn
ClkOut
24
19
CP
~Reset
17
CP
CP
I/OCntrl0
I/OCntrl1
I/OCntrl2
I/OCntrl3
Data2
Data3
Data4
Data5
Data6
Data7
Data8
Data9
Data10
Data11
I/OAddr0
I/OAddr1
I/OAddr2
I/OAddr3
I/OWrite
16
18
68
67
58
57
50
49
46
43
40
39
36
35
28
9
6
5
15
CP
Vcc
4, 22, 33
CP
GND
3, 34
CP
CP
Description/Functionality
Negative limit switch input for axis 1-4. These signals provide directional limit inputs for the
negative-side travel limit of the axis. Upon powerup these signals default to "active high"
interpretation, but the interpretation can be set explicitly using the SET_LMT_SENSE
command. If not used these signals should be tied low for the default interpretation, or tied
high if the interpretation is reversed.
NOTE: For MC1451A all 4 pins are valid. For MC1251A pins for axes 1 & 2 only are valid.
For MC1151A pin for axis 1 only is valid. Invalid axis pins can be left un connected.
Clock In (input). This pin provides the chip set master clock (Fclk = 25.0 Mhz)
Clock Out (output). This pin provides a clock output which is 1/4 the ClkIn frequency. This pin
is connected to the CPClk signals of the I/O chip and ENC chip
Master chip set reset (input). When brought low, this pin resets the chip set to its initial
condition. Reset should occur no less than 250 mSec after stable power has been provided
to the chip set.
The master reset signal should be connected to this pin as well as the ~CPReset pin of the
I/O chip
I/O and ENC chip to CP chip communication control (mixed). These signals provide various
inter-chip control signals for the I/O and ENC chips. For the I/O chip these four signals are
connected to the corresponding CPCntrl0-3 pins. For the ENC chip only I/OCntrl0 is used
which is connected to the CPCntrl0 pin.
CP to I/O and ENC chip Data4-11. (Bi-directional). These pins are connected to the
corresponding CPData4-11 pins on the I/O chip, and on the corresponding CPData2-11 pins
on the ENC chip. These signals are used to communicate between the CP and the I/O and
ENC chips.
Address0-3 (output). These signals provide various inter-chip address control signals for the
I/O and ENC chips. For the I/O chip these four signals are connected to the corresponding
CPAddr0-3 pins. For the ENC chip only I/OAddr0, I/OAddr2, and I/OAddr3 are used and they
are connected to the corresponding pins on the ENC chip.
Write (output). This pin is connected to CPWrite on the I/O and on the ENC chip. It provides a
control signal to the I/O and ENC chip to facilitate communication between these chips and
the CP chip
CP chip supply voltage pin. All of these pins must be connected to the supply voltage. Supply
voltage = 4.75 to 5,.25 V
CP chip ground pin. All of these pins must be connected to the power supply return.
15
IC
Pin Name
ENC Chip Pinouts
ENC
QuadA1
QuadB1
QuadA2
QuadB2
QuadA3
QuadB3
QuadA4
QuadB4
Pin #
Description/Functionality
30
36
17
18
27
28
5
29
Quadrature A, B channels for axis 1 - 4 (input). Each of these 4 pairs of quadrature (A, B)
signals provide the position feedback for an incremental encoder. When the encoder is
moving in the positive, or forward direction, the A signal leads the B signal by 90 degs.
ENC
CPClk
7
ENC
ENCClkIn
33
ENC
ENCClkOut
6
ENC
CPAddr0
CPAddr2
CPAddr3
24
20
23
ENC
~CPWrite
13
ENC
CPCntrl0
15
ENC
ENC
CPData2
CPData3
CPData4
CPData5
CPData6
CPData7
CPData8
CPData9
CPData10
CPData11
Vcc
22
19
9
31
41
42
44
1
12
2
3, 14, 16, 25, 35
ENC
GND
10, 21, 32, 34, 43
NOTE: Many encoders require a pull-up resistor on each of these signals to establish a
proper high signal (check the encoder electrical specifications)
NOTE: For MC1451A-E all 8 pins are valid. For MC1251A-E pins for axes 1 & 2 only are
valid. For MC1151A-E pins for axis 1 only are valid. Invalid axis pins can be left unconnected.
ENC chip clock (input). This signal is connected directly to the I/OClkOut pin (CP chip) and
provides the clock signal for the ENC chip. The frequency of this signal is 1/4 the userprovided ClkIn (CP chip) frequency.
Phase shifted clock (input). This signal is connected to ENCClkOut (ENC chip), and inputs a
phase shifted clock signal.
Phase shifted clock (output). This signal is connected to ENCClkIn (ENC chip), and outputs a
phase shifted clock signal.
ENC chip to CP chip communication address (input). These 3 signals are connected to the
corresponding CPAddr0, 2, & 3 pins (CP chip), and together provide addressing signals to
facilitate CP to ENC chip communication.
NOTE: There is no CPAddr1 pin on the ENC chip.
ENC chip to CP chip communication write (input). This signal is connected to the ~I/OWrite
pin (CP chip) and provides a write strobe to facilitate CP to ENC chip communication.
ENC chip to CP chip communication control (input). This signal is connected to the I/OCntrl0
pin (CP chip), and provides control signals to facilitate CP to ENC chip communication.
ENC chip to CP chip data port (bi-directional). These 10 bits are connected to the
corresponding Data2-11 pins on the CP chip, and facilitate communication to/from the ENC
and CP chips.
ENC chip supply voltage pin. All of these pins must be connected to the supply voltage.
Supply voltage = 4.75 to 5.25 V
ENC chip ground pin. All of these pins must be connected to the power supply return.
16
Theory of Operations
Internal Block Diagram
Motor Output Signals
Home
Input
Step
1/a
Miscellaneous Signals
At Rest
Direction
1/a
1/a
Encoder Inputs
B
A
1/a
1/a
1/a
CP Chip
Pulse & Direction
Generator (1-4)
Trajectory profile
generator (1-4)
Quadrature
decoder
counter (1-4)
I/O Chip
System Registers (1-4)
Host command
Host I/O controller
5
Control
8
Data
ENC
Chip
1/a
1
host interrupt
Host I/O
PosLimit
1/a
NegLimit
Overtravel Inputs
The above figure shows an internal block diagram for the MC1451A
and MC1451A-E Motion Processors.
feeding the resulting pulse rate to the pulse generating circuitry of the
I/O ASIC at each cycle, continuous and smooth motion is achieved for
all four axes.
The MC1451-series chipsets consist of two chips, an ASIC (Application
Specific I.C.) called the I/O chip and a DSP (Digital Signal Processor)
called the CP chip. The MC1451-E series chipsets consist of these
same two chips along with an additional ASIC chip called the ENC chip.
The I/O ASIC provides high speed pulse and direction generation
appropriate for interfacing to a wide variety of standard stepper drivers.
Two pulse rate operating modes are provided, one which results in a
pulse rate range of 0 - ~48,000 pulses per second (standard range),
and one which results in a pulse rate range of 0 - ~1,500,000 pulses per
second (high speed range).
The function of the I/O ASIC is to perform host I/O as well as pulse
generation. The function of the CP chip is to perform all motion
computations. The function of the ENC chip is to perform quadrature
position decoding.
The encoder feedback, which is available through the optional ENC
chip, is updated at each chipset cycle. This information can be used by
the host to check that the axis has achieved a desired position.
Additionally, the chipset can use the encoder information to
automatically detect a motor stall condition while a move is ongoing.
The chipset supports up to four axes simultaneously. Each axis
provides programmable trajectory generation including electronic
gearing, trapezoidal point-to-point, s-curve point to point, and a velocity
contouring mode.
The following table summarizes the operational parameters of the
MC1451-series chipsets.
The chipset calculates all trajectory information on a cycle-by-cycle
basis. Each cycle results in a new desired pulse rate based on the
trajectory generator mode and the specified trajectory parameters. By
17
MC1451-Series Chipset Operational Parameters
Available configurations:
Position Range:
Velocity Range:
Acceleration Range:
Jerk Range:
Start velocity range
Trajectory Profile Generator Modes:
Electronic Gear Ratio Range:
Motor output signals
Max. pulse rate
Encoder Input Signals:
Maximum Encoder Input Rate:
Encoder Feedback Modes:
Stall detection counts/steps ratio
range:
Cycle loop rate:
# of limit switches per axis
Per axis hardware control lines
# of Host commands:
MC1451A 4 axis step and direction motion chipset
MC1251A 2 axis step and direction motion chipset
MC1151A 1 axis step and direction motion chipset
MC1451A-E 4 axis step and direction motion chipset with quadrature input
MC1251A-E 2 axis step and direction motion chipset with quadrature input
MC1151A-E 1 axis step and direction motion chipset with quadrature input
-1,073,741,824 to 1,073,741,823 steps
-16,384 to 16,383 steps/cycle with a resolution of 1/65,536 steps/cycle
S-curve profile: - 1/2 to + 1/2 steps/cycle with a resolution of 1/65,536 steps/cycle .
All others: -16,384 to 16,383 steps/cycle with a resolution of 1/65,536 steps/cycle
-1/2 to +1/2 steps/cycle, with a resolution of 1/4,294,967,296 steps/cycle
-32,768 to +32,767 steps/cycle with a resolution of 1/65,536 steps/cycle
(used with trapezoidal and velocity profile modes only)
S-curve (host commands final position, max velocity, max acceleration, and jerk)
Trapezoidal (host commands final position, max velocity, starting velocity, and acceleration)
Velocity contouring (host commands max velocity, starting velocity, acceleration)
Electronic Gear (Encoder position is used as position command for corresponding axis).
(available only with MC1451A-E, MC1251A-E, MC1151A-E chipsets)
32768:1 to 1:32768 (negative and positive direction)
Pulse and direction (1 each per axis)
standard speed range: 48.828 Kpulses/sec
high speed range: 1.5625 Mpulses/sec
A, B quadrature signals (MC1451A-E, MC1251A-E, MC1151A-E chipsets only)
1.25 MCounts/sec (MC1451A-E, MC1251A-E, MC1151A-E chipsets only)
Manual position read (host queries position) (MC1451A-E, MC1251A-E, MC1151A-E chipsets only)
Automatic stall detection (stall detected on-the-fly) (MC1451A-E, MC1251A-E, MC1151A-E chipsets only)
1/256 - 127 encoder counts/step (MC1451A-E, MC1251A-E, MC1151A-E chipsets only)
330 uSec*
2 (one for each direction of travel)
Home signal (one per axis)
Limit Switch (two per axis)
At rest signal (one per axis, output to amplifier)
72
*exact time is 327.68 uSec, 330 is an approximation
Trajectory Profile Generation
The commands to select these profile modes are
The trajectory profile generator performs calculations to determine the
target position, velocity and acceleration at each calculation cycle.
These calculations are performed taking into account the current profile
mode, as well as the current profile parameters set by the host. Four
trajectory profile modes are supported:
SET_PRFL_S_CRV (to select the s-curve mode), SET_PRFL_TRAP
(to select the trapezoidal mode) SET_PRFL_VEL (to select the
velocity contouring mode) and SET_PRFL_GEAR (to select the
electronic gear mode).
Throughout this manual various command mnemonics will be
shown to clarify chipset usage or provide specific examples. See
the Host Communications section for a description of host
command nomenclature.
- S-curve point to point
- Trapezoidal point to point
- Velocity contouring
- Electronic Gear
18
The profile mode may be programmed independently for each axis. For
example axis #1 may be in trapezoidal point to point mode while axis
#2 is in S-curve point to point.
Use the following figure showing a typical S-curve velocity vs. time
graph for reference in reading the next section:
Generally, the axis should be at rest when switching profile modes.
Under certain conditions however, switching into certain profile modes
"on-the-fly" is allowed. See specific profile descriptions for details.
Phase Phase Phase
I.
II.
III.
Phase
IV.
Phase Phase Phase
V.
VI.
VII.
S-curve Point to Point
The following table summarizes the host specified profile parameters
for the S-curve point to point profile mode:
Profile
Parameter
Destination
Position
Maximum
Velocity
Representation & Range
Units
signed 32 bits
-1,073,741,824 to 1,073,741,823
unsigned 32 bits* (1/216 scaling)
steps
Max. Accel.
unsigned 16 bits ** (1/216 scaling)
0 to 32,767
unsigned 32 bits *** (1/232 scaling)
Jerk
S-curve profile
steps/cycle
The S-curve profile drives the axis at the specified jerk until the
maximum acceleration is reached. (phase I). it will then drive the axis at
jerk = 0 (constant acceleration) through phase II. It will then drive the
axis at the negative of the specified jerk though phase III, such that the
axis reaches the specified maximum velocity with acceleration = 0. This
completes the acceleration phase. At the end of the acceleration phase
of the move, the velocity will be constant, and the acceleration will be 0.
At the appropriate time, the profile will then decelerate (phases V, VI
and VII) symmetrically to the acceleration phase such that it arrives at
the destination position with acceleration and velocity = 0.
0 to 1,073,741,823
steps/cycle2
steps/cycle3
0 to 2,147,483,647
* uses 1/216 scaling. Chipset expects a 32 bit number which
has been scaled by a factor of 65,536 from units of
steps/cycle. For example to specify a velocity of 2.75
steps/cycle 2.75 is multiplied by 65,536 and the result is sent
to the chipset as a 32 bit integer (180,224 dec. or 2c000 hex.).
There are several conditions where the actual velocity graph of an Scurve motion will not contain all of the segments shown in the above
figure. For example, if the max. acceleration is not reached before the
"half-way" point to the max. velocity, then the actual velocity profile will
not contain a phase II or a phase VI segment (they will have a duration
of 0 cycles). Such a profile is shown below:
** uses 1/216 scaling. Chipset expects a 16 bit number which
has been scaled by a factor of 65,536 from units of
steps/cycle2. For example to specify an acceleration of .175
steps/cycle2, .175 is multiplied by 65,536 and the result is
sent to the chipset as a 16 bit integer (11,469 dec. or 2ccd
hex).
Phase
I.
Phase
III.
Phase
IV.
Phase
V.
Phase
VII.
*** uses 1/232 scaling. Chipset expects a 32 bit number which
has been scaled by a factor of 4,294,967,296 (232) from units
of steps/cycle3. For example to specify a jerk value of .0075
steps/cycle3, .0075 is multiplied by 4,294,967,296 and the
result is sent to the chipset as a 32 bit integer (32,212,256
dec. or 1eb8520 hex).
S-curve that doesn't reach max. acceleration
Another such condition is if the position is specified such that max.
velocity is not reached. In this case there will be no phase IV, and there
may also be no phase II and VI, depending on where the profile is
"truncated".
While the S-curve profile is in motion, the user is not allowed to
change any of the profile parameters. The axis must be at rest
before a new set of profile parameters can be executed. If
parameters are changed during motion then a 'command error'
19
will occur, and all new parameters will be ignored except the
position. See the section of this manual entitled "Command Error"
for more information..
The following figure shows a velocity profile for a typical point to point
trapezoidal move, along with a more complicated move involving on the
fly changes to the maximum velocity and the destination position.
Before switching to the S-curve point to point profile mode, the
axis should be at a complete rest.
Vel.
When the axis is in the S-curve profile mode, the SET_MAX_ACC
command should be used to load the max. acceleration value. The
alternate acceleration loading command SET_ACC can not be
used.
Time
Simple trapezoidal mode motion
Trapezoidal Point to Point
Vel.
The following table summarizes the host specified profile parameters
for the trapezoidal point to point profile mode:
Profile
Parameter
Destination
Position
Maximum
Velocity
Representation & Range
Starting
Velocity
unsigned 32 bits, (1/216 scaling)
0 to 1,073,741,823
unsigned 32 bits (1/216 scaling)
Accel.
change max
velocity
Time
Units
change destination
position
signed 32 bits
-1,073,741,824 to 1,073,741,823
unsigned 32 bits (1/216 scaling)
steps
Complex trapezoidal mode motion
steps/cycle
0 to 1,073,741,823
change destination
position
steps/cycle
Vel.
steps/cycle2
0 to1,073,741,823
starting
velocity
In the trapezoidal point to point profile mode the host specifies a
destination position, a maximum velocity, a starting velocity, and an
acceleration. The trajectory is executed by accelerating at the
commanded acceleration, beginning at the starting velocity, to the
maximum velocity where it coasts until decelerating such that the
destination position is reached with the axis at rest (zero velocity). If it is
not possible to reach the maximum velocity (because deceleration must
begin) then the velocity profile will have no "coasting" phase. The
acceleration rate is the same as the deceleration rate.
change max
velocity
Time
Trapezoidal Profile With Non-Zero Starting Velocity
Velocity Contouring
The following table summarizes the host specified profile parameters
for the Velocity contouring profile mode:
A new maximum velocity and destination position can be specified
while the axis is in motion. When this occurs the axis will accelerate or
decelerate toward the new destination position while attempting to
satisfy the new maximum velocity condition.
Profile
Parameter
Maximum
Velocity
Before switching to the Trapezoidal point to point profile mode,
the axis should be at rest.
Starting
Velocity
When in Trapezoidal point to point profile mode, to change the
acceleration, the axis must come to a complete stop. After this has
occurred, a new acceleration value can be loaded. If the
acceleration parameter is changed during motion then a
'command error' will occur, and all updated parameters will be
ignored except the position. See the section entitled 'Axis Status
for more informaton' on command errors.
Acceleration
Representation & Range
Units
unsigned 32 bits (1/216 scaling)
0 to 1,073,741,823
unsigned 32 bits, (1/216 scaling)
steps/cycle
steps/cycle
0 to 1,073,741,823
signed 32 bits* (1/216 scaling)
-1,073,741,824 to 1,073,741,823
steps/cycle2
* negative numbers using 1/216 scaling are handled no
differently than positive numbers. For example if an
acceration value of -1.95 steps/cycle2 is desired, -1.95 is
The Starting Velocity can not be changed while the axis is in
motion.
20
multipled by 65,536 and the result is sent to the chipset (127,795 dec. or fffe0ccd hex).
In this way the output of the pulse and direction generator will precisely
track the input encoder position factored by a programmable gear ratio.
This can be useful in many applications where continuous
synchronization with an external mechanism is important.
In this profile mode the host specifies two parameters, the commanded
acceleration, and the maximum velocity. The trajectory is executed by
continuously accelerating the axis at the commanded rate until the max.
velocity is reached, or until a new acceleration command is given.
The following figure shows the arrangement for encoders and motor
drives in a typical electronic gearing application with the MC1451A
The maximum velocity value must always be positive. Motion
direction is controlled using the acceleration value. Positive
acceleration values result in positive motion, and negative values
result in negative motion.
Master
Encoder
There are no restrictions on changing the profile parameters on
the fly. Note that the motion is not bounded by position however.
It is the responsibility of the host to generate acceleration and
max. velocity command values which result in safe motion, within
acceptable position limits.
Motor
The total number of geared axes supported per chipset is equal to the
number of motor axes. For each motor axes the encoder input for the
same axis is used as the master position command. In addition these
master/slave combinations are fixed, with the encoder for axis 1 driving
the axis 1 pulse and direction generator, and the encoder for axis 2
driving the axis 2 pulse and direction generator.
Example Velocity Contouring Mode
change
acceleration
change
max velocity
Pulse &
Direction
Amplifier
Only one of four axes shown
The following figure shows a typical velocity profile using this mode.
Vel.
MC1451-E
Time
change max
velocity and
acceleration
There are no restrictions on changing the gear ratio when the axis
is in motion, although care should be taken to select ratios such
that safe motion is maintained.
There are also no restrictions on changing to this profile mode
while the axis is in motion.
There are no restrictions on switching the profile mode to velocity
contouring while the axis is in motion.
Trajectory Control
The Starting Velocity can not be changed while the axis is in
motion.
Normally each of the above trajectory modes will execute the specified
trajectory, within the specified parameter limits, until the profile
conditions are satisfied. For example for the point-to-point profile modes
this means that the profile will move the axis until the final destination
position has been reached, at which point the axis will have a velocity
of zero.
Electronic Gear
The following table summarizes the host specified profile parameters
for the electronic gear profile mode:
Profile
Parameter
Gear Ratio
Representation & Range
Units
signed 32 bits* (1/216 scaling)
-1,073,741,824 to +1,073,741,823
-
Halting The Trajectory
In some cases however it is necessary to halt the trajectory manually,
for safety reasons, or simply to achieve a particular desired profile. This
can be accomplished using one of two methods; abrupt stop, or smooth
stop.
* for example to specify a gear ratio of +1.5 to 1 the value
1.5*65,536 is sent to the chipset (98,304). Alternatively to set
the gear ratio as -11.39 to 1 the value -11.39*65,536 is sent (746,455 dec. or fff49c29 hex.).
Abrupt stops are accomplished using the STOP command. This
command instantaneously stops the trajectory generator by setting the
velocity of the axis to zero. This control mode is typically used during an
emergency stop, when no deceleration phase is desired.
In this profile mode, the host specifies one parameter, the gear ratio.
The target position is generated by applying the specified gear ratio to
the encoder position of the same axis, multiplying by the specified gear
ratio and outputting the corresponding number of pulses.
Smooth stops are accomplished using the SMOOTH_STOP command.
This command causes the trajectory to decelerate at a rate equal to the
21
specified acceleration rate, until a velocity of zero is reached. In
addition the form of the deceleration is symmetric to the acceleration
phase. For example if the profile mode is S-curve, and a
SMOOTH_STOP command is given, the profile will decelerate in a
manner exactly equal and opposite to the acceleration phase.
Contouring profile modes only. They do not function when the
profile mode is set to electronic gearing.
The motion complete and in-motion bits indicate the state of the
trajectory generator, not the actual motor. Even if the trajectory
generator has completed a motion, the actual axis position may or
may not be at rest depending on motor stability, and other system
conditions.
The STOP command functions in all profile modes; S-curve pointto-point, Trajectory point-to-point, Velocity Contouring, and
Electronic Gear.
The SMOOTH_STOP functions in S-curve point-to-point,
Trajectory point-to-point, and Velocity Contouring profiling mode.
It does not function in Electronic Gear mode.
Parameter Loading & Updating
Various profile & motor control parameters must be specified by the
host for an axis to be controlled in the desired manner. To facilitate
precisely synchronized motion, these parameters and related control
commands are loaded into the chip using a double-buffered scheme. In
this scheme, the parameters and action commands being loaded are
not acted upon (copied from the double-buffered to the active registers)
until an update signal is given.
Caution should be exercised when using the STOP command due
to the large and abrupt changes in motion that may occur.
Motion Complete Status
To simplify the programming of a complete motion system it is
convenient to have the motion chipset indicate when a particular profile
move has been completed.
This update signal can consist of either a "manual" update command or
one of several conditional breakpoints. Whichever update method is
used, at the time the update occurs, all of the double buffered registers
and commands will be copied to the active registers. Conversely,
before the update occurs, loading the double-buffered registers or
executing the double buffered commands will have no effect on the
system behavior.
This function is provided by two status bits in the chipset's status word
(See the section of this manual entitled "Axis Status " for more
information on the axis status word). These two bits are called the
motion complete bit, and the in-motion bit.
The double buffered registers are listed below.
The motion complete bit is controlled interactively by the chipset and
the host. After a motion has completed, the chipset sets the motion
complete bit on. The host may then poll this bit to determine that motion
is complete, or if desired, the host can program the chipset to
automatically signal when the motion is complete (using an interrupt). In
either case once the host has recognized that the motion has been
completed the host clears the motion complete bit, enabling the bit to
indicate the end of motion for the next move.
Register Name
destination position
maximum velocity
acceleration
maximum acceleration
jerk
ratio
buffered motor command
The following list shows the conditions that will cause the motion
complete bit to occur:
-
Command to set
SET_POS
SET_VEL
SET_ACC
SET_MAX_ACC
SET_JERK
SET_RATIO
SET_BUF_MTR_CMD
The double-buffered commands are: STOP, SMOOTH_STOP, and
SYNCH_PRFL.
Profile has reached the destination position (point-to-point
profile modes only)
Axis trajectory reaches a velocity of zero and the current
velocity command is zero
SMOOTH_STOP command is given and axis trajectory
reaches a velocity of zero
STOP command is given
Limit switch condition occurs
Manual Update
There are two methods of manually updating the double-buffered
parameters & commands, one for a single axis instantaneous update
and one for a multiple-axis update.
The in-motion bit is similar to the motion complete bit except that it
continuously indicates the status of the axis without interaction with the
host. In addition this bit is used exclusively for polled mode operations.
It can not cause an interrupt to the host to be generated.
The single axis instantaneous update, which is specified using the
UPDATE command, forces the parameters for the current axis to be
updated at the next cycle.
The motion complete and the in-motion indicator bits function in
the S-curve point-to-point, Trapezoidal point-to-point, and Velocity
The multiple axis instantaneous update, which is specified using the
MULTI_UPDATE command, causes multiple axes to be updated
simultaneously. This can be useful when synchronized multi-axis
profiling is desired. This command takes a 1 word argument which
22
consists of a bit mask, with 1 bit assigned to each axis. Executing this
command has the same affect as instantaneously switching to each
desired axes, and executing an UPDATE command.
Motion Complete Breakpoint
A breakpoint can be specified which will result in the parameters
being updated when the previous motion has been completed
(motion complete bit is set). When using this breakpoint no 32 bit
compare value is required.
Breakpoints
External Breakpoint
A breakpoint can be specified which will result in the parameters
being updated when the home signal of the corresponding axis
becomes active (low). When using this breakpoint no 32 bit
compare value is required. This breakpoint is useful whenever it is
desired that an external signal starts, stops, or otherwise modifies
the profile movement.
A breakpoint is a convenient way of programming a profile or other
double-buffered parameter change upon some specific condition. There
are two types of breakpoints, those that have a 32-bit comparitor value
associated with them and those that do not. For those that have the
comparitor, a 32-bit comparitor value is loaded into the breakpoint
compare register first, and then one of the breakpoint conditions is
specified. For those breakpoint modes without associated comparitor
values only the breakpoint condition needs to be specified.
Normally, whenever one of these conditions has been programmed and
the condition occurs, the double-buffered parameters will automatically
be shifted to the active registers. There is a mechanism to disable this
"automatic update upon breakpoint" however. This is discussed in the
next section.
The double-buffered registers and commands will be updated upon
satisfaction of the specified breakpoint condition.
Here is a list of all of the available breakpoint conditions.
The above breakpoint modes are particularly useful during multi-axis
motion. This is because the next profile commands (set of hostspecified trajectory commands) can be pre-loaded and activated at the
precise position or time required, with no delay incurred to send an
update or load parameters command.
Positive Target Position Breakpoint
A 32 bit position breakpoint can be specified which will result in
the parameters being updated when the current target position
(the instantaneous desired axis position output from the profile
generator) equals or exceeds the specified breakpoint value. This
breakpoint is set using the SET_POS_BRK command.
After a breakpoint condition has been satisfied it is no longer
active. To set up another breakpoint condition, a new one must be
explicitly set by the host.
Negative Target Position Breakpoint
A 32 bit position breakpoint can be specified which will result in
the parameters being updated when the current target position
(the instantaneous desired axis position output from the profile
generator) equals or is less than the specified breakpoint
value.This breakpoint is set using the SET_NEG_BRK command.
The double-buffered registers that are shifted to the active
registers do not change upon being shifted, only the active
registers change.
Except for the MULTI_AXIS command, parameter loading and updating
is controlled individually for each axis. In addition each axis has a
separate 32-bit breakpoint register, and can be set to various individual
breakpoint conditions.
Positive Actual Position Breakpoint
A 32 bit position breakpoint can be specified which will result in
the parameters being updated when the current actual position
(the instantaneous position of the actual axis hardware) equals or
exceeds the specified breakpoint value.This breakpoint is set
using the SET_ACTL_POS_BRK command.
External Breakpoints and Homing
By connecting a home input sensor to the home signal input of the
MC1451-series chipsets it is possible to cause the chipset to halt a
motion at the moment it receives the home signal. This capability
makes it ideal for performing a home sequence. The following host I/O
sequence illustrates this:
Negative Actual Position Breakpoint
A 32 bit position breakpoint can be specified which will result in
the parameters being updated when the current actual position
(the instantaneous position of the actual axis hardware) equals or
is less than the specified breakpoint value.This breakpoint is set
using the SET_ACTL_NEG_BRK command.
GET_HOME
Time Breakpoint
A 32 bit time breakpoint can be specified which will result in the
parameters being updated when the # of cycles executed since
chip set reset (the current chip set time) is equal to the time
breakpoint value.The # of cycles continuously increases until it
rolls over from 232 - 1 back to 0.The time breakpoint is set using
SET_POS 12345
SET_VEL 23456
SET_ACC 345
UPDATE
SET_EXT_BRK
the SET_TIME_BRK command.
23
; check to make sure axis not already at
; home. If so, then a 'reverse' move must
; be made to retract axis from home switch.
; This ‘reversing’ sequence is not
; indicated here for simplicity sake
; load home move parameters
; start home move
; initiate external breakpoint mode
STOP
; load (but do not update) a stop command
2)
This sequence will start a homing move which will stop as soon as the
axis encounters the home switch.
Upon entering an over-travel condition, the trajectory generator
will automatically be halted, so that the motor does not travel
further into the over travel region.
To recover from an over-travel condition the corresponding status bits
in the status word should be reset (see the section of this manual on
axis status for details on resetting status word bits). Once this has been
performed the host can command a trajectory move to bring the axis
out of the over-travel region.
As is the case for all of the breakpoint modes, the external breakpoint
can not only be use to stop an ongoing move, but to start or otherwise
modify a move as well. This flexibility makes it well suited for
applications such as cut-on-the-fly where externally-initiated motions
are required.
The over-travel detector is 're-armed' when the axis exits the over travel
condition.
Disabling Automatic Profile Update
Only one over-travel signal can be processed at a time. For
example if the negative over travel switch becomes active, the
corresponding status bits must be cleared, and the axis moved
into the legal travel range before a positive over travel switch will
be recognized.
Normally, when a breakpoint condition has been satisfied, it causes the
profile and other double-buffered parameters to be automatically
updated. For certain types of profiles however, it may be desirable to
still use the breakpoint mechanism (to allow it to generate a host
interrupt for example), but not to have the profile update.
Axis Timing
Whether the profiles are automatically updated or not for a given axis is
controlled by the commands SET_AUTO_UPDATE_ON and
SET_AUTO_UPDATE_OFF. When auto update is set to on, the
breakpoint/profile mechanism behaves as described above. When set
to off, upon a breakpoint condition, no profile update will occur. When in
this mode the only way to update the profile is to use the UPDATE
command or the MULTI_UPDATE command.
Each axis of the MC1451-series chipsets receives a "time slice" of the
available computation power of the CP chip. The amount of time
required for the chipset to perform one complete pass of calculations for
all of the axes is known as the chipset cycle time. This chipset cycle
time is important to the host processor because it determines the rate at
which profile trajectories are updated.
The cycle time is the same for all MC1451-series chipsets. The cycle
time value is 330 uSec*. All velocities, accelerations, and jerk values
are related to this cycle time via the various trajectory generator modes
that generate axis motion.
Travel Limit Switches
The MC1451-series chipsets support motion travel limit switches that
can be used to automatically recognize an "end of travel" condition.
* exact cycle time is 327.68 uSec, 330 is an approximation.
The following figure shows a schematic representation of an axis with
travel-limit switches installed, indicating the "legal" motion area and the
over-travel regions.
negative limit
switch
negative
over-travel
region
For example, to determine the velocity of a given axis in units of
steps/second, we use the conversion ration 1 sec = 3,030 cycles (3,030
cycles/sec = 1 cycle every 330 uSec). Therefore if the desired
maximum velocity to be provided to the chipset is (for example) 12,345
steps/sec we convert to units of steps/cycle by dividing by 3,030, giving
a value of 4.07425. The value we send to the chipset using the
SET_VEL command (see host command section for details) would be
65,536 times this amount since the velocity parameter uses 1/2 16
positive limit
switch
scaling. Therefore we would send a value of 267,010 to the chipset.
Legal travel region
positive
over-travel
region
As an additional example, to determine the acceleration of a given axis
in units of steps/second2, we again use the conversion ratio 1 sec =
3,030 cycles, however we must take into account the conversion to
cycles2 (not cycles). Therefore if the desired acceleration to be
There are two primary services that the MC1451A provides in
connection with the over-travel limit switch inputs:
1)
provided to the chipset is (for example) 67,890 steps/sec2 we convert
to units of steps/cycle2 by dividing by 3,0302 (or 9,180,900), giving a
The host can be automatically notified that an axis has entered
an over-travel condition, allowing the host to take appropriate
special action to manage the over-travel condition.
value of .00739469. The value we send to the chipset using the
SET_ACC command (or SET_MAX_ACC command if we are in Scurve mode) would be 65,536 times this amount since this parameter
24
uses 1/216 scaling. Therefore we would send a value of 485 (decimal)
to the chipset.
signal is then brought high to end the transfer of the first byte. To
transfer the second (low) byte, ~HostSlct, ~HostRead, and ~HostCmd
are again brought low and the data should be read from the data bus.
All MC1451-series chips have the same cycle time (330 uSec),
which is not adjustable by the host.
Before any command write, data write or data read operations are
performed, the user must check that the HostRdy signal indicates
ready. After a command write, or after the second byte of each
read or write, this signal will go busy. It will return to ready when
the chipset can receive another I/O operation.
Host Communications
Electrical Interface
For more specific electrical information on the host interface operations,
see the pin descriptions and the timing diagram.
The MC1451A communicates to the host processor via an 8-bit bidirectional data port. 5* additional signals are used to synchronize
communication operations. The following table gives a brief description
of the control signals used during host communication:
Packet Format
Signal
~HostSlct
~HostWrite
~HostRead
HostCmd
HostRdy
All communications to/from the chip set take the form of packets. A
packet is a sequence of transfers to/from the host resulting in a chip set
action or data transfer. Packets can consist of a command with no data
(Dataless Command), a command with associated data that is written
to the chip set (Write Command) or a command with associated data
that is read from the chip set (Read Command).
Description
Selects the host port for operations
Writes a byte of data (or a command) to the chip
set. A write operation can only occur when the
ready/busy line indicates ready
Reads a byte of data from the chip set. A read
operation can only occur when the ready/busy line
indicates ready
Is asserted in combination with the HostWrite signal
when a command is being written to the chip set.
Indicates to the host that the host port is available
for operations
All commands with associated data (read or write) have either 1 or 2
words of data. See the host commands section for more information on
the length of specific commands.
If a read or a write command has 2 words of associated data (a 32 bit
quantity) the high word is loaded/read first, and the low word is
loaded/read second.
*An additional signal, HostIntrpt is provided to the host. This
signal is not used directly in communication operations, and is
discussed in a separate section
The following charts show the generic command packet sequence for a
Dataless Command, a Write Command, and a Read Command. The
hardware communication operation described in the previous section to
accomplish each type of transfer is shown in the left column.
Three types of hardware communication operations are possible
between the host processor and the chip set; Command Write, Data
Write and Data Read. Each of these operations transfers information to
or from the chip set, and is coordinated using the 5 control signals listed
above.
Dataless Command
Time
A Command Write operation involves the transfer of a single byte
command to the chip set. To perform a write command operation, the
desired command is loaded on the 8 data pins and ~HostSlct and
~HostWrite are brought low, while HostCmd is brought high.
Cmd Write:
Data Write:
Data Read:
-->
-->
-->
-->
Cmd byte
[pkt checksum]
Write Command
A Data Write operation involves the transfer of two bytes of data (1
word) to the chip set. To transfer the first byte (high byte), the desired
data byte is loaded on the 8 data bits and ~HostSlct, ~HostWrite and
HostCmd are brought low. The HostWrite signal is then brought high to
end the transfer of the first byte. To transfer the second byte (low byte),
the desired data byte is loaded on the 8 data bits and ~HostSlct,
~HostWrite and HostCmd are again brought low.
Time
Cmd Write:
Data Write:
Data Read:
A Data Read operation involves the transfer of two bytes of data (1
word) from the chip set to the host. To transfer the first (high) byte,
~HostSlct, ~HostRead,and ~HostCmd signals should be brought low,
and the data should be read from the 8 bit data bus. The HostRead
25
-->
-->
-->
-->
Cmd byte
word 1 [word 2]
[pkt checksum]
Command Errors
Read Command
Time
-->
Cmd Write:
Data Write:
Data Read:
-->
-->
If a command, or command sequence is sent to the chipset that is not
valid at a given operating condition of the chipset, but is valid at other
times, this command is said to cause a command error.
->
Cmd byte
When a command error occurs this condition is indicated by the
'command error' bit of the axis status word (See the section of this
manual entitled "Axis Status" for more information on the axis status
word).
Word 1 [Word 2] [pkt checksum]
[ ] Indicates an optional operation
The following list indicates the command sequences that result in a
command error:
Packet Checksum
The above charts show that at the end of each packet, a checksum
word is available for reading.
-
Although host to chip set I/O operations are extremely reliable, for
critical applications the checksum can provide a further reliability
enhancement (particularly in very noisy electrical environments, or
when the communication signals are routed over a media that may
have data losses such as a serial link).
Changing and updating the acceleration (SET_ACC, UPDATE)
when in the trapezoidal profile mode and when the axis
trajectory is still in motion.
-
Changing and updating either the velocity, max acceleration, or
jerk (SET_VEL or SET_MAX_ACC or SET_JERK, and then
UPDATE) when in the S-curve profiling mode and when the
trajectory is in motion
-
Commanding a move in the same direction as a limit switch
condition when in Trapezoidal or S-curve profile mode. For
example if travelling in the positive direction and a limit switch
is encountered, a further move in the positive direction will be
ignored and a command error will be generated.
This checksum consists of a 16-bit sum of all previous communications
that have occurred for the associated command. The command byte is
included in the low byte of the 1st checksum word (high byte set to 0).
Data words are added as is to the checksum value.
For example if a SET_VEL command (which takes two 16-bit words of
data) was sent with a data value of fedcba98 (hex), the checksum
would be:
Once a command error occurs the command error bit is set, and the
illegal profile changes are ignored. If additional parameters are also
changed such as position or any filter values as part of the same
UPDATE command then these parameters will not be rejected at the
time of the UPDATE, and they will become the active values.
0011
(code for SET_VEL command)
+ fedc
(high data word)
+ ba98 (low data word)
---------1b985
check sum = b985 (keep bottom 16 bits only)
Axis Addressing
Most chip set commands alter the parameters or the operating state of
one axis at a time. In this way each axis can be controlled separately.
To facilitate efficient communication for these types of commands, the
chip set maintains the concept of a current axis number, which can be
set explicitly by the host. After setting the current axis number,
commands that are addressed to the current axis will automatically
operate on this axis. The current axis number will stay the same until it
is changed by one of the commands that alter the current axis number.
Reading the checksum is optional. Recovering from an incorrect packet
transfer (bad checksum) will depend on the nature of the packet. Read
and Write operations can always be re-transmitted, while a command
resulting in an action may or may not be re-tried, depending on the
command and the state of the axis.
Illegal Commands
As an illustration of this, the following sequence sets the current axis to
#2, updates some motion parameters, and switches to axis #1, and
alters some other motion parameters.
When the MC1451A receives a command that is illegal (see host
command summary for listing of illegal commands), it will signal this
condition by returning a checksum of 0, regardless of the illegal
command value or the value of any subsequent data written to the host
as part of the illegal command sequence.
SET_2
SET_POS
In this manner the host processor checksum can be used to detect
communication problems as well as an illegal command sequence,
resulting in a simplification of the host processor communication code.
UPDATE
26
02345678
-> sets current axis to #2
-> loads current axis (#2) dest.
position with value of 2345678
-> causes the loaded value to take
effect (axis # 2)
SET_1
SET_ACCEL
00001234
UPDATE
-> sets current axis to #1
-> loads current axis (#1) with
acceleration value 1234
-> causes the loaded value to take
effect (axis # 1)
Bits 0-7 indicate various status flags that can also generate host
interrupts (see next section for details). These flags are set by the
chipset, and must be reset by the host (They will not be cleared by the
chipset).
Bits 0-7 of the status word operate using a set/reset mechanism.
These flags are set by the chipset, and must be reset by the host.
If they are not reset by the host they will remain active indefinitely.
Axis Status
The MC1451A supports a status word for each axis, which contains
various information about the state of the axis.
Miscellaneous Mode Status Word
The status word is a 16-bit register which can be queried using the
command GET_STATUS. It contains the following information (Bit
encoding is 0 = LSB, 15 = MSB):
Bit #
0
1
2
3
4
5
6
7
8
9
10
11
12,13
14,15
There is another status word available that indicates the current status
of various mode settings or conditions.
Description
Motion complete flag. This bit is set (1) when the axis
trajectory has completed. This flag is only valid for the Scurve and trapezoidal, and velocity contouring profile
modes.
Wrap-around condition flag. This bit is set (1) when the axis
has reached the end of its travel range,and has wrapped to
the other end of the travel range. Specifically, when
travelling in a positive direction past the position
+1,073,741,823, the axis will wrap to position 1,073,741,824, and vice-versa.
Breakpoint reached flag. This bit is set (1) when one of the
breakpoint conditions has occurred.
Index pulse received flag. This bit is set (1) when an index
pulse has been received.
Motion error flag. This bit is set (1) when the position error is
exceeded (see filter section for more information). This bit
can only be reset when the axis is no longer in a motion
error condition
Positive limit switch flag. This bit is set (1) when the positive
limit switch goes active.
Negative limit switch flag. This bit is set (1) when the
negative limit switch goes active.
Command error flag. This bit is set (1) when a command
error has occurred.
motor on/off status (1 indicates motor is on, 0 indicates
motor is off).
axis on/off status (1 indicates on, 0 indicates off).
In-motion flag. This bit continuously indicates whether or not
the axis trajectory is in motion. This bit is set (1) when the
axis is in motion, and cleared (0) when the axis trajectory is
not in motion.
reserved (may contain 0 or 1)
current axis # (13 bit = high bit, 12 bit = low bit). Therefore
axis encoding is as follows:
Bit 13
Bit12
Axis
0
0
1
0
1
2
reserved (may contain 0 or 1)
The miscellaneous mode status word is a 16-bit register which can be
queried using the command GET_MODE. It contains the following
information (Bit encoding is 0 = LSB, 15 = MSB):
Bit #
0-6
7
8
9
10
11,12
13-15
Bits 8-10 and 12-13 indicate continuous status information, and do not
need to be reset by the host.
27
Description
Used internally by chipset. Contains no host-useable
information.
Stop on motion error mode flag. This bit indicates the state
of the stop on motion error mode, set by the commands
SET_AUTO_STOP_ON and SET_AUTO_STOP_OFF. A 1
indicates auto stop is on (-E version chipset only).
Used internally by chipset. Contains no host-useable
information
Pulse Generator Mode. This bit indicates the mode of the
pulse generator, set using the commands
SET_OUTPUT_STNDRD, and SET_OUTPUT_HIGH. A
one (1) indicates the generator is set for high speed output
Auto update flag. This bit indicates the state of the auto
update mode, set using the commands
SET_AUTO_UPDATE_ON and
SET_AUTO_UPDATE_OFF. A 1 indicates that auto update
is disabled.
Trajectory generator mode. This bit indicates the mode of
the trajectory generator, set using the commands
SET_PRFL_S_CRV, SET_PRFL_TRAP, SET_PRFL_VEL,
SET_PRFL_GEAR. The encoding is as follows:
Bit 12
Bit11
Profile Mode
0
0
trapezoidal
0
1
velocity contouring
1
0
s-curve
1
1
electronic gear
Phase #. These bits indicate the current phase # of the Scurve profile (only valid if the current profile mode is Scurve). A 0 indicates that the profile has not started yet, and
phases 1-7 indicate the phase #'s corresponding to the
phases described in the S-curve profiling mode. The 3-bit
phase # word is encoded bit 15 MSB, and bit 13 LSB.
Host Interrupts
The following host commands are used in managing interrupts:
(See Host Command reference for complete information)
In many situations, during axis motion or at other times, it is useful to
have the chip set signal the host that a special condition has occurred.
This is generally more convenient and efficient than having the host poll
the chip set for various possible conditions. This chip set-initiated signal
is known as a host interrupt.
Several chip set conditions may occur that can result in the generation
of a host interrupt. Whether these conditions in fact interrupt the host is
controllable for each condition and for each axis. The mechanism used
to control each condition is a mask register.
Position Capture
Received
Motion Error
Negative Limit Switch
Positive Limit Switch
Command Error
Sets the interrupt conditions mask
GET_INTRPT
Returns the status of the interrupting axis
(including the interrupting axis #). The
current axis # is not altered by this
command
Changes the current axis # to the
interrupting axis. This is a 'time saver'
command which performs the dual
operations of getting the interrupting axis
# and switching to that axis in one
command.
Clears particular conditions for the
interrupting axis. The current axis # is not
altered by this command.
SET_I
The interrupt conditions correspond to bits 0-7 and 11 of the
status register (the axis event flags), described in the previous
section. These conditions are summarized below:
Motion Complete
Wrap-around condition
Break Point Reached
SET_INTRPT_MASK
RST_INTRPT
Occurs when the profile is complete
Occurs when the axis position wraps.
Occurs when a breakpoint condition has
been satisfied.
Occurs when the encoder index pulse or
home pulse has been captured
Occurs when the maximum position
error set for a particular axis has been
exceeded
Occurs when the negative over-travel
limit switch is active
Occurs when the positive over travel
limit switch is active
Occurs when a host communication
sequence causes a command error
condition
To facilitate determining the nature of the interrupt, the status register
holds the axis #, allowing the interrupting axis # to be determined.
The following represents a typical sequence of interrupt conditions and
host responses. Assume for the purposes of this example that an axis
(not the current axis) has hit a "hard stop" causing an essentially
instantaneous motion error, as well as a positive limit switch trip. Also
assume that the interrupt mask for this axis was set so that either
motion errors or limit switch trips will cause an interrupt
Event
motion Error & limit switch trip
generates interrupt
interrupting axis status
returned by chipset, current
axis set to interrupting axis.
When one of these interrupt conditions occur for a particular axis, the
host interrupt line is made active. At this point the host can respond to
the interrupt (although the current I/O operation should be completed),
but it is not required to do so
chipset clears motion error bit
and disables host interrupt line
Because limit switch interrupt
is still active chipset
immediately generates
interrupt for limit switch
interrupting axis status
returned by chipset, current
axis set to interrupting axis.
When the host has completed processing the interrupt, it sends a
command that clears the interrupt conditions for a particular axis, the
RST_INTRPT command.
This command includes a "clearing mask" as an argument, which
allows one interrupt to be cleared at a time.
Bits cleared by the RST_INTRPT command are the exact same bits
as those cleared by non-interrupt commands such as
RST_STATUS and CLR_STATUS. In each case the bits affected are
the status word bits 0-7.
chipset clears limit switch bit
and disables host interrupt line
Interrupts occur for a particular axis. If the user is currently
programming parameters on axis #1 and an interrupt occurs on axis #2,
it is the host's responsibility to change axis number to 2 if this is the
appropriate response to an interrupt on that axis. If more than one axis
interrupt condition becomes active at exactly the same time, then the
axis with the lowest number will generate the interrupt first.
Host action
host sends SET_I command
host detects motion error & limit
switch flags are set, recovers from
motion error first.
host sends: RST_INTRPT 00EF,
clearing motion error bit
host sends SET_I command
host detects that neg. limit switch
trip flag is set, performs recovery
for limit switch trip.
host sends RST_INTRPT 00DF,
clearing pos. limit switch bit
-
At the end of this sequence, all status bits are clear, the interrupt line is
inactive, and no interrupts are pending.
28
Note that it is not required to process multiple interrupts separately (as
is shown in the example). It is perfectly valid to process 2 or more
interrupt conditions at the same time, and to then send a RST_INTRPT
command with a mask that clears multiple bits at the same time.
Pulse Generation Control
The RST_INTRPT and GET_I commands are only effective when
there is an interrupt present. If no interrupt is present than
alternative 'polled-mode' commands such as RST_STATUS or
GET_STATUS should be used.
In addition to the trajectory profile however there is separate method of
enabling and disabling pulse generation. This method is known as
'motor control' and provides an on/off pulse generator control
mechanism. The command to enable pulse output is MTR_ON and the
command to disable pulse generation is MTR_OFF.
Pulse & Direction Signal Generation
MTR_OFF causes the trajectory generator to immediately discontinue
further pulse generation until a MTR_ON command is given. As long as
the motor is in the off state any further trajectory commands will have
no effect until the motor is turned on.
The rate of pulse output is usually determined by the particular
trajectory profile parameters being requested by the host processor.
For each axis two signals are provided which determine the desired
axis position at any given moment. These two signals are the pulse
signal, and the direction signal.
The current motor status (on or off) can be read back using the axis
status word (bit # 8).
The pulse signal output by the chipset consists of a precisely-controlled
series of individual pulses each of which represents a desired
increment of movement. This signal is always output as a square wave
pulse train (50 % duty cycle regardless of pulse rate).
It the motor is turned on by the host (MTR_ON command) the motor will
stay at rest until a new trajectory move is loaded and initiated.
In addition to manually turning the motor output on and off it possible for
the chipset to automatically turn the motor off during a motion. This can
occur if the chipset detects a motion error condition while the auto-stop
feature is enabled. See the section of this manual below entitled "Stall
Detection" for more information.
A step, or pulse, is considered to have occurred when the pulse signal
transitions from a high to a low output value
The direction signal is synchronized with the pulse signal at the
moment each pulse transition occurs. The direction signal is encoded
such that a high value indicates a positive direction pulse, and a low
value indicates a negative direction pulse.
At Rest Indicator
In addition to the standard pulse and direction output signals the
MC1451-series chipsets provide an additional output for each axis
known as the AtRest signal which indicates when the trajectory
generator is in motion.
The MC1451-series of chipsets supports two separate pulse rate
modes, known as the standard speed mode, which can output pulses at
up 48.8 KSteps per second, and the high speed mode, which can
output pulses at up to 1.5625 MegaSteps/sec.
This signal can be useful when interfacing with amplifiers that support a
separate torque output level for the stepper during motion as when the
motor is not moving (holding).
For full-step and half-step applications, as well as pulse and direction
applications which will have a maximum velocity of ~ 48 ksteps/sec, the
standard speed range should be used. For applications which require
pulse rates higher than 48 ksteps/sec the high speed range should be
used.
This feature is enabled and operational automatically at all times. It
does not need to be initiated by the host processor.
To select the standard speed mode use the command
SET_OUTPUT_STNDRD. To select the high speed mode use the
command SET_OUTPUT_HIGH. Speed range is selectable separately
for each axis.
Encoder Position Feedback
The MC1451A-E version of the MC1451A chipset has the capability of
receiving quadrature position data so that the current location of the
motor can be determined.
To read back the current speed range setting, use the GET_MODE
command, bit # 9.
To receive quadrature information the MC1451A chipset must have the
optional 'ENC' chip installed.
The pulse counter is designed such that a step occurs when the
pulse signal transitions from high to low. Systems that use step
motor amplifiers that interpret a pulse as a low to high transition
should insert an inverter at the pulse signal output from the
MC1451A chipset to insure proper step counting.
The MC1451A-E supports two encoder signals per axis, the A
quadrature channel and the B quadrature channel. Up to four axes are
supported. For a given chipset the number of encoder channels
supported is equal to the number of pulse and direction channels. For
example the MC1251A-E supports 2 sets of pulse and direction
channels and 2 sets of A, B quadrature signals.
29
rotation
Each quadrature channel consists of a square wave offset 90 deg. from
the other. Positive motion consists of the A channel leading the B
channel by 90 deg., and negative motion consists of the A channel
lagging the B channel by 90 deg. For each full phase of one channel,
four resolved quadrature counts will occur, resulting in a 4 to 1
resolution enhancement over the basic channel resolution.
For example if a step motor with a 64 ustep per full step pulse and
directionping amplifier (12,800 total pulses per motor rotation) is used
with an encoder which has 4,000 counts per motor rotation, the ratio
specified in the SET_STEP_RATIO command would be
(4,000/12,800)*256, or 80.
To enhance reliability of the received encoder information the MC1451
provides digital filtering of the quadrature data lines (A and B
quadrature count) as well as the index and home signals.
For all of these signals a valid high or low condition is recognized only
when the input signal has been maintained for 3 clock cycles of 160
nSec each (total required duration of 480 nSec)
Although the MC1451A-E supports stall detection with encoders that
have a different number of counts then pulses, the ratio provided with
the SET_STEP_RATIO command must be an exact integer. For
example in the above example an encoder with 4,000 counts per
rotation which gives a ratio value of 80 is acceptable however an
encoder with 4,096 which gives a ratio value of 81.92 is not acceptable.
Although this digital filtering scheme can increase the overall reliability
of the quadrature data, to achieve the highest possible reliability
additional techniques may be required, such as differential line
drivers/receivers, or analog filtering.
Position Error
The difference between the desired position, also called the target
position, and the actual encoder position is known as the position error,
or the actual position error.
Stall Detection
The position error is continuously maintained by the chipset and can be
read by the host at any time. To read the position error the command
GET_ACTL_POS_ERR is used.
The MC1451A-E chipset supports two primary operations in connection
with encoder feedback:
To perform the stall detection function the position error is continuously
compared with the maximum allowed position error, which is set using
the command SET_POS_ERR. To read this value back the command
GET_POS_ERR is used. The units of the maximum position error is
encoder counts.
- readback of current axis position
- automatic stall detection.
Readback of the current encoder position is accomplished using the
GET_ACTL_POS command. This command allows the user to confirm
that the stepper axis has achieved a particular location. The
GET_ACTL_POS command can be used at any time, whether the axis
is in motion or not.
If the maximum position error value is exceeded (stall is detected), then
the axis is said to be in a "motion error" condition. When this occurs the
motion error bit in the axis status word is set, and further pulse
generation may be halted, depending on the state of the automatic
motor shutdown mode (see SET_AUTO_STOP_ON and
SET_AUTO_STOP_OFF host command descriptions).
Automatic stall detection allows the chipset to detect when the step
motor has lost steps during a motion. This typically occurs when the
motor encounters an obstruction, or otherwise exceeds its rated torque
specification.
If the automatic motor stop mode is not set than only the motion error
status bit is set.
Automatic stall detection operates continuously once it is initiated. The
current desired position (target position) is compared with the actual
position (from the encoder) and if the difference between these two
values exceeds a specified limit a stall condition is detected.
Recovering From A Motion Error
To recover from a motion error which results in the pulse output being
halted, the following sequence should be performed:
To initiate automatic stall detection the host must specify the number of
encoder counts per output motor step. This is accomplished using the
command SET_STEP_RATIO. The following equation shows how this
value should be set for various values of encoder count resolution and
output step resolution:
1)
Determine cause of motion error and correct problem (this may
require human intervention).
2)
Synchronize the profile generator's target position with the actual
axis location by executing a SYNCH_PRFL command, and then
an UPDATE command
3)
Turn pulse generator back on using MTR_ON command.
Ratio = (Ncounts/Npulses)*256.
where:
Ratio is the ratio value specified to the SET_STEP_RATIO
command
Ncounts is the number of encoder counts per motor
After the above sequence the axis will be at rest, and the position error
between the target position and the actual encoder position will be set
to zero.
rotation.
Npulses is the number of output step pulses per motor
30
Resetting the position error is useful not only for motion error recovery
but also when the coordinate system is changed. Several commands
reset the position error to zero. These commands are
SET_ACTL_POS, which sets the actual as well as the target position to
a particular value, ZERO_POS, which sets the actual and target
position to zero, and SYNCH_PRFL, which sets the actual position
equal to the target position. The ZERO_POS and SYNCH_PRFL
commands will not take affect until an UPDATE command is given.
31
Command Summary
Command Mnemonic
Axis Control
SET_1
SET_2
SET_3
SET_4
SET_I
Profile Generation
SET_PRFL_S_CRV
SET_PRFL_TRAP
SET_PRFL_VEL
SET_PRFL_GEAR
SET_POS
SET_VEL
SET_ACC
SET_MAX_ACC
SET_JERK
SET_RATIO
SET_START_VEL
STOP
SMOOTH_STOP
SYNCH_PRFL
GET_POS
GET_VEL
GET_ACC
GET_MAX_ACC
GET_JERK
GET_RATIO
GET_START_VEL
GET_TRGT_POS
GET_TRGT_VEL
Parameter Update
SET_TIME_BRK
SET_POS_BRK
SET_NEG_BRK
SET_ACTL_POS_BRK
SET_ACTL_NEG_BRK
SET_MTN_CMPLT_BRK
SET_EXT_BRK
SET_BRK_OFF
SET_BRK_PNT
UPDATE
MULTI_UPDATE
SET_AUTO_UPDATE_ON
SET_AUTO_UPDATE_OFF
GET_BRK_PNT
Code
(hex)
Available
on
Axes acted on
# data words
/direction
Double
Buffered
01
02
03
04
08
all axes
all axes
all axes
all axes
all axes
set by cmd.
set by cmd.
set by cmd.
set by cmd.
interrupting axis
1/read
1/read
1/read
1/read
1/read
no
no
no
no
no
Set current axis # to 1
Set current axis # to 2
Set current axis # to 3
Set current axis # to 4
Set current axis # to the interrupting axis
0b
09
0a
0c
10
11
12
15
13
14
6a
46
4e
47
4a
4b
4c
4f
58
59
6b
1d
1e
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
0
0
0
0
2/write
2/write
2/write
1/write
2/write
2/write
2/write
0
0
0
2/read
2/read
2/read
1/read
2/read
2/read
2/read
2/read
2/read
no
no
no
no
yes
yes
yes
yes
yes
yes
no
yes
yes
yes
-
Set profile mode to S-curve
Set profile mode to trapezoidal point to point
Set profile mode to velocity-contouring
Set profile mode to electronic gear
Set command position
Set command velocity
Set command acceleration
Set max acceleration (S-curve profile only)
Set command jerk
Set command electronic gear ratio
Set starting velocity
Abruptly stop current axis motion
Smoothly stop current axis motion
Set actual pos. equal to target pos. (-E only)
Get command position
Get command velocity
Get command acceleration
Get max. acceleration (S-curve profile only)
Get command jerk
Get command electronic gear rate
Get starting velocity
Get current target position
Get current target velocity
17
18
19
1b
1c
35
5e
6d
16
1a
5b
5c
5d
57
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
set by mask
current axis
current axis
current axis
0
0
0
0
0
0
0
0
2/write
0
1/write
0
0
2/read
no
no
no
no
no
no
no
no
no
no
no
no
-
Set breakpoint mode to time
Set breakpoint mode to pos. target position
Set breakpoint mode to neg. target position
Set breakpoint mode to pos. actual position
Set breakpoint mode to neg. actual position
Set breakpoint mode to motion complete
Set breakpoint mode to external
Set breakpoint mode off
Set breakpoint comparison value
Immediate parameter update
Multiple axis immediate parameter update
Set automatic profile update on
Set automatic profile update off
Get breakpoint comparison value
32
Description
Command Mnemonic
Code
(hex)
Interrupt Processing
SET_INTRPT_MASK
2f
GET_INTRPT
30
RST_INTRPT
32
GET_INTRPT_MASK
56
Status/Mode
CLR_STATUS
33
RST_STATUS
34
GET_STATUS
31
GET_MODE
48
Pulse Generation
SET_OUTPUT_STNDRD
3c
SET_OUTPUT_HIGH
3b
MTR_ON
43
MTR_OFF
42
Encoder (-E Version Chipsets Only)
GET_ACTL_POS
37
SET_STEP_RATIO
68
GET_STEP_RATIO
6f
SET_AUTO_STOP_ON
45
SET_AUTO_STOP_OFF
44
SET_POS_ERR
29
GET_POS_ERR
55
GET_ACTL_POS_ERR
60
Miscellaneous
SET_ACTL_POS
4d
SET_LMT_SENSE
66
GET_LMT_SWTCH
67
LMTS_ON
70
LMTS_OFF
71
GET_HOME
05
RESET
39
GET_VRSN
6c
GET_TIME
3e
Available
on
Axes acted on
# data words
/direction
Double
Buffered
all axes
all axes
all axes
all axes
current axis
interrupting axis
interrupting axis
current axis
1/write
1/read
1/write
1/read
no
no
-
Set interrupt mask
Get status of interrupting axis
Reset interrupting events
Get interrupt mask
all axes
all axes
all axes
all axes
current axis
current axis
current axis
current axis
0
1/write
1/read
1/read
no
no
-
Reset status of current axis
Reset events for current axis
Get axis status word
Get axis mode word
all axes
all axes
all axes
all axes
current axis
current axis
current axis
current axis
0
0
0
0
no
no
no
no
Set pulse generation mode to standard
Set pulse generation mode to high speed
Enable pulse generator output
Disable pulse generator output
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
current axis
current axis
current axis
current axis
current axis
current axis
current axis
current axis
2/read
1/write
1/read
0
0
1/write
1/read
1/read
no
no
no
no
-
Get current actual axis location
Set number of encoder counts per step
Get number of encoder counts per step
Set auto stop on motion error mode on
Set auto stop on motion error mode off
Set maximum position error limit
Get maximum position error limit
Get actual position error
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
all axes
current axis
global
global
global
global
global
global
global
global
2/write
1/write
1/read
0
0
1/read
0
1/read
2/read
no
no
no
no
no
-
Set axis position
Set limit switch bit sense
Get state of limit switches
Set limit switch sensing on
Set limit switch sensing off
Get state of home switches
Reset chipset
Get chipset software version information
Get current chip set time (# cycles)
33
Description
The following hex code commands are reserved for future use, or are
currently used during manufacturing/test. They return a valid checksum,
although they should not be used during normal chipset operations. The
hex command codes are: 49, 4e
Command Reference
Each command consists of a single byte, with a command code value
as described in the "encoding" description for each command. Data is
transmitted to/from the chip set in 16-bit words. All data is encoded
"high to low" i.e. each 16-bit word is encoded high byte first, low byte
second, and two word data values are encoded high word first, low
word second.
The following hex code commands are illegal, and will return a
checksum of 0. They should not be used during normal chipset
operations. The hex command codes are: 00, 03, 04, 22, 80 through ff
Unless otherwise noted, all numerical values presented in this
command summary are in decimal.
Signed data is represented in two’s complement format. In the case of
32-bit quantities, the entire 32-bit number is two's complemented. For
example to transmit the decimal number 1,234,567, which has a
hexadecimal representation of 12d687, the high word is sent first (12
hex) and then the low word is sent (d687 hex). Negative numbers are
treated in the same way. For example to transmit the decimal number
-746,455 , which has a hexadecimal value of fff49c29, then the high
word is transmitted first (fff4 hex.) followed by the low word (9c29 hex.).
Axis Control
SET_1
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Some chipset quantities such as position are provided with ‘unity
scaling’, meaning that the value provided is used by the chipset without
internal scaling.
Other chipset quantities are scaled by various constants to allow a
more useful operating range. The non-unity scaling constants that are
used by the chipset are either 1/216 or 1/232 .
Set current axis to #1
1/read
01 (hex)
set by command
all axes
No
SET_1 changes the current axis number to 1. All commands that
operate on the current axis will be affected by this command. The
status of axis #1 is returned. See GET_STATUS command for the
status word format.
If 1/216 scaling is used then the chipset expects a number which has
been scaled by a factor of 65,536 from the ‘user’ units. For example to
specify a velocity (SET_VEL command) of 2.75 steps/cycle time, 2.75
is multiplied by 65,536 and the result is sent to the chipset as a 32 bit
integer (180,224 dec. or 2c000 hex.). 1/216 scaling is used with 16 bit
SET_2
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
as well as 32 bit quantities. The size of the data word does not affect
how the scaling is performed.
If 1/232 scaling is indicated the chipset expects a number which has
been scaled by a factor of 4,294,967,296. For example to specify a
jerk value (SET_JERK command) of .0075 steps/cycle time3, .0075 is
Set current axis to #2
1/read
02 (hex)
set by command
all axes
No
SET_2 changes the current axis number to 2. All commands that
operate on the current axis will be affected by this command. The
status of the axis #2 is returned. See GET_STATUS command for the
status word format.
multiplied by 4,294,967,296 and the result is sent to the chipset as a 32
bit integer (32,212,256 dec. or 1eb8520 hex).
All transmissions to/from the chip set are checksummed. The
checksum is a 16-bit quantity that can be read at the end of each
command transmission. The checksum value consists of the 16-bit sum
of all 16-bit transmissions to or from the chip set, including the
command byte which occupies the low byte of the first 16-bit
transmission word. For example if a SET_VEL command (which takes
two 16-bit words of data) was sent with a data value of fedcba98 (hex),
the checksum would be:
SET_3
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set current axis to #3
1/read
03 (hex)
set by command
all axes
No
SET_3 changes the current axis number to 3. All commands that
operate on the current axis will be affected by this command. The
status of the axis #3 is returned. See GET_STATUS command for the
status word format.
0011
(code for SET_VEL command)
+ fedc
(high data word)
+ ba98 (low data word)
---------1b985
check sum = b985 (keep bottom 16 bits only)
34
SET_4
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_PRFL_TRAP
Set current axis to #4
1/read
04 (hex)
set by command
all axes
No
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_4 changes the current axis number to 4. All commands that
operate on the current axis will be affected by this command. The
status of the axis #4 is returned. See GET_STATUS command for the
status word format.
SET_I
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_PRFL_TRAP sets the trajectory profile mode to trapezoidal point
to point. In this mode, the host specifies the destination position
(SET_POS cmd), the maximum velocity (SET_VEL cmd), the starting
velocity (SET_START_VEL cmd), and the acceleration (SET_ACC
cmd). Once in this mode, the trajectory profile generator will drive the
axis to the destination position at the specified acceleration while not
exceeding the maximum velocity. Position and velocity may be
changed on the fly when in this profile mode; acceleration and starting
velocity may not. The axis will stay in this profile mode until another
profile mode is explicitly set.
Set current axis to interrupting axis
1/read
08 (hex)
interrupting axis
all axes
No
Before setting the current profile mode to trapezoidal point to
point, the axis should be completely at rest.
SET_I changes the current axis number to the interrupting axis, which
is the axis that has caused the host interrupt to become active. All
commands that operate on the current axis will be affected by this
command. The status of the interrupting axis is returned. See
GET_STATUS command for the status word format.
While in this mode, the acceleration should not be changed until
the axis has come to a stop.
SET_PRFL_VEL
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Profile Generation
SET_PRFL_S_CRV
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set profile mode to trapezoidal point to
point
none
09 (hex)
current axis
all axes
No
Set profile mode to S-curve point to
point
none
0b (hex)
current axis
all axes
No
Set profile mode to velocity contouring.
none
0a (hex)
current axis
all axes
No
SET_PRFL_VEL sets the trajectory profile mode to velocity contouring.
In this mode the host specifies the command acceleration (SET_ACC
cmd), the starting velocity (SET_START_VEL cmd), and the maximum
velocity (SET_VEL cmd). Once in this mode, the trajectory profile
generator will drive the axis at the specified acceleration while not
exceeding the maximum velocity. The acceleration and the maximum
velocity may be changed on the fly. The starting velocity may not. The
axis will stay in this profile mode until another profile mode is explicitly
set. There are no limitations on changing the profile mode to velocity
contouring while the axis is in motion.
SET_PRFL_S_CRV sets the trajectory profile mode to S-curve point to
point. In this mode, the host specifies the destination position
(SET_POS cmd), the maximum velocity (SET_VEL cmd) the maximum
acceleration (SET_MAX_ACC cmd), and the jerk (SET_JERK cmd).
Once in this mode, the trajectory profile generator will drive the axis to
the destination position at the specified jerk while not exceeding the
maximum velocity and max. acceleration. The axis will stay in this
profile mode until another profile mode is explicitly set.
There are no host-specified limits on the position in this mode. It
is the responsibility of the host to specify profile parameters that
maintain the axis within safe position limits.
While in this profile mode, no parameters should be changed
while the axis is in motion.
SET_PRFL_GEAR
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Before setting the current profile mode to S-curve point to point,
the axis should be completely at rest.
Set profile mode to electronic gear
none
0c (hex)
current axis
all axes
No
SET_PRFL_GEAR, sets the trajectory profile mode to electronic gear.
In this mode the host specifies the gear ratio (SET_RATIO cmd). Once
35
in this mode the trajectory profile generator will drive the current axis to
the position specified by the encoder factored by the specified gear
ratio. The gear ratio may be changed on the fly. The axis will stay in this
profile mode until another profile mode is explicitly set.
This command is used when the profile mode is set to trapezoidal
point-to-point or velocity contouring.
SET_MAX_ACC
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
There are no host-specified limits to axis motion in this mode. It is
the responsibility of the host to specify a gear ratio that maintains
the axis within safe motion limits.
This command is available on the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
SET_POS
Data/direction
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_MAX_ACC sets the maximum acceleration. The acceleration is
specified as an unsigned 16-bit number with units of steps/cycle2
Set command position
2/write
10 (hex)
current axis
all axes
yes
represented using 1/216 scaling. The range is 0 to +1,073,741,823. The
loaded max. acceleration is not utilized until a parameter update occurs.
This command is used when the profile mode is set to S-curve
point to point.
SET_POS sets the final position used during the S-curve and
trapezoidal trajectory profile generator modes. The position is specified
as a signed 32-bit number with units of steps. The range is
-1,073,741,824 to 1,073,741,823. The loaded position is not utilized
until a parameter update occurs.
SET_VEL
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_JERK
Data written:
Data read:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set command velocity
2/write
11 (hex)
current axis
all axes
yes
Set command jerk
2 words
none
13 (hex)
current axis
all axes
yes
SET_JERK sets the command jerk used during the S-curve profile
generation mode. The jerk is specified as an unsigned 32-bit number
with units of steps/cycle3. The scaling is 1/232. The range is 0 to
2,147,483,647. The loaded jerk is not utilized until a parameter update
occurs.
SET_VEL sets the maximum velocity magnitude used during the Scurve, trapezoidal, and velocity contouring profile modes. The velocity
is specified as an unsigned 32-bit number with units of steps/cycle. The
data word scaling is 1/216. The range is 0 to +1,073,741,823. The
SET_RATIO
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
loaded velocity is not utilized until a parameter update occurs.
SET_ACC
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set maximum acceleration
1/write
15 (hex)
current axis
all axes
yes
Set command acceleration
2/write
12 (hex)
current axis
all axes
yes
Set command gear ratio
2/write
14 (hex)
current axis
all axes
yes
SET_RATIO sets the electronic gear ratio used by the trajectory profile
generator. It is used when the profile mode is set to electronic gear. The
gear ratio is specified as a signed 32-bit number with 1/216 scaling. The
range is -1,073,741,824 to +1,073,741,823. The specified ratio value is
defined as the number of steps per encoder count with a positive
number indicating motion in the same direction. For example a value of
+8000 hex (1/2) will result in 1 step in the positive direction for each two
encoder counts in the positive direction, and a value of -FFFE0000 hex
(-2) will result in 2 steps in the negative direction for each encoder
count in the positive direction. The loaded ratio is not utilized until a
parameter update occurs.
SET_ACC sets the command acceleration. When in trapezoidal pointto-point mode, the acceleration is specified as an unsigned 32-bit
number with units of steps/cycle2, represented using 1/216 scaling. The
range is 0 to +1,073,741,823. When in the velocity contouring mode,
the acceleration is specified as a signed 32-bit number with units of
steps/cycle2, represented in 1/216 format.The range is -1,073,741,824
to +1,073,741,823. The loaded acceleration is not utilized until a
parameter update occurs.
36
during a trapezoidal profile or a velocity mode profile the deceleration
will be linear, with a value equal to the acceleration parameter.
This command is available on the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
SET_START_VEL
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
This command does not function when the profile mode is set to
Electronic Gear.
Set starting velocity
2/write
6a (hex)
current axis
all axes
no
SYNCH_PRFL
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_START_VEL sets the minimum allowed velocity. This command
is used during the trapezoidal and velocity contouring profile modes,
and is useful in conjunction with systems that may be induced to
oscillate if operated at too low a speed. The starting velocity is specified
as an unsigned 32-bit number with units of steps/cycle. The data word
scaling is 1/216. The range is 0 to +1,073,741,823.
SYNCH_PRFL sets the trajectory profile generator target position (in
steps) equal to the actual axis position (in encoder counts), clearing the
following error. This command is available for all profile types. This
function will not be performed until a parameter update occurs.
The starting velocity must always be smaller than the maximum
velocity set using the SET_VEL command.
The SYNCH_PRFL command does not set the target velocity to
zero. If it is desired that the axis not move after a SYNCH_PRFL
command then a STOP command, in addition to the SYNCH_PRFL
command should be used.
This command is not used with the S-curve and electronic gear
profile modes.
The starting velocity parameter is not double buffered. It takes
affect immediately, not after an UPDATE command.
STOP
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
This command is available on the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
Abruptly stop current axis motion
none
46 (hex)
current axis
all axes
yes
GET_POS
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
STOP, also known as CLR_PRFL in earlier chipset versions, stops the
current axis by setting the target velocity to zero. This function will not
be performed until a parameter update occurs. After the update occurs
the axis trajectory generator will stop and the motion complete bit will
be set. This command is useful for stopping the axis abruptly.
SMOOTH_STOP
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set target position equal to the actual
position
none
47 (hex)
current axis
all axes
yes
Get command position
2/read
4a (hex)
current axis
all axes
-
GET_POS returns the destination position set using the SET_POS
command. It returns the double-buffered value (set directly by the host),
which may or may not correspond to the active value, depending on
whether the profile parameters have been updated. The returned
position is a signed 32-bit number with units of steps.
Smoothly stop current axis motion
none
4e (hex)
current axis
all axes
yes
GET_VEL
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SMOOTH_STOP stops the current axis by setting the desired velocity
to zero, resulting in a controlled deceleration of the axis eventually to a
velocity of 0. The deceleration profile will mirror the acceleration profile
for the current profile mode. For example if the SMOOTH_STOP
command is given during an s-curve profile the deceleration profile may
have up to three phases, depending on the # of phases during the
acceleration profile, and if the SMOOTH_STOP command is given
Get command velocity
2/read
4b (hex)
current axis
all axes
-
GET_VEL returns the maximum velocity set using the SET_VEL
command. It returns the double-buffered value (set directly by the host),
which may or may not correspond to the active value, depending on
whether the profile parameters have been updated. The returned
37
velocity is an unsigned 32-bit number in 1/216 format with units of
steps/cycle.
GET_ACC
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
GET_RATIO
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Get command acceleration
2/read
4c (hex)
current axis
all axes
-
GET_RATIO returns the gear ratio set using the SET_RATIO
command. It returns the double-buffered value (set directly by the host),
which may or may not correspond to the active value, depending on
whether the profile parameters have been updated. The returned ratio
is a signed 32-bit number in 1/216 format.
GET_ACC returns the acceleration value set using the SET_ACC
command. It returns the double-buffered value (set directly by the host),
which may or may not correspond to the active value, depending on
whether the profile parameters have been updated. The returned
position is either an unsigned 32-bit number in 1/216 format with units
This command is available on the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
of steps/cycle2, or a signed 32 bit number in 1/216 format with units of
steps/cycle2.
GET_START_VEL
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
This command is used when the profile mode is set to trapezoidal
point-to-point or velocity contouring.
GET_MAX_ACC
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Get maximum acceleration
1/read
4f (hex)
current axis
all axes
-
Get starting velocity
2/read
6b (hex)
current axis
all axes
-
GET_START_VEL returns the starting velocity set using the
SET_START_VEL command. The returned starting velocity is an
unsigned 32-bit number using 1/216 scaling with units of steps/cycle.
GET_TRGT_POS
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
GET_MAX_ACC returns the max. acceleration value set using the
SET_MAX_ACC command. It returns the double-buffered value (set
directly by the host), which may or may not correspond to the active
value, depending on whether the profile parameters have been
updated. The returned acceleration is an unsigned 16-bit number in
1/216 format with units of steps/cycle2.
Return target position
2/read
1d (hex)
current axis
all axes
-
GET_TRGT_POS returns the current desired position value being
generated by the trajectory profile generator. This value represents the
target position for the axis at the current cycle time, i.e. the position
being output by the trajectory profile generator at the time of the
command. This command operates for all profile modes. The value
returned is a 32-bit signed number with units of steps. The range is 1,073,741,824 to 1,073,741,823.
This command is used when the profile mode is set to S-curve
point to point.
GET_JERK
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Get command gear ratio
2/read
59 (hex)
current axis
all axes
-
Get command jerk
2/read
58 (hex)
current axis
all axes
-
GET_TRGT_VEL
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
GET_JERK returns the jerk value set using the SET_JERK command.
It returns the double-buffered value (set directly by the host), which may
or may not correspond to the active value, depending on whether the
profile parameters have been updated. The returned jerk is an
unsigned 32-bit number with 1/232 scaling with units of steps/cycle3.
Return target velocity
2/read
1e (hex)
current axis
all axes
-
GET_TRGT_VEL returns the current desired velocity value being
generated by the trajectory profile generator. This value represents the
target velocity for the axis at the current cycle time, i.e. the velocity
being output by the trajectory profile generator at the time of the
command. This command operates for all profile modes. The value
38
returned is a 32 bit signed number with units of steps/cycle,
represented in 1/216 format. The range is -1,073,741,824 to
After the SET_NEG_BRK command is executed, at each cycle the
break point value will be compared against the current axis target
position. If the target position has a value equal to or less than the
breakpoint register then all double-buffered parameters will be loaded
into the active registers. After this breakpoint condition has been
satisfied, the breakpoint mode is reset i.e. no additional breakpoints will
occur until a new breakpoint condition is set.
+1,073,741,823.
Parameter Update
SET_TIME_BRK
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set break point mode to time based
none
17 (hex)
current axis
all axes
no
SET_ACTL_POS_BRK
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_TIME_BRK sets the current breakpoint mode to time based. In
this mode the value loaded into the breakpoint register (SET_BRK_PNT
cmd) will represent the number of cycles since chip set power on. After
the SET_TIME_BRK command is executed, at each loop the break
point value will be compared against the current chip set time. If the
values are equal all double-buffered parameters will be loaded in to the
active registers. See GET_TIME cmd for information on the chip set
time. After this breakpoint condition has been satisfied, the breakpoint
mode is reset i.e. no additional breakpoints will occur until a new
breakpoint condition is set.
SET_POS_BRK
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_ACTL_POS_BRK sets the current breakpoint mode to positive
actual position based. In this mode the value loaded into the breakpoint
register (SET_BRK_PNT cmd) will represent the axis position in steps.
After the SET_ACTL_POS_BRK command is executed, at each cycle
the break point value will be compared against the current axis actual
position. If the actual position has a value equal to or greater than the
breakpoint register then all double-buffered parameters will be loaded in
to the active registers. After this breakpoint condition has been
satisfied, the breakpoint mode is reset i.e. no additional breakpoints will
occur until a new breakpoint condition is set..
Set break point mode to positive target
position based
none
18 (hex)
current axis
all axes
no
This command is available on the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
SET_ACTL_NEG_BRK
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_POS_BRK sets the current breakpoint mode to positive target
position based. In this mode the value loaded into the breakpoint
register (SET_BRK_PNT cmd) will represent the axis position in steps.
After the SET_POS_BRK command is executed, at each cycle the
break point value will be compared against the current axis target
position. If the target position has a value equal to or greater than the
breakpoint register then all double-buffered parameters will be loaded in
to the active registers. After this breakpoint condition has been
satisfied, the breakpoint mode is reset i.e. no additional breakpoints will
occur until a new breakpoint condition is set.
SET_NEG_BRK
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set break point mode to positive actual
position based
none
1b (hex)
current axis
all axes
no
Set break point mode to negative actual
position based
none
1c (hex)
current axis
all axes
no
SET_ACTL_NEG_BRK sets the current breakpoint mode to negative
actual position based. In this mode the value loaded into the breakpoint
register (SET_BRK_PNT cmd) will represent the axis position in steps
After the SET_ACTL_NEG_BRK command is executed, at each cycle
the break point value will be compared against the current axis actual
position. If the actual position has a value equal to or less than the
breakpoint register then all double-buffered parameters will be loaded
into the active registers. After this breakpoint condition has been
satisfied, the breakpoint mode is reset i.e. no additional breakpoints will
occur until a new breakpoint condition is set.
Set break point mode to negative target
position based
none
19 (hex)
current axis
all axes
no
This command is available on the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
SET_NEG_BRK sets the current breakpoint mode to negative target
position based. In this mode the value loaded into the breakpoint
register (SET_BRK_PNT cmd) will represent the axis position in steps
39
SET_MTN_CMPLT_BRK Set break point mode to motion
complete
Data/direction:
none
Encoding:
35 (hex)
Axis acted on:
current axis
Available on:
all axes
Double buffered:
no
SET_BRK_PNT
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_MTN_CMPLT_BRK sets the current breakpoint mode to motion
complete. In this mode the breakpoint condition is satisfied when the
motion complete bit in the axis status word becomes active (axis motion
is complete). This breakpoint mode is useful for immediately starting a
new profile at the end of the current profile. Once the motion complete
bit becomes active all double-buffered parameters will be loaded in to
the active registers. After this breakpoint condition has been satisfied,
the breakpoint mode is reset i.e. no additional breakpoints will occur
until a new breakpoint condition is set.
SET_BRK_PNT sets the breakpoint comparison value. Its contents are
interpreted based on the type of breakpoint set; time based
(SET_TIME_BRK cmd) or position based (SET_POS_BRK cmd,
SET_NEG_BRK cmd, SET_POS_ACTL_BRK cmd, and
SET_NEG_ACTL_BRK cmd). When set to time-based the loaded value
is compared with the current chip set time at each cycle, and the value
loaded is a 32-bit number with units of cycles. When set to positionbased the loaded value is compared with the current axis target or
actual position at each cycle, and the value loaded is a 32-bit number
with units of steps.
No 32-bit compare value is required to be loaded when using this
breakpoint mode.
It is the responsibility of the host to ensure that the motion
complete bit is not set when this breakpoint is initiated.
SET_EXT_BRK
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
UPDATE
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set break point mode to external
none
5e (hex)
current axis
all axes
no
Immediately update parameters
none
1a (hex)
current axis
all axes
no
UPDATE immediately updates all double buffered parameters.
MULTI_UPDATE
SET_EXT_BRK sets the current breakpoint mode to external. In this
mode the breakpoint condition is satisfied when the home signal for the
current axis becomes active (goes low). This breakpoint mode is useful
for executing a profile change based on some external signal condition.
Once the home signal becomes active all double-buffered parameters
will be loaded in to the active registers. After this breakpoint condition
has been satisfied, the breakpoint mode is reset i.e. no additional
breakpoints will occur until a new breakpoint condition is set.
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Immediately update parameters for
multiple axis
1/write
5b (hex)
set by data word
all axes
no
MULTI_UPDATE immediately updates the double-buffered parameters
for 1 or more axis simultaneously. For each updated axis, the axis
behaves as if a separate UPDATE command had been given for each
axis. The associated data word contains a "positive-sense" bit mask for
each axis. A one (1) in the axis bit position indicates the axis will be
updated. A zero (0) indicates it will not. The following table shows this
bit encoding:
No 32-bit compare value is required to be loaded when using this
breakpoint mode.
SET_BRK_OFF
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set break point comparison value
2/write
16 (hex)
current axis
all axes
no
Set break point mode off
none
6d (hex)
current axis
all axes
no
Bit #
0
1
2
3
4-15
SET_BRK_OFF sets the breakpoint mode to "off". Any breakpoint
mode that has been set previously (SET_TIME_BRK, SET_POS_BRK,
SET_NEG_BRK, SET_ACTL_POS_BRK or SET_ACTL_NEG_BRK)
and is still active (the breakpoint condition has not occurred), is
disabled with this command. After this command has been executed no
additional breakpoints will occur until a new breakpoint condition is set.
40
Axis # updated
1
2
3
4
unused, must be set to 0
SET_AUTO_UPDATE_ON
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set automatic profile update on
none
5c (hex)
current
all axes
no
Interrupt Processing
SET_INTRPT_MASK
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_AUTO_UPDATE_ON sets the automatic profile update
mechanism on. After this command is sent, a satisfied breakpoint
condition will result in all of the double-buffered parameters
automatically being transferred to the active registers. Once set to this
mode, the axis will stay in this mode until explicitly commanded out
using the SET_AUTO_UPDATE_OFF command.
SET_AUTO_UPDATE_OFF
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_INTRPT_MASK sets the interrupt mask so that interrupt events
can be individually masked off. When a non-masked interrupt occurs in
any axis, the interrupt signal to the host is activated (HostIntrpt pin on
I/O chip). The host can choose to ignore or respond to the interrupt.
Once an interrupt has been generated, no new interrupts will be
generated until a RST_INTRPT command is given, after which the
interrupt signal to the host will be cleared, and a new interrupt (on any
axis) can be generated. The associated data word is encoded as a field
of bits, with each bit representing a possible interrupting condition. A 1
value in the mask bit will cause the corresponding event to generate an
interrupt, while a 0 will stop the corresponding event from interrupting
the host. The bit encoding is as follows:
Set automatic profile update off
none
5d (hex)
current
all axes
no
SET_AUTO_UPDATE_OFF sets the automatic profile update
mechanism off. After this command is sent, a satisfied breakpoint
condition will not result in the double-buffered parameters automatically
being transferred to the active registers. Once set to this mode, the axis
will stay in this mode until explicitly commanded out using the
SET_AUTO_UPDATE_ON command.
Bit #
0
1
2
3
4
5
6
7
8-15
When in this mode, the only way that profile parameters can be
updated is through the UPDATE or the MULTI_UPDATE
commands.
GET_BRK_PNT
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set host interrupt mask
1/write
2f (hex)
current axis
all axes
no
Get break point comparison value
2/read
57 (hex)
current axis
all axes
no
GET_INTRPT
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
GET_BRK_PNT returns the breakpoint comparison value set using the
SET_BRK_PNT command. The returned value is a 32-bit number with
units of either cycles or steps (depending on the current breakpoint
mode).
Event
Motion complete
position wrap-around
update breakpoint reached
position capture received
motion error
positive limit switch
negative limit switch
command error
not used, must be set to 0
Return status of the interrupting axis
1/read
30 (hex)
interrupting axis
all axes
-
GET_INTRPT returns the status of the axis that generated a host
interrupt. The current axis number will not be changed after executing
this command. See GET_STATUS for a definition of the returned status
word. If this command is executed when no interrupt condition is
present, the status of the current axis will be returned.
If this command is executed when no interrupt condition is
present, the command will return the status of the current axis
(same as GET_STATUS command).
41
RST_INTRPT
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
commands are not being used. For a detailed description of the status
word event bits, see the GET_STATUS command.
Reset interrupting condition events
1/write
32 (hex)
interrupting axis
all axes
no
This command does not affect the status of the host interrupt line,
only the status event-bits themselves. To reset the host interrupt
line, a RST_INTRPT command must be sent.
RST_INTRPT resets (clears) the interrupt condition bits for the axis that
caused a host interrupt by masking the interrupting axis status word
with the specified data word. In addition, the host interrupt signal
(HostIntrpt pin on I/O chip) is de-activated.The data word is encoded as
a field of bits, with each bit representing a possible interrupting
condition. For each status word event bit a 1 value in the specified word
will cause the status bit to remain unchanged, while a 0 will reset the
corresponding event. The bit encoding is as follows:
Bit #
0
1
2
3
4
5
6
7
8-15
RST_STATUS
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
RST_STATUS resets (clears) the condition event bits for the current
axis, using a data word mask. The data word is encoded as a field of
bits, with each bit representing a possible condition event. For each
status word event bit a 1 value in the specified data word will cause the
status bit to remain unchanged, while a 0 will reset the corresponding
event. The bit encoding is as follows:
Event
Motion complete
position wrap-around
breakpoint reached
position capture received
motion error
positive limit switch
negative limit switch
command error
not used, may be set to 0 or 1
Bit #
0
1
2
3
4
5
6
7
8-15
Event
Motion complete
position wrap-around
breakpoint reached
position capture received
motion error
positive limit switch
negative limit switch
command error
not used, may be set to 0 or 1
GET_STATUS
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Get axis status word
1/read
31 (hex)
current axis
all axes
-
If this command is executed when no interrupt condition is
present, the command will have no effect.
GET_INTRPT_MASK
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Reset specific event bit conditions
1/write
34 (hex)
current axis
all axes
no
Get host interrupt mask
1/read
56 (hex)
current axis
all axes
no
GET_INTRPT_MASK returns the interrupt mask set by the
SET_INTRPT_MASK command. The returned value is a bit-encoded
mask, described in the SET_INTRPT_MASK command.
GET_STATUS returns the status of the current axis.The bit encoding of
the returned word is as follows:
Status/Mode
CLR_STATUS
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Bit #
0
1
2
3
Clear all event bit conditions
none
33 (hex)
current axis
all axes
no
4
5
6
7
8
9
CLR_STATUS resets (clears) all of the event bit conditions for the axis
(bits 0-7 of the status word). The host interrupt line is not affected by
this command. This command is useful for clearing all event bits during
initialization, or during on-line usage if the interrupt line and associated
42
Event
motion complete (1 indicates complete)
position wrap-around (1 indicates wrap)
update breakpoint reached (1 indicates reached)
position capture received (1 indicates capture has
occurred)
motion error (1 indicates motion error)
positive limit switch (1 indicates limit switch trip)
negative limit switch (1 indicates limit switch trip)
command error (1 indicates command error)
motor on/off status (1 indicates on)
axis on/off status (1 indicates on)
10
11
12,13
14,15
command does not act globally, but on the current axis only. This
allows different pulse ranges to be executed on different axes.
In-motion bit (1 indicates axis is in motion)
reserved (may be 0 or 1)
current axis # (13 bit = high bit, 12 bit = low bit)
reserved (may be 0 or 1)
SET_OUTPUT_HIGH
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Bits 0-7 are set by the chipset, and must be reset by the host
(using CLR_STATUS, RST_STATUS, or RST_INTRPT commands).
Bits 8, 9, 10, 12, and 13 are continuously maintained by the chipset
and are not set or reset by the host.
GET_MODE
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_OUTPUT_HIGH sets the pulse generator output mode to high
speed. In this mode the maximum pulse rate output by the chipset is
1.5625 megapulses/sec. This command only affects the current axis.
Get axis mode word
1/read
48 (hex)
current axis
all axes
-
Unlike the output mode control commands for PMD's servo chips
(SET_OUTPUT_PWM cmd, SET_OUTPUT_DAC16 cmd), this
command does not act globally, but on the current axis only. This
allows different pulse ranges to be executed on different axes.
GET_MODE returns the mode word for the axis.The bit encoding of the
returned word is as follows:
Bit #
0-6
7
8
9
10
11,12
13-15
MTR_ON
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Event
Contains no host-useable information.
Stop on motion error mode flag. 1 indicates auto
stop is on.
Internal use only. Contains no host-useable data
Pulse generator mode. 1 indicates high speed
mode, 0 indicates standard mode
Auto update flag. 1 indicates auto update is
disabled.
Trajectory profile mode, encoded as follows:
Bit 12
Bit 11
Profile Mode
0
0
trapezoidal
0
1
velocity contouring
1
0
s-curve
1
1
electronic gear
Phase # (S-curve profile only). 3-bit word encodes
phase #. Bit 15 is MSB, bit 13 is LSB.
Enable pulse generation output
none
43 (hex)
current axis
all axes
no
MTR_ON enables pulse generation. When pulse generation is enabled,
pulse rate and direction information is generated by the trajectory
generator and output on the pulse and direction lines. When it is
disabled no pulse generation can occur.
After a MTR_ON command the pulse generator will be inactive
until a trajectory move is made by the host.
MTR_OFF
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Pulse Generation
SET_OUTPUT_STNDRD
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set pulse generator mode to high speed
none
3b (hex)
current
all axes
no
Disable pulse generation output
none
42 (hex)
current axis
all axes
no
MTR_OFF disables pulse generation. When pulse generation is
disabled, pulse rate and direction output is immediately terminated. To
re-enabled pulse output the MTR_ON command should be used.
Set pulse generator mode to standard
none
3c (hex)
current
all axes
no
SET_OUTPUT_STNDRD sets the pulse generator output mode to
standard. In this mode the maximum pulse rate output by the chipset is
48.8 kilopulses/sec. This command only affects the current axis.
Unlike the output mode control commands for PMD's servo chips
(SET_OUTPUT_PWM cmd, SET_OUTPUT_DAC16 cmd), this
43
GET_CAPT
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Encoder (-E Version Chipsets Only)
GET_ACTL_POS
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Return actual axis position
2/read
37 (hex)
current axis
all axes
-
GET_CAPT returns the current value of the high-speed position capture
register, as well as resets the capture hardware so that subsequent
positions may be captured. The value returned is a 32 bit signed
number with units of encoder counts.
GET_ACTL_POS returns the current encoder position of the current
axis. The value read is up to date to within a cycle time.The value
returned is a 32 bit signed number with units of encoder counts.
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
SET_CAPT_INDEX
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Return high speed capture register
2/read
36 (hex)
current axis
all axes
-
SET_STEP_RATIO
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set position capture trigger source to
the index signal
none
64 (hex)
current axis
all axes
no
Set number of encoder counts per step
none
68 (hex)
current axis
all axes
no
SET_STEP_RATIO sets the ratio of encoder counts to output steps for
the current axis used in conjunction with automatic stall detection. The
specified ratio is a 16-bit unsigned number with a range of 0 to 32,767.
The formula that should be used to set this value is: Ratio =
(Ncounts/Nsteps)*256. Where Ncounts is the number of encoder counts
SET_CAPT_INDEX sets the high-speed position register trigger source
for the current axis to the index signal. When the index is used as the
trigger source, it is gated by the A and B quadrature signals (see Pin
Descriptions Section of this manual for details).
per motor rotation, and Nsteps is the number of output steps per motor
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
rotation (12,800 for a 1.8 degree stepper, 3,200 for a 7.2 degree
stepper). Using this equation the resultant ratio must be an exact
integer.
SET_CAPT_HOME
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set position capture trigger source to
the home signal
none
65 (hex)
current axis
all axes
no
GET_STEP_RATIO
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_CAPT_HOME sets the high-speed position register trigger source
to the home signal.
Get number of encoder counts per step
none
6f (hex)
current axis
all axes
-
GET_STEP_RATIO returns the ratio of encoder counts to output steps
set using the SET_STEP_RATIO command. The returned value is a
16-bit unsigned number.
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
44
SET_AUTO_STOP_ON
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Enable automatic motor shutdown
none
45 (hex)
current axis
all axes
no
GET_POS_ERR
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_AUTO_STOP_ON enables automatic profile generation shutdown
upon motion error. In this mode profile generation will be disabled
(equivalent to MTR_OFF cmd) when a motion error occurs (see
SET_POS_ERR cmd for more info.). The profile generator can be reenabled using the MTR_ON cmd.
Get maximum position error
1/read
55 (hex)
current axis
all axes
-
GET_POS_ERR returns the maximum position error value set using the
SET_POS_ERR command. The returned maximum position error value
is an un signed 16-bit number with units of encoder counts.
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
SET_AUTO_STOP_OFF
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
GET_ACTL_POS_ERR
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Disables automatic motor shutdown
none
44 (hex)
current axis
all axes
no
Return current position error
1/read
60 (hex)
current axis
all axes
-
GET_ACTL_POS_ERR returns the current instantaneous position error
of the axis. The returned value represents the difference between the
actual position and the target position after the target motion, which has
units of steps has been converted into encoder counts using the step
ratio parameters (set using SET_STEP_RATIO command). The
returned value is a signed 16-bit number with units of encoder counts.
The range is -32,768 to +32,767.
SET_AUTO_STOP_OFF disables automatic profile generator
shutdown upon motion error. In this mode the profile generator will not
be disabled when a motion error occurs.
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
SET_POS_ERR
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set position error limit
1/write
29 (hex)
current axis
all axes
no
Miscellaneous
SET_ACTL_POS
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_POS_ERR sets the position error limit for the automatic stall
detection facility. The error is specified as an unsigned 16-bit number
with units of encoder counts The range is 0 to 32,767. At each chipset
cycle the magnitude of the position error calculated by the stall detector
is compared with the specified position error limit. If the actual position
error exceeds the specified value, the motion error status bit is set. In
addition, if the axis has been set for automatic motor stop upon motion
error, the axis profile generation will be disabled. The loaded maximum
position error is utilized immediately. No update is required for this
command to take effect.
Set actual axis position
2/write
4d (hex)
current axis
all axes
no
SET_ACTL_POS sets the current actual position (in encoder counts) as
well as the current target position (in steps) to the specified value. The
desired position is specified as a signed 32 bit number with an allowed
range of -1,073,741,824 to 1,073,741,823.
If the -E chipset is used this command causes the actual position
error to be set to 0.
This command is available for the MC1451A-E, MC1251A-E, and
MC1151A-E parts only.
This command causes the actual position error to be set to 0.
The loaded position is utilized immediately. No UPDATE is
required for the command to take effect.
45
SET_LMT_SENSE
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
The values returned by this command are not affected by the
SET_LMT_SENSE command.
Set limit switch bit sense
1/write
66 (hex)
global (all axes)
all axes
-
LMTS_ON
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
SET_LMT_SENSE sets the interpretation of the limit switch input bits.
This command provides added flexibility in interfacing to various
switch/sensor components. The signal level interpretation for the
positive and negative switch inputs are bit-programmable. A 0 in the
corresponding bit of the sense word indicates that the input will be
active high. A 1 in the sense word indicates that the input will be active
low. The sense word is encoded as follows:
Bit #
0
1
2
3
4
5
6
7
8-15
LMTS_ON turns the limit switch sensing mechanism on. LMTS_ON reenables limit switch sensing whenever it has been disabled using the
LMTS_OFF command.
Description
Axis 1 positive limit switch (0 = active high)
Axis 1 negative limit switch (0 = active high)
Axis 2 positive limit switch (0 = active high)
Axis 2 negative limit switch (0 = active high)
Axis 3 positive limit switch (0 = active high)
Axis 3 negative limit switch (0 = active high)
Axis 4 positive limit switch (0 = active high)
Axis 4 negative limit switch (0 = active high)
not used (must set to 0)
LMTS_OFF
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
This command only disables the automatic setting of the negative
and positive limit switch bits in the status word. It does not affect
the status of these bits if they have already been set, nor does it
affect the GET_LMT_SWTCH command.
Get state of over-travel limit switches
1/read
67 (hex)
global (all axes)
all axes
-
GET_HOME
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
GET_LMT_SWTCH returns the value of the limit switch input signals
for all valid axis. The returned word is encoded as follows:
Bit #
0
1
2
3
4
5
6
7
8-15
Set limit switch sensing off
none
71 (hex)
global (all axes)
all axes
-
LMTS_OFF turns the limit switch sensing mechanism off. LMTS_OFF
is used whenever it is desired that limit switch sensing not be active.
The above bits are encoded as shown for the MC1451A. For the
MC251A axis 3 and 4 are not used. For the MC1151A axes 2, 3, and 4
are not used.
GET_LMT_SWTCH
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
Set limit switch sensing on
none
70 (hex)
global (all axes)
all axes
-
Get state of home signal inputs
1/read
05 (hex)
global (all axes)
all axes
-
GET_HOME returns the value of the home signal inputs for all valid
axes. The returned word is encoded as follows:
Description
Axis 1 positive limit switch (1 = high)
Axis 1 negative limit switch (1 = high)
Axis 2 positive limit switch (1 = high)
Axis 2 negative limit switch (1 = high)
Axis 3 positive limit switch (1 = high)
Axis 3 negative limit switch (1 = high)
Axis 4 positive limit switch (1 = high)
Axis 4 negative limit switch (1 = high)
not used (set to 0)
Bit #
0
1
2
3
4-15
Description
Axis 1 home signal (1 = high)
Axis 2 home signal (1 = high)
Axis 3 home signal (1 = high)
Axis 4 home signal (1 = high)
not used (set to 0)
The above bits are encoded as shown for the MC1451A. For the
MC251A axis 3 and 4 are not used. For the MC1151A axes 2, 3, and 4
are not used.
The above bits are encoded as shown for the MC1451A. For the
MC251A axis 3 and 4 are not used. For the MC1151A axes 2, 3, and 4
are not used.
46
RESET
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
(version 1.0 software) is 4928, and the returned version code for the
MC1451A (version 2.1 software) is 5c11.
Reset chip set
none
39 (hex)
global (all axes)
all axes
No
GET_TIME
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
RESET resets the entire chip set. This command performs the same
sequence as a hardware reset. At the end of this operation the chip set
will be in the default or powerup condition, defined as follows:
Condition
all actual axis positions
all capture registers
all event conditions
host interrupt (HostIntrpt) signal
all interrupt masks
all profile modes
all profile parameter values
all brkpnt comparison values
auto update
capture input mode
limit switch sensing
Limit switch sense
all pulse generator modes
all pulse rates
current axis number
all current actual positions
All step ratios
all actual position errors
all motor status'
GET_VRSN
Data/direction:
Encoding:
Axis acted on:
Available on:
Double buffered:
GET_TIME returns the current system time, expressed as the number
of cycles since chip set power on.The chip set clock starts at 0 after a
power on or reset and will count indefinitely, wrapping from a value of
4,294,967,296 to 0. The returned value is a 32 bit number with units of
cycles.
Initial Value
0
0
cleared
not active
0
trapezoidal
0
0
enabled (on)
index
enabled (on)
0 (all active high)
standard
0
1
0
0
0
on
Return chipset software information
1read
6c (hex)
global (all axes)
all axes
-
GET_VRSN returns various information on the chipset part number and
software version. The encoding is as follows:
Bit #
0-2
3-4
5-7
8-10
11-13
14-15
Return current chip set time.
2/read
3e (hex)
global (all axes)
all axes
-
Interpretation
Minor software version
Major software version. Major software versions 2
and above indicate 'A' versions parts
"Dash" version # (no dash = 0, -P = 1
Part number code 0 = 00 (MC1400-series), 1 = 01
(MC1401-series), 2 = 31 (MC1231-series) , 3 = 41
(MC1451-series), 4 = 51 (MC1451-series)
# Axes supported (0 = 1)
Generation # (1)
For example, the returned version code for the MC1401 (version 1.0
software) is 5908 (hex), the returned version code for the MC1201-P
47
Application Notes
Interfacing MC1451 to ISA bus.
A complete, ready-to-use ISA (PC/AT) bus interface circuit has been
provided to illustrate MC1451A host interfacing.
The interface between the PMD MC1451A chip set and the ISA (PCAT) Bus is shown on the following page.
Comments on Schematic
This interface uses a 22V10 PAL and a 74LS245 to buffer the data
lines.This interface assumes a base address is assigned in the address
space of A9-A0. 300-400 hex These addresses are generally available
for prototyping and other system-specific uses without interfering with
system assignments. This interface occupies 16 addresses from XX0 to
XXF hex though it does not use all the addresses. Two select lines are
provided allowing the base address to be set to 340,350,370 and 390
hex for the select lines S1,S0 equal to 0,1,2,and 3 respectively.The
address assignments used are as follows, where BADR is the base
address, 340 hex for example:
Address
340h
342h
344h
348h
use
read-write data
write command
read status (HostRdy) [D7 only]
write reset [Data= don't care]
The base address (BADR) is decoded in ADRDEC. It is nanded with
SA2:SA3, BADR+0, (B+0) to form -HSEL to select the I/O chip. B+0
nanded with IOR* forms -HRD, host read, directly. The 22V10 tail-bites
the write pulse since the setup time is greater than necessary on the
bus some of the bus duration is used to generate data hold time at the
I/O chip. -HWR, host write is set the first clock after B+0 and IOW* is
recognized. The next clock sets TOG and clears -HWR. TOG remains
set holding -HWR clear until IOW* is unasserted on the bus indicating
the end of the bus cycle. B+4 and IOR* out enables HRDY to SD7 so
the status of HRDY may be tested. SD7 is used since the sign bit of a
byte may be easily tested. The rest of the data bits are left floating and
should be ignored. B+8 and IOW* generate a reset pulse which will init
the interface by clearing the two write registers and outputs a reset
pulse, -RS, for the CP chip. The reset instruction is OR'd with RESET
on the bus to initialize the PMD chip set when the PC is reset.
48
49
NOTES
50
Internal Block Diagram
Motor Output Signals
Home
Input
Step
1/a
Miscellaneous Signals
1/a
Encoder Inputs
B
Direction
1/a
A
1/a
1/a
1/a
CP Chip
Pulse &
Direction
Trajectory
profile generator
Quadrature
decoder
counter (1-4)
I/O Chip
System Registers (1-4)
ENC
Chip
Host I/O controller
5
8
Control
1/a
1
Data
host interrupt
PosLimit
Host I/O
1/a
NegLimit
Overtravel Inputs
Technical Specifications
Available Configurations:
Operating Modes:
Position Range:
Velocity Range:
Acceleration Range:
Jerk Range:
Cycle Rate:
Maximum Pulse Rate:
Pulse Output Modes:
Trajectory Profile Generator Modes:
Electronic Gear Ratio Range:
Max. Incremental Encoder Rate:
# of Limit Switches Per Axis:
Miscellaneous Control Signals
# of Host Commands:
4 axes with pulse & direction output (MC1451A)
2 axes with pulse & direction output (MC1251A)
1 axis with pulse & direction output (MC1151A)
4 axes with pulse & direction and encoder input (MC1451A-E)
2 axes with pulse & direction output and encoder input (MC1251A-E)
1 axis with pulse & direction output and encoder input (MC1151A-E)
Open loop (uses trajectory generator, pulse generator)
Stall detection (uses trajectory generator, pulse generator and encoder feedback for stall detection)
-1,073,741,824 to 1,073,741,823 steps
-16,384 to 16,383 steps/cycle with a resolution of 1/65,536 steps/cycle
S-curve profile: -1/2 to 1/2 steps/cycle^2 with a resolution of 1/65,536 steps/cycle^2
All other profiles: -16,384 to 16,383 steps/cycle^2 with a resolution of 1/65,536 steps/cycle^2
-1/2 to 1/2 steps/cycle^3, with a resolution of 1/4,294,967,296 steps/cycle^3
330uSec/cycle (rate of profile calculations)
1.5625 MPulses/sec
High speed (up to 1.5625 MPulses/sec)
Standard speed (up to 48.828 Kpulses/sec)
S-curve (host commands final position, maximum velocity, maximum acceleration, and jerk)
Trapezoidal (host commands final position, maximum velocity, and acceleration)
Velocity contouring (host commands maximum velocity, acceleration)
Electronic Gear (Encoder position used as position command for stepper axis, -E version chipsets only).
32,768:1 to 1:32,768 (negative and positive direction, -E version chipsets only)
1.25 MCounts/sec (-E version chipsets only)
2 (one for each direction of travel)
home signal (one per axis, can be programmed to automatically change profiles on the fly)
At rest signal (one per axis)
Home signal (one per axis)
72
Ordering
Information
Chipset
p/n: MC1
4 - 4 axis
2 - 2 axis
51AE - encoder option
no dash - no encoder
Custom chipset versions
also available. Call PMD
Chipset Developer's Kit
p/n: DK1451A*
*(Supports MC1451A, MC1251A,
MC1151A, MC1451A-E, MC1251A-E,
MC1151A-E
Performance Motion Devices, Inc. 12 Waltham St. Lexington, MA 02421 tel: 781.674.9860 fax: 781.674.9861 www.pmdcorp.com