U.S. patent application number 12/557578 was filed with the patent office on 2010-02-11 for electronic motor controller.
Invention is credited to Christopher Cullen.
Application Number | 20100036510 12/557578 |
Document ID | / |
Family ID | 32711620 |
Filed Date | 2010-02-11 |
United States Patent
Application |
20100036510 |
Kind Code |
A1 |
Cullen; Christopher |
February 11, 2010 |
ELECTRONIC MOTOR CONTROLLER
Abstract
A control system for any type of electric motor that
automatically learns the characteristics of the motor and computes
a motor model for the motor. The control system uses the computed
motor model to produce a closed-loop control design that achieves a
particular resolution. The control system also uses the motor model
to automatically construct efficient motion profiles for a variety
of motion commands. The control system may also include an encoder
interface device that provides highly accurate motor position
information.
Inventors: |
Cullen; Christopher;
(Ipswich, MA) |
Correspondence
Address: |
OCCHIUTI ROHLICEK & TSAO, LLP
10 FAWCETT STREET
CAMBRIDGE
MA
02138
US
|
Family ID: |
32711620 |
Appl. No.: |
12/557578 |
Filed: |
September 11, 2009 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12203577 |
Sep 3, 2008 |
7606624 |
|
|
12557578 |
|
|
|
|
10341953 |
Jan 14, 2003 |
7437201 |
|
|
12203577 |
|
|
|
|
Current U.S.
Class: |
700/37 ;
700/29 |
Current CPC
Class: |
G05B 17/02 20130101;
H02P 23/14 20130101; H02P 6/16 20130101; H02P 2209/07 20130101 |
Class at
Publication: |
700/37 ;
700/29 |
International
Class: |
G05B 13/02 20060101
G05B013/02 |
Claims
1. A method for determining a plurality of gains associated with a
plurality of variables of a closed-loop controller, the method
comprising the computer-implemented steps of: assigning a gain
associated with one of the controller variables to a desired
resolution value; calculating a frequency value for the gain set to
the desired resolution value; computing the remaining gains of the
controller; and; supplying the computed gains to the closed-loop
controller.
2. The method of claim 1, wherein the closed-loop controller
comprises a proportional-integral-derivative controller and the
assigned gain comprises a proportional gain.
3. The method of claim 2, further comprising: assigning a plurality
of proportional gains of the closed-loop controller to the desired
resolution value; calculating a frequency value for each
proportional gain set to the desired resolution value; selecting
the smallest frequency value calculated; and using the selected
frequency value, computing the remaining gains of the
controller.
4. The method of claim 2, wherein the closed-loop controller has a
predetermined servo sampling rate and computing the remaining gains
of the controller comprises: computing an integral gain;
determining a second resolution value of the controller using the
computed integral gain and current servo sampling rate; and if the
second resolution value is greater than the desired resolution
value, then adjusting the servo sampling rate to reduce the second
resolution value to at or below the desired resolution value.
5. The method of claim 2, wherein computing the remaining gains for
the controller comprises: determining the number of position error
readings required as input in a boxcar derivative function in order
to achieve a desired resolution.
6. The method of claim 1, wherein the closed-loop controller is a
state space controller.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a divisional of U.S. application Ser.
No. 12/203,577, filed Sept. 3, 2008, which is a divisional of U.S.
application Ser. No. 10/341,953, filed Jan. 14, 2003, the contents
of both are incorporated herein by reference in its entirety.
BACKGROUND
[0002] Closed-loop motor controllers often require a user to enter
numerous parameters in order to specify, for example, closed-loop
feedback control gains, motion profile constraints and shaping
parameters. This process may be time consuming and require
expertise in the motor control field in order to achieve desirable
motor control. Accordingly, a controller that self-determines a
motor model for the particular motor, automatically computes
closed-loop gains, and automatically generates efficient motion
profiles in response to a motion command may be desirable.
[0003] Estimating parameters of a system model is a known academic
field. Typically, however, it is applied at the research and
development stage, to develop a better control system for a fixed
product; for example, the software package System Identification
Toolbox.TM. from The Mathworks in Natick, Mass., is a tool for
expert engineers to process signals obtained from a machine (e.g.
motor) and estimate the motor model.
[0004] Many motor control vendors provide software packages to
assist the user in setting up and configuring the motor. Some
examples are CME2.TM. from Copley Controls in Canton, Mass.,
Motioneering.TM. from Kollmorgen in Radford, Va., WSDK Servo Design
Kit.TM. from Galil Motion Control in Rocklin, Calif., and PEWIN.TM.
from Delta Tau Systems in Chatsworth, Calif. These products all
require knowledge of motor parameters, and require the engineer to
engage in iterative experiments to determine system parameters. In
contrast, the operation of a controller designed in accordance with
the teachings set forth below is invisible to the user(s), requires
little expertise, and no parameters need to be supplied. Also, a
controller designed in accordance with the teachings set forth
below generates motion profile parameters for efficient motion
control.
SUMMARY
[0005] In one aspect, the invention features a method for adapting
a controller for a motor in which a control signal is applied that
causes the motor to change position over time. The control signal
and resulting position information is recorded over a period of
time. Derivatives of position are estimated based on the recorded
position information, and a motor model is computed in which
derivatives of position are fit into a motor model equation that
relates the control signal to the motion of the motor. The computer
motor model is then supplied to the controller.
[0006] Embodiments may include one or more of the following
features. The control signal applied to the motor may include
applying a modulation signal to a modulator and modulating the
output of a power source in response to the modulation signal to
produce a motor control signal. The step of recording the control
signal over a period of time may include recording the modulation
signal applied to the modulator. The modulator may be configured as
a current controller or a voltage controller.
[0007] The method may further include recording current feedback
generated by the modulator in response to the motor control signal
applied to the motor and fitting the derivatives of position into
an equation that relates the current feedback to the motion of the
motor. The step of applying a control signal may include
transforming a modulation signal into two or more motor phase
modulation signals.
[0008] The step of recording position of the motor over a period of
time may include sensing a discrete change in motor position and
storing a motor position value and an indication of the time
corresponding to when the change in position occurred. The step of
recording position of the motor over a period of time may include
recording, at regular intervals, a motor position value and the
time corresponding to when the last change in position
occurred.
[0009] Estimating a plurality of derivatives of position may
include selecting a set of recorded position and corresponding time
data values and then fitting the selected set of recorded position
and time data values into a polynomial that represents position as
a function of time. Prior to fitting the recorded position and time
data values, the method may include conditioning the time values
such that the plurality of selected time values have a mean of
approximately zero and a variance substantially equal to one.
Fitting the derivatives of position into an equation which relates
the control signal to the motion of the motor may include computing
a least squares fit of the plurality of derivatives of position and
corresponding control signal values into an equation that relates
the control signal to motion of the motor. Prior to fitting the
derivatives of position into an equation, the method may include
conditioning the set of values for each derivative of position such
that each set of values has a mean of approximately zero and a
variance substantially equal to one.
[0010] The step of estimating a plurality of derivatives of
position may include recording a plurality of motor positions and a
corresponding time associated with each position and estimating a
velocity based on at least two recorded motor positions and the
associated times and/or estimating acceleration based on at least
three recorded motor positions and the associated times.
[0011] The step of estimating a plurality of derivatives of
position may include recording a plurality of motor positions and a
corresponding time associated with each position, fitting a
describing function to the plurality of motor positions and
corresponding times, and deriving a plurality of derivatives of
position from the describing function.
[0012] The method may further include computing a closed-loop
control based on the computed motor model. The step of computing a
closed-loop control may include determining a desired resolution
value for the correction signal for each controlled variable,
assigning a gain of the controller to the desired resolution value,
calculating a frequency value for the gain set to the desired
resolution value, and computing the remaining gains of the
controller.
[0013] The step of computing a closed-loop control based on the
computed motor model may include assigning a plurality of
proportional gains of the closed-loop control to a desired
resolution value, calculating a frequency value for each
proportional gain set to the desired resolution value, selecting
the smallest frequency value calculated, and using the selected
frequency value, computing the remaining gains of the controller.
The step of computing a closed-loop control may include setting a
gain associated with a state variable of the closed-loop control to
achieve a desired resolution for that state variable.
[0014] The method may further include determining a maximum
feedforward signal. The step of determining a maximum feedforward
signal may include selecting an initial value for the maximum
feedforward signal, performing a motion function using the selected
value, recording the motor control signal used to perform the
motion function, comparing the peak value of the modulation signal
used to perform the motion function with a predetermined range, and
if the peak value of modulation signal used to perform the motion
function falls outside the predetermined range, then selecting a
different value for the maximum feedforward signal and repeating
the steps of performing the motion function, recording the
modulation signal and comparing the modulation signal.
[0015] In another aspect, the invention features a method for
controlling a motor with a controller that includes receiving a
command to perform a motor function from a user, accessing a
predetermined motor model and maximum feedforward signal,
determining a set of motion profile parameters based on a
predetermined motor model and a predetermined maximum feedforward
signal, and supplying the motion profile parameters to a controller
to generate the motor control signal specified by the motion
profile parameters.
[0016] Embodiments may include one or more of the following
features. The method may also include computing a set of motion
profile parameters, modifying the set of motion profile parameters
in a predetermined format, and supplying the modified set of motion
profile parameters to a controller.
[0017] The motor control signal generated from the set of motion
profile parameters may include a series of values corresponding to
motor positions, velocity, and acceleration at discrete times.
[0018] The method may further include selecting an acceleration
pulse form, such as a quadratic, harmonic, trapezoidal, piecewise
linear, or cycloidal acceleration pulse, or selecting a motion plan
algorithm, such as a pulse-cruise-pulse algorithm, a balanced
pulse-cruise-pulse algorithm, or a balanced pulse-pulse
algorithm.
[0019] The motion profile parameters may include a sequence of
acceleration pulses, each pulse specified in terms of duration and
peak acceleration, or a set of peak jerk, peak velocity, and peak
acceleration values.
[0020] The step of determining a set of motion profile parameters
based on a predetermined motor model and maximum feedforward signal
may include selecting an initial set of motion profile parameters,
computing a peak feedforward signal using the initial set of motion
profile parameters, comparing the computed peak feedforward signal
to the predetermined maximum feedforward signal, and if the
computed peak feedforward signal is not within a predetermined
amount of the predetermined maximum feedforward signal, then
iteratively selecting other sets of motion profile parameters until
a set of motion profile parameters produces a computed peak
feedforward signal that is within a predetermined amount of the
predetermined maximum feedforward signal.
[0021] In another aspect, the invention features a method for
determining a plurality of gains associated with a plurality of
variables of a closed-loop controller that includes the steps of
assigning a gain associated with one of the controller variables to
a desired resolution value, calculating a frequency value for the
gain set to the desired resolution value, computing the remaining
gains of the controller, and supplying the gains to the closed-loop
controller.
[0022] Embodiments may include one or more of the following
features. The closed-loop controller may be a
proportional-integral-derivative controller and the assigned gain
comprises a proportional gain. The method may further include
assigning a plurality of proportional gains of the closed-loop
controller to the desired resolution value, calculating a frequency
value for each proportional gain set to the desired resolution
value, selecting the smallest frequency value calculated, and using
the selected frequency value, computing the remaining gains of the
controller.
[0023] The step of computing the remaining gains of the controller
may include computing an integral gain, determining a second
resolution value of the controller using the computed integral gain
and current servo sampling rate, and if the second resolution value
is greater than the desired resolution value, then adjusting the
servo sampling rate to reduce the second resolution value to at or
below the desired resolution value. The step of computing the
remaining gains for the controller may also include determining the
number of position error readings required as input in a boxcar
derivative function in order to achieve a desired resolution.
[0024] In another aspect, the invention features a method for
designing a closed-loop controller having a state variable and a
gain associated with the state variable that includes the steps of
selecting a desired resolution value for the state variable and
computing a gain associated with the state variable that achieves
the desired resolution.
[0025] Embodiments may include one or more of the following
features. The closed-loop controller may have several state
variables and a gain associated with each state variable, and the
method may also include selecting a desired resolution value for
each state variable and computing a gain associated with each state
variable that achieves the desired resolution for that state
variable. The step of computing a gain associated with each state
variable that achieves the desired resolution may include
calculating a frequency value for two or more gains set to the
desired resolution value, selecting the smallest frequency value
calculated, and computing the remaining gains of the controller
using the selected frequency value.
[0026] In another aspect, the invention features a method for
calculating a derivative estimate in a closed-loop controller which
produces a derivative term at each servo processing interval, which
includes the steps of recording three or more position error
readings at different servo processing intervals, computing a
derivative estimate by summing two or more of the position error
readings and subtracting an equal number of different position
error readings than were used in the summing step, and computing
the derivative term based on the derivative estimate.
[0027] Embodiments may include one or more of the following
features. The position error readings may be recorded at successive
servo processing intervals.
[0028] In another aspect, the invention features a method for
determining acceleration of a motor based on position information
received from a position measuring device that includes receiving
position information from the position measuring device, recording
an indication of motor position when a change in the position
information is sensed, recording an indication of the time at which
the change in the position information occurred, and calculating
acceleration based on at least three position recordings and
corresponding time recordings.
[0029] Embodiments may include one or more of the following
features. The step of recording an indication of motion position
when a change in the position information is sensed may include
changing the value of a counter based on the change in the position
information. The counter may be incremented when the position
information indicates a change in position in a first direction and
decremented when the position information indicates a change in
position in a second direction. The step of calculating
acceleration based on at least three position recordings and
corresponding time recordings may include fitting the position/time
recordings into at least a second-order polynomial that relates
motor position to time and computing the second derivative of the
polynomial.
[0030] In another aspect, the invention features a method for
determining jerk of a motor based on position information received
from a position measuring device, recording an indication of motor
position when a change in the position information is sensed, and
recording an indication of the time at which the change in the
position information occurred, and calculating jerk based on at
least four position recordings and corresponding time
recordings.
[0031] Embodiments may include one or more of the following
features. The step of calculating jerk based on at least four
position recordings and corresponding time recordings may include
fitting the position/time recordings into at least a third-order
polynomial that relates motor position to time and computing the
third derivative of the polynomial.
[0032] In another aspect, the invention features a controller for
an electric motor that includes a motor model computation module
configured to compute a motor model equation that relates the motor
control signal to the motion of the motor and a trajectory planning
module configured to receive a motion function command and, in
response to receiving a motion function command, compute a set of
motion profile parameters based on the motor model equation and a
predetermined fraction of the maximum motor control signal, such
that the motion profile parameters describe a motion having a
planned peak output approximately equal to a predetermined fraction
of the maximum motor control signal.
[0033] Embodiments may include one or more of the following
features. The controller may further include a trajectory generator
module configured to receive the motion profile parameters and
generate a signal to cause the motor to execute the motion function
specified in the motion function command.
[0034] The controller may include a closed-loop control device
configured to calculate position errors and adjust the motor
control signal to compensate for calculated errors.
[0035] The controller may include a position-measuring interface
device configured to receive the position feedback information and
record a change in position and the time at which the change of
position occurred.
[0036] Embodiments may have one or more of the following
advantages.
[0037] One advantage of a control system designed in accordance
with the present invention is simplification of the commissioning
process for a controller. Traditionally, commissioning a controller
requires an expert engineer to perform an iterative, manual,
experimental process that requires additional equipment,
instruments, and a priori motor and load parameter knowledge. A
control system designed in accordance with the teaching of this
invention automatically commissions the control system with minimal
user input and thus eliminates many of the time-consuming and
expensive procedures associated with traditional controller
commissioning.
[0038] Another advantage of a control system designed in accordance
with the present invention is that a control system may effectively
control an unknown motor of essentially infinite variation and of
several different types (e.g., DC brush, DC brushless, AC
brushless, induction) with little or no user knowledge or
expertise.
[0039] Another advantage of a control system designed in accordance
with the present invention is the simplification of the motion
planning task. Typically the design of motion profiles requires
motor parameter knowledge and an expert engineer. Moreover, optimal
parameters are often difficult or impossible to obtain, and so a
conservative and compromise approach results in calculating a
single set of non-optimal motion parameters. The present invention
discloses a motion profile planning process that automatically
computes efficient motion profiles with minimal user input. Thus,
efficient motion profiles (in term of time, power consumption, or
both) may be obtained quickly and easily for every motion command
without expert engineering assistance.
[0040] Another advantage is that the closed-loop control design of
a control system may be automatically computed. This eliminates the
need for an expert engineer to design a closed-loop controller for
a particular motor.
[0041] Another advantage of a control system designed in accordance
with the present invention is improved controller performance over
a manually-configured controller. For example, a control system may
use a self-determined motor model to provide accurate feedforward
during motion profiles, which reduces tracking error and settling
time from a manually-configured system.
[0042] Another advantage of a control system designed in accordance
with the present invention is that the parameters specified in the
motor model do not correspond to physical parameters (e.g., torque
or inertia) that are difficult to determine, but are specified by
quantities proportional to a given derivative of motor position,
e.g., velocity, acceleration, jerk, sign-of-velocity, and
constant-offset coefficients.
[0043] The details of one or more embodiments of the invention are
set forth in the accompanying drawings and the description below.
Other features, objects, and advantages of the invention will be
apparent from the description and drawings, and from the
claims.
DESCRIPTION OF DRAWINGS
[0044] FIG. 1 is a block diagram of the logical components of a
motor control system.
[0045] FIG. 2 is a flow chart illustrating the operation of the
motor control system shown in FIG. 1.
[0046] FIG. 3 is a flow chart illustrating the self-commissioning
process of the motor control system shown in FIG. 1.
[0047] FIG. 4 is a flow chart illustrating the motion planning
process shown in FIG. 1.
[0048] FIG. 5 is a series of graphs depicting acceleration,
velocity, jerk and position of a motion function command.
[0049] FIG. 6 is a graph illustrating several different types of
acceleration pulses that may be used to execute a motion function
command.
[0050] FIG. 7 is a table containing two sets of equations that
describe a quadratic and harmonic acceleration pulse.
[0051] FIG. 8 is a series of graphs illustrating three different
motion planning algorithms.
[0052] FIG. 9 are two graphs plotting controller output against
time for two separate motors for the same motion function
command.
[0053] FIG. 10 is a block diagram illustrating another motion
control system.
[0054] FIG. 11 is a block diagram further illustrating the encoder
interface device of the motion control system depicted in FIG.
10.
[0055] FIG. 12 is a diagram illustrating computation of derivatives
of position and motion states from a series of modulation signal,
position, and time stamp recordings.
[0056] FIG. 13 are two graphs illustrating jerk estimates using 1.5
millisecond and 8.0 millisecond sample spans.
[0057] Like reference symbols in the various drawings indicate like
elements.
DETAILED DESCRIPTION
[0058] As shown in FIG. 1, a motor control system 100 includes
motion controller 101 and modulator 104. Control system 100 is
electrically coupled to a power supply 105, and modulator 104 is
electrically coupled to a motor 103. Controller 101 controls the
operation of the motor 103 by modulating the power source 105 into
the motor windings. Modulator 104 may be configured as a voltage
controller, in which case its modulation signal 120 is used to
command a desired voltage, or as a current controller, in which
case its modulation signal 120 is used to command a desired
current. The commutator 123 transforms the modulation signal 120 to
a set of motor phase modulation signals 125, using the measured
motor position 122, or input from additional sensors such as Hall
effect sensors (not shown) provided by the motor. The commutator
123 also transforms a set of measured motor phase currents 124 into
an effective motor current feedback signal 121.
[0059] Motor 103 may be any type of electrical motor, including a
DC brush, DC brushless, AC brushless, or induction motor. Motor 103
includes a position feedback generator 107 (e.g., an optical
encoder) which produces signals indicating the current position of
the motor. Feedback generated by position feedback generator 107 is
fed into controller 101 via signal path 108. Controller 101 also
receives motor function commands initiated by a user via signal
path 109.
[0060] Controller 101 includes trajectory planner module 110,
trajectory generator module 113, and closed-loop control 111. As
will be explained in more detail below, the motor model 114
comprises motor model equations that mathematically describe the
operation of the particular motor 103 connected to the control
system 100. The motor model 114 is used by the trajectory planner
110 to compute a set of motion profile parameters 116 and the
trajectory generator 113 to compute the feedforward signal 119 and
to compute controller setpoints 117 supplied to the closed-loop
control 111.
[0061] Trajectory planner 110 uses motor model 114 to compute a set
of motion profile parameters 116 to perform a requested motion
command 109. The trajectory generator 113 uses the motion profile
parameters 116 and motor model 114 to produce a time-series
sequence of feedforward signals 119 and controller setpoints 117.
Closed-loop control 111 combines setpoints 117, position feedback
122, and current feedback 121 to produce correction signal 118. The
correction signal 118 and feedforward signal 119 are combined to
produce modulation signal 120. Modulation signal 120 specifies the
fraction of power source 105 to be applied to the motor windings;
the fraction is within the range of -1 to +1 (i.e. -100% to +100%),
since the modulator 104 cannot produce more power than is
available. At designated times, the model fitter 115 uses recorded
sequences of position 122, current 121, and modulation signal 120
to recompute the motor model 114.
[0062] As shown in FIG. 2, operation of motor control system 100
(shown in FIG. 1) is illustrated. In block 200, a user initially
connects the motor control system 100 to the motor and power supply
(i.e., connections 112, 106, 108 shown in FIG. 1). Control system
100 is configured such that a user may connect the controller-motor
connections (e.g., connections 106, 108) in any particular manner.
For example, the connection between the modulator 104 and motor 103
(i.e., connection 106) normally has either two or three leads.
These leads may be connected in any order to the modulator 104.
Similarly, the connection between the controller 101 and position
feedback unit (i.e., connection 108) may contain the four signal
wires A+, A-, B+, and B- for two optical encoder channels. The
encoder channels A and B can be connected as B and A (e.g. A+ to
B+, A- to B-, and B+ to A+, B- to A-), and either channel's
differential wires (if used) can be connected backwards (for
example A+ to A- and A- to A+, instead of A+ to A+ and A- to A-).
Once the user makes the connections between the motor and control
system, the control system will automatically determine the control
action required to use the wiring connections made by the user. In
other embodiments, additional leads may be connected to the control
system. For example, motor 103 may provide Hall-effect phase
sensors A, B, and C, that are connected to controller 101. Like the
other connections between the motor and the control system, the
control system is configured to receive the leads of Hall-effect
phase sensors in any order.
[0063] Once the user has made the connections between the control
system, motor and power supply, the controller 101 then performs a
self-commissioning process (block 201). As will be explained in
greater detail below, the self-commissioning process identifies the
motor type, estimates a motor control model, and computes the
closed-loop control design from the estimated model. The
self-commissioning process is generally invisible to the user and
requires little user input or expertise.
[0064] After the control system has completed the
self-commissioning process, the control system is ready to accept
motion function commands from the user. The motor function
specified in a motor function command may differ depending on the
motor and the application. For example, a motor function may be a
command to move from point-to-point, a command to move at a
specified velocity, or a command to move from point-to-point at a
specified velocity. When the control system receives a motion
function command, the control system plans a motion profile (block
202). As will be explained in more detail below, the motion profile
planned by the control system may differ depending on the
application and input from the user.
[0065] After planning the motion profile, the control system
performs the requested motor function according to the planned
profile (block 203). After each motor function performed by the
control system, the control system uses feedback received from the
motor to update the motor model and closed-loop control design
(block 204). In other embodiments, the control system may update
the motor model less frequently (e.g., every 100 motion commands)
or when requested by a user.
Self Commissioning Process
[0066] As shown in FIG. 3, the self-commissioning process of
control system 100 is further illustrated. The self-commissioning
process is initiated as the result of an explicit user command
(block 317). In another embodiment, the self-commissioning process
may be performed automatically by the control system upon the first
motion function command input by a user.
[0067] After the self-commissioning process has been initiated, the
control system identifies the type of motor by receiving input from
the user specifying the motor type (e.g., brush DC, brushless DC,
brushless AC, AC induction) (block 300). In another embodiment, a
control system may be specifically configured for one type of
motor, which would eliminate a motor identification step.
[0068] If the motor is identified as a brushless motor (AC or DC),
then the control system determines the parameters used in phase
commutation (block 301), which allows continuous motor rotation to
be achieved for brushless motors. If the motor is not identified as
a brushless-type motor, then this step is skipped.
[0069] Determining the commutation parameters is referred to as
"phase-finding," and may be accomplished using any of the
techniques known in the art. For example, one technique that may be
used in phase-finding involves applying a small voltage signal,
e.g. a 100-millisecond sinusoid at 30% output fraction, to each
phase combination (AB, BC, CA) in turn, recording the response, and
fitting the commutation parameters in a best-fit sense to all three
recordings together. This technique may be particularly
advantageous because it may be extended to automatically determine
the motor type, without any input from the user, using the
following logic: [0070] 1. If there is a response (current and/or
velocity) on only one phase combination, e.g. AB, BC, or CA, then
the motor is a two-phase motor. [0071] 1.1. If a sinusoid voltage
signal applied to the motor results in continuous rotation, then
the motor is an induction motor. [0072] 1.2. Otherwise, the motor
is a DC brush motor. [0073] 2. If there is not a response on only
one phase, then the motor is a three-phase motor. If Hall-effect
inputs are not all zero and not all one, the motor is a DC
brushless motor. The Hall-effect sensors may also be used to
determine the positions at which the phase changes, by recording
the position at which one of the sensor states changes. [0074] 3.
After finding the phases, a sinusoid may be applied to a single
phase combination. If back-and-forth motion is observed, the motor
is a DC motor; if no rotation or rotation in a single direction is
observed, the motor is an induction motor. [0075] 4. If the motor
is not an induction motor, the position/velocity/acceleration
response to a sinusoid on a single motor phase is observed and a
commutation function is fit to the response. If the function best
fits a trapezoid, the motor is a brushless DC; if the function best
fits a sinusoid, the motor is a brushless AC.
[0076] Referring again to FIG. 3, after the control system has
identified the motor type (block 300) and, if appropriate, found
the motor phases (block 301), the control system then applies an
open-loop motor control signal to the motor (block 302). This
signal is produced by disabling the closed-loop control (block 111
shown in FIG. 1) so it has zero output, and using the trajectory
generator (block 113 shown in FIG. 1) to produce a time-varying
waveform as the controller's modulation signal (signal 120 shown in
FIG. 1). If the modulator (block 104 shown in FIG. 1) is configured
as a voltage controller, the motor control signal (signal(s) 106
shown in FIG. 1) will be a time-varying voltage signal, and if the
modulator is configured as a current controller the motor control
signal will be a time-varying current signal.
[0077] The control system records the magnitude of the motor
control signal (either voltage or current) applied to the motor
over time. For purposes of illustration, the following discussion
assumes that the power supply is a regulated power supply, and
therefore the motor control signal (signal 106 in FIG. 1) is
directly proportional to the modulation signal (signal 120 in FIG.
1). However, it should be understood that the motor control system
described herein is not limited to operation with a regulated power
supply. When the motor control signal is directly proportional to
the modulation signal, the motor control signal is controlled by
setting the corresponding value for the modulation signal, and the
motor control signal is recorded by recording the modulation
signal.
[0078] Additionally, the control system receives and records the
position feedback information (signal 122 shown in FIG. 1)
generated by the motor in response to the signal applied to the
motor, and also records current feedback (signal 121 shown in FIG.
1). As will be described in more detail below, the control system
uses the record of position feedback received from the motor to
compute derivatives of position (e.g., velocity, acceleration,
jerk) for the motor, in block 303.
[0079] To avoid damaging the motor, a succession of signals is
successively applied, beginning with signals of low amplitude (e.g.
10% of maximum output) and period (e.g. 10 milliseconds) and
increasing as needed until significant position, velocity, and
acceleration have been observed and used for model fitting.
[0080] After the control system has computed derivatives of
position, the control system will check to see if it has received a
large enough response from the motor (block 304). For example, the
control system may check to see if the recorded maximum velocity
and/or acceleration is greater than a certain predetermined
threshold. If not, then the control system will apply another
signal to the motor which is larger in terms of magnitude and/or
longer in terms of the amount of time the signal is applied to the
motor, and/or has a different form (e.g triangular waveform,
wavelet pulse). Again, the control system will record the signal
applied to the motor over a period of time as well as the feedback
received back from the motor in response to the signal, and, from
this information, will compute derivatives of position.
[0081] Once the control system determines that it has received a
large enough response (block 304), then the control system proceeds
to estimate the motor model (block 305) by estimating the value of
the coefficients for the motor model equation(s). As will be
explained in greater detail below, the control system uses the data
from the control signal applied to the motor, computed derivatives
of position, and, optionally, recorded current feedback, to
estimate the coefficients for the motor model.
[0082] After the control system has estimated the motor model, the
control system checks to see if there is a good fit between the
recorded data and that which is estimated from the motor model
(block 307). If not, then the control system will apply another
signal to the motor which is larger in terms of magnitude and/or
longer in terms of duration and/or having a different form (block
306), and the control system will repeat the steps described in
blocks 302, 303, 304, 305, and 307.
[0083] Once the control system determines that the estimated motor
model is a good fit with respect to the recorded data, then the
control system computes the closed-loop control design from the
estimated motor model (block 308), as will be described in more
detail below.
[0084] After the closed-loop control design is computed, the
control system tests the design by applying a step, impulse, or
other suitable stimulus (block 309) as input (e.g., signal 117
shown in FIG. 1) to the closed-loop control. The control system
records the position feedback in response to the step input and
determines whether the motor has responded within an acceptable
error range to the step input (block 310). If the motor has not
responded as desired (for example, the response contained too many
oscillations), then the control system adjusts the closed-loop
control design parameters such as frequency and angle, computes
revised closed-loop control parameters, and applies another step
input.
[0085] Once the motor responds to the step input within an
acceptable error range, the control system determines the maximum
feedforward signal, which is the largest (peak) value of the
feedforward signal that will result from a trajectory planned by
the trajectory planner (block 110 shown in FIG. 1). The control
system uses a conservative initial value (block 312), e.g. 40% of
the maximum motor control signal, and using that as well as the
motor model, plans and executes a step motion with the closed loop
control enabled (block 313). The control system then examines the
recorded motor control signal (signal 106 shown in FIG. 1), which
includes both the feedforward (signal 119 shown in FIG. 1) and
correction (signal 118 shown in FIG. 1) signals. The maximum of the
motor control signal is computed and compared with a threshold
range (block 314); if the maximum falls outside the threshold range
(for example, below 85% or above 95%), then an adjusted value of
the maximum feedforward signal is computed (block 315), and blocks
313 and 314 are repeated until the desired maximum motor control
signal is achieved. In this way, a portion of the total motor
control signal is reserved for the contribution of the closed loop
control. When the maximum motor control signal falls within the
thresholds, the self-commissioning process is completed and the
controller is ready to receive and execute motor function commands
(block 316).
Motion Profile Planning
[0086] When control system 100 (shown in FIG. 1) receives a motion
function command, the control system uses the estimated motor model
generated during the self-commissioning process to compute an
efficient motion profile for executing the motion function command.
A motion profile is a time-sequence of motor positions and their
derivatives that is calculated to realize a commanded motion
function. The control system 100 may receive several different
types of motion function commands depending upon the motor and
application. Table 1 lists some typical motion function commands.
It should be understood that sequences of motion function commands
may be programmed, along with other industrial functions such as
monitoring or setting input/output points, so as to appear to the
user as a single commanded function.
TABLE-US-00001 TABLE 1 Motion Function Command Motion Description
Step Move to a commanded position; initial and final velocities are
zero. Scan Move to a commanded position; initial and final
velocities are zero. During the move, accelerate to a specified
scanning velocity, and maintain motion at that velocity until it's
necessary to decelerate to zero velocity to arrive at the commanded
final position. Spin Accelerate to a commanded velocity, and spin
the motor at that velocity indefinitely until a new motion command
is issued. Interpolate Change from the initial position and
velocity to a specified final position and velocity, optionally
taking a specified time duration to do so. Cam Track the position
and/or velocity of an input source. For example, one or more
external position sensors may be read and combined according to a
user-defined mathematical formula, and the result serves as the
position and/or velocity command that the motor is to track on a
continuous basis.
[0087] FIG. 4 illustrates the motion profile planning process 400
performed by the trajectory planner 110.
[0088] Generally, the motion profile planning process 400 receives
a motion function command 401, selects a motion plan algorithm and
acceleration pulse form 402, and iteratively determines a set of
motion profile parameters 405-408. As will be explained in more
detail below, the motion profile planning process 400 selects the
motion plan algorithm and acceleration pulse form based on the
motion function command 401 and pre-stored input from the user
indicating desired motion performance. The motion profile process
400 then calculates an initial set of motion profile parameters 405
based on the motion function command 401, the selected motion plan
algorithm and acceleration pulse form 402, and the estimated motor
model 403 and the maximum feedforward signal 404 (previously
determined from the self-commissioning process). After the initial
set of motion profile parameters are computed, the motion profiling
process 400 engages in an iterative process by checking the motion
profile against a set of predetermined constraints 406, and
adjusting the motion profile parameters 407 until the motion
profile satisfies the predetermined constraints. Once the computed
motion profile parameters meet the predetermined constraints, the
motion profile planning process outputs a set of final motion
profile parameters 408. Referring again to FIG. 1, the trajectory
generator 113 receives the set of motion profile parameters and
uses these parameters, along with the estimated motor model, to
realize the commanded motion function.
[0089] The motion profile parameters 408 are a set of parameters
that specify the state of motor motion (e.g., position and its
derivatives) over the time required to realize the commanded motion
function. For example, the parameters 408 may be the pulse times
and peak acceleration values for a sequence of acceleration pulses
of a specified form (e.g. quadratic, harmonic, trapezoidal). In
another embodiment, the parameters are a set of peak jerk,
acceleration, and velocity values.
[0090] The control system selects a motion plan algorithm and
acceleration pulse form to produce satisfactory motion performance
based on the type of motion function command and pre-stored input
from the user 402. For example, the plan algorithm and acceleration
pulse form may be selected to perform the motion function command
with low power dissipation, or may be selected to perform the
motion function command in the shortest amount of time regardless
of power dissipation. In a preferred embodiment, these selections
are based on input received from a user indicating a desired motion
performance. Generally, this input will be stored in memory and
will apply to subsequent motion function commands until the user
changes the motion performance settings.
[0091] In another embodiment, the control system may base the plan
algorithm and acceleration pulse form based on a usage history of
the control system. For example, if the control system has
historically experienced long idle times between commands, then the
control system may determine that power dissipation is not a
significant factor, and a high-speed, high-power plan algorithm and
acceleration pulse form such as a pulse-cruise-pulse (PCP)
algorithm with quadratic acceleration pulse might be selected for a
step motion function. Similarly, if the control system has
historically maintained relatively constant motor motion (i.e.,
little idle time), then a longer-time, lower-power plan algorithm
and acceleration pulse form such as a balanced pulse-pulse (BPP)
algorithm with harmonic pulse might be selected.
[0092] The estimated motor model 403 and the maximum feedforward
signal 404, initially determined during the self-commissioning
process, are used in the motion profile planning process to compute
the motion profile parameters. However, in other embodiments the
maximum feedforward signal may be specified by the user. The
estimated motor model 403 and the maximum feed-forward signal 404
may be updated from time to time upon a user request, at periodic
intervals (e.g., every 10 motion commands), or upon a triggering
event.
[0093] The control system stores the maximum feedforward signal 404
as the fraction of maximum motor control signal. In a preferred
embodiment, the motion profile parameters are planned such that the
feedforward signal (signal 119 in FIG. 1) does not exceed, but just
reaches, the maximum feedforward signal 404. In this sense the
planned motion profile is efficient, given all the other
specifications and constraints, because the motion profile will be
within the motor's capacity (including a portion reserved for the
closed-loop control to compensate for external disturbances), but
does not significantly under-use the motor's capacity.
[0094] Once the control system calculates an initial set of motion
profile parameters 402, the planned motion is evaluated using these
parameters and the motor model (expressed in formulas such as 708
shown in FIG. 7) to obtain the peak magnitude of the planned
feedforward signal as well as other values such as peak velocity,
peak acceleration, and RMS (Root-Mean-Square) acceleration. The
control system tests the initial motion plan by comparing the
results to one or more predetermined constraints 406. For example,
if the planned peak feedforward signal, given a selected set of
motion profile parameters, exceeds or is substantially less than
the maximum feedforward of the controller 404, then the profile
parameters are adjusted and the evaluation repeated. Other
predetermined constraints may include maximum velocity, maximum
acceleration, maximum current, and maximum RMS acceleration. This
iterative process continues until all of the predetermined
constraints are met. The logic of this iterative process may be any
of several techniques known in the art such as root-finding (e.g.
by bisection) and minimization (e.g. by golden-section search).
[0095] As previously mentioned, the set of motion profiles
parameters may be in the form of a set of parameters specifying a
sequence of acceleration pulses. For example, as shown in FIG. 5, a
step motion function command is realized by constructing an
acceleration pulse 500, followed by a constant-velocity
(zero-acceleration) phase 501, and ending with a deceleration pulse
502. The time-functions of position 506, velocity 504, and jerk 505
are then directly computed from this sequence of acceleration
pulses 503.
[0096] The control system may use different forms of acceleration
pulses to construct a motion profile, and FIG. 6. illustrates five
types of acceleration pulses that may be used. However, it should
be understood that the control system may use other types of
acceleration pulses known in the art, such as cycloidal or
piecewise-linear. The acceleration pulses may be mathematically
described in terms of acceleration as a function of time by the
following equations (note that T denotes the pulse duration and A
denotes the peak acceleration value). [0097] 1. Quadratic Pulse
(600):
[0097] a ( t ) = 4 At T ( 1 - t T ) ( 1 ) ##EQU00001## [0098] 2.
Harmonic (601):
[0098] a ( t ) = A 2 ( 1 - cos 2 .pi. T t ) ( 2 ) ##EQU00002##
[0099] 3. Trapezoid (602, 603, 604). This describes a family of
pulse forms that uses an acceleration fraction F to adjust the
total time spent at the peak acceleration. The acceleration
fraction F specifies the fraction of the total time spent at the
peak acceleration. If F=1, the pulse form is a square wave (602)
(often termed "bang-bang" acceleration). If F=0, the form is a
triangle (604). If F=1/2, then half the total duration T is spent
at the peak acceleration (603). To compute the acceleration, the
times when peak acceleration begins (t.sub.1) and ends (t.sub.2)
must be first computed:
[0099] t 1 = T ( 1 - F ) 2 t 2 = t 1 + FT ( 3 ) ##EQU00003##
[0100] Now the acceleration is given by:
a ( t ) = { A t t 1 , t < t 1 A , t 1 < t .ltoreq. t 2 A ( 1
- t - t 2 t 1 ) , t 2 < t .ltoreq. t 3 ( 4 ) ##EQU00004##
[0101] As previously discussed, the control system may select
different acceleration pulse forms depending on the motion function
command and a desired motion performance indicated by a user (or
based on the history of motions performed). A trapezoidal or
quadratic form may be used to provide faster motion, while a
harmonic form may be chosen to provide smoother motion. A pulse of
each type is completely specified by its duration T, and peak
acceleration, A.
[0102] As will be explained in more detail below, the control
system utilizes mathematical equations associated with each pulse
form as part of the motion plan algorithm and trajectory generator.
While the equations associated with acceleration pulse forms are
known in the art, FIG. 7 provides the equations for the quadratic
and harmonic acceleration pulses.
[0103] The equations for computing acceleration 700, velocity 701,
position 702, and jerk 703, are used by the trajectory generator
(block 113 shown in FIG. 1) to compute the derivatives of position
as a function of time. The change in velocity for a single
acceleration pulse is given by equation 704, and the distance
traveled by an acceleration pulse is given by 705; the distance
traveled in a step motion is given by 706, the RMS acceleration is
given by 707, and the time at which the peak feedforward signal
occurs during an acceleration pulse is given by 708. One or more of
equations 700-708 are used by the trajectory planner to produce a
set of motion profile parameters specifying a sequence of
acceleration pulses.
[0104] To illustrate the operation of the motion profile planning
process, suppose a spin motion function command is received by the
control system. In a spin motion function command, the final
velocity is included in the spin motion function command. Based on
the type of motion function (i.e., spin) and pre-stored motion
preferences (e.g. perform fast acceleration), the motion planning
process 400 selects a quadratic acceleration pulse and a spin plan
algorithm. The motion profile planning process 400 executes the
spin plan algorithm by selecting an initial acceleration pulse
duration T for a single quadratic acceleration pulse to provide the
required change in velocity. The motion profile planning process
then engages in a bisection search algorithm along the time
dimension, which will be familiar to those skilled in the art, to
iteratively compute the final set of profile parameters (i.e., A
and T values). For each trial acceleration pulse time, T, the
motion profile planning process executes the spin plan algorithm in
the following manner: [0105] 1. Using the selected pulse duration
value T, the peak acceleration A required to satisfy the initial
and final velocities is computed using equation 704. [0106] 2. Next
the peak planned feedforward signal (expressed as a fraction) is
computed by calculating the maximum pulse output time, t, using
equation 708, and the result is used in equations 701, 700, and 703
to compute derivatives of position (i.e., velocity, acceleration
and jerk). Next, the results are used in the estimated motor model
equation to compute the peak planned feedforward signal. [0107] 3.
The peak planned feedforward signal is then compared to the maximum
feedforward signal of the controller. If the peak planned
feedforward signal does not exceed and is sufficiently close to the
maximum feedforward signal of the controller (e.g., within a half
percent), then the current values of A and T are used to form the
final set of motion profile parameters. If not, then a new duration
T is selected, and steps 1-3 are repeated.
[0108] To illustrate the operation of the motion profile planning
process in response to a step motion function, suppose a step
motion function command is received by the controller that
specifies a distance to be moved (typically specified in terms of
counts). Based on the type of motion function (i.e., step) and
pre-stored motion preferences, the motion planning process 400
selects an acceleration pulse form and one of the following motion
plan algorithms shown in FIG. 8: [0109] 1. A pulse-cruise-pulse
(PCP) algorithm is illustrated in graph 800 where three segments,
acceleration, cruise (constant-velocity), and deceleration, are
used to realize a step motion function. Note that the acceleration
and deceleration peak values and durations are allowed to be
different with a pulse-cruise-pulse plan algorithm (although they
need not be different). The pulse-cruise-pulse plan provides the
fastest motion of the three algorithms, at a cost of increased
power dissipation. [0110] 2. A balanced pulse-cruise-pulse (BPCP)
algorithm is illustrated in graph 801. Note that the BPCP is the
same as the PCP algorithm, except the deceleration pulse is
constrained to have the same duration (and hence, amplitude) as the
acceleration pulse. This algorithm provides reasonably fast motion,
but with less power dissipation than the PCP algorithm. [0111] 3. A
balanced pulse-pulse (BPP) is illustrated in graph 802. Note that
the BPP algorithm is the same as the BPCP except that no
constant-velocity phase is allowed. This algorithm provides the
lowest power dissipation, but provides the slowest motion.
[0112] If the PCP algorithm is selected, the motion profile
planning process executes the PCP algorithm by a golden-section
minimization search along the peak-velocity dimension as follows:
[0113] 1. Select an initial peak velocity. [0114] 2. Using the spin
plan algorithm described above, compute the parameters for
acceleration from zero to the peak velocity (i.e. A.sub.a,
T.sub.a), and deceleration from peak velocity to zero (i.e.
A.sub.d, T.sub.d). [0115] 3. Compute the distance traveled by both
these pulses using equation 705; if the total is greater than the
step distance, the selected peak velocity is not feasible, a new
peak velocity is selected, and steps 2-3 are performed again.
[0116] 4. If the total distance traveled by the pulses computed in
step 3 is less than or equal to the step distance, then compute the
constant-velocity time (i.e. T.sub.c) and the total motion time
(i.e. T.sub.a+T.sub.c+T.sub.d). [0117] 5. Steps 1-4 are repeated
until the peak velocity that produces the smallest total duration
is found. Once this peak velocity is found, the corresponding
acceleration pulse parameters A.sub.a, T.sub.a, cruise time
T.sub.c, and deceleration pulse parameters A.sub.d, T.sub.d form
the final set motion profile parameters that are fed to the
trajectory generator.
[0118] If the BPCP algorithm is selected, then the motion profile
planning process performs the same steps as the PCP algorithm
described above except that a different step 2 is used: [0119] 2.
Using the spin plan algorithm, compute the parameters for
acceleration from zero to the peak velocity (i.e., A.sub.a,
T.sub.a) and deceleration from peak velocity to zero (i.e.,
A.sub.d, T.sub.d). Use the longer of the two durations for both
phases.
[0120] The resulting final set of motion parameters for the BPCP
algorithm thus has three parameters T, A, and T.sub.c, since
T.sub.a=T.sub.d=T, and A.sub.a=A, and A.sub.d=-A.
[0121] If the BPP algorithm is selected, the motion profile
planning process executes the BPP algorithm by a bisection search
along the pulse-time dimension as follows: [0122] 1. Select a pulse
time, T. [0123] 2. Compute the peak acceleration, A, required to
step the specified distance using equation 706. [0124] 3. Compute
the resulting peak velocity using equation 704. [0125] 4. Compute
the peak planned feedforward signal (expressed as a fraction) by
calculating the maximum pulse output time, t, using equation 708,
use the result in equations 701, 700, and 703 to compute
derivatives of position (i.e., velocity, acceleration and jerk),
and then use the results in the estimated motor model equation to
compute the peak planned feed-forward signal. [0126] 5. Compare the
peak planned feedforward signal to the maximum feedforward signal
of the controller. If the peak planned feedforward signal does not
exceed and is sufficiently close to the maximum feedforward signal
of the controller (e.g., within a half percent), then the current
values of A and T are used to form the final set of motion profile
parameters (since A.sub.a=A and A.sub.d=-A). If not, then a new
pulse time, T, is selected, and steps 1-3 are repeated.
[0127] Note that the estimated motor model produced during the
self-commissioning process is an important element to compute an
efficient motion profile, since different motors will typically
require a different modulation waveform to realize the same motion.
For example, as shown in FIG. 9, a feedforward signal (e.g., signal
119 in FIG. 1) for two different DC motors, a Kollmorgen
ServoDisc.TM. U9M4 motor (trace 900) and a MCG.TM. IB23830 (trace
901), is shown. Each feedforward signal 900, 901 is generated from
a set of parameters generated by the motion profile planning
process in response to a motion function command specifying a step
of one motor revolution and using a PCP algorithm with quadratic
acceleration pulses. While the motion function command, motion plan
algorithm, and acceleration pulse form are all the same, the
feedforward signal is obviously very different for the two motors.
However, the feedforward signal reaches the specified maximum
feedforward fraction (in this case the maximum feedforward fraction
was specified at 80%), for both acceleration and deceleration, for
each motor.
[0128] The following description provides for more specific
implementations of the motor control system described above.
DC Brush Motor Embodiment
[0129] As shown in FIG. 10, a motor control system 1000 is
connected to a constant voltage source 1001 and a DC brush motor
1002. The DC brush motor includes an optical encoder position
feed-back unit 1003 to provide position information to the control
system. The control system 1000 includes an encoder interface unit
1017 that receives and processes signals 1009 received from the
optical encoder position feedback unit 1003.
[0130] The control system includes an H-bridge modulator 1004 that
controls the voltage on the motor in response to a modulation
signal 1006, using pulse-width-modulation (PWM). Since motor
control system 1000 is configured for use with a DC brush motor, a
commutator (element 123 shown in FIG. 1) is not functionally
present (note that the commutator may be physically present but is
bypassed when the motor type is a non-brushless motor).
[0131] The motor model 1007 of the control system 1000 uses
equations that describe a DC brush motor. The closed-loop control
1008 is a state-space controller having four state variables, three
of which are configured to provide the
Proportional-Integral-Derivative (PID) control of position that is
familiar to those skilled in the art. The fourth state variable is
used for proportional current control. A state variable is a member
of a set of variables (known as "state variables") whose values
collectively completely determine the dynamic state of a
system.
[0132] The following equations mathematically describe the
operation of an idealized brush DC motor:
e = L i t + Ri + k .tau. v ( 5 ) .tau. = k .tau. i ( 6 ) ik .tau. =
I v t + bv + f sgn v + .tau. b ( 7 ) ##EQU00005##
[0133] In the above equations, L and R are inductance and
resistance of the motor windings, respectively, k.sub..tau. is the
motor torque (force) constant, e is voltage, i is current, and v is
motor velocity. The mechanical quantities I and b are inertia and
damping, respectively, f and .tau..sub.b are friction and bias
forces respectively. The mechanical quantities describe the
properties of the combined system of the motor, transmission, and
its connected load. The term sgn v equals 1 if v>V.sub.f, where
V.sub.f is a specified small threshold velocity, equals -1 if
v<-V.sub.f, and equals zero otherwise.
[0134] Equations (5), (6), and (7) can be combined to produce the
following equation:
? = ( Rb k .tau. + k .tau. ) v + ( Lb + IR k .tau. ) a + IL k .tau.
j + Rf k .tau. sgn v + R k .tau. .tau. 1 ? indicates text missing
or illegible when filed ( 8 ) ##EQU00006##
[0135] where v is velocity (the first derivative of position) and
equals
p t , ##EQU00007##
a is acceleration (the second derivative of position) and
equals
2 p t , ##EQU00008##
and j is jerk (the third derivative of position) and equals
3 p t . ##EQU00009##
[0136] This control system, then, uses a model equation expressed
in the following form:
e=k.sub.vv+k.sub.aa+k.sub.jj+k.sub.fsgn v+k.sub.o (9)
[0137] The motor voltage e corresponds to the motor control signal
1005, and constants k.sub.v, k.sub.a, k.sub.j, k.sub.f, and k.sub.o
are coefficients that correspond to the terms in equation (8). As
will be described in greater detail below, one of the functions of
the self-commissioning process is to determine the coefficients
k.sub.v, k.sub.a, k.sub.j, k.sub.f, and k.sub.o for the particular
motor connected to the control system.
[0138] The following second model equation, a symbolic
rearrangement of equation (7), is used to provide the reference
value 1021 for current control 1019:
i=m.sub.vv+m.sub.aa+m.sub.fsgn v+m.sub.o (10)
[0139] The constants m.sub.v, m.sub.a, m.sub.f, and m.sub.o are
coefficients that correspond to the terms in equation (7). These
coefficients are also determined as part of the self-commissioning
process.
[0140] The control system 1000 is configured such that the units of
the model equations (9) and (10) are kept in a form such that the
control system does not require physical motor knowledge. For
example, the motor voltage e has units of "fraction of maximum
output" (as opposed to volts) and has an allowable range of
-1.ltoreq.e.ltoreq.1; where the value +1 corresponds to "maximum
positive" and the value -1 corresponds to "maximum negative"
output. This corresponds naturally to the controller operation,
where the actual output may be a PWM duty cycle or a DAC
(Digital-to-Analog Converter) command in a scaled range, e.g.
-2.sup.12<e<2.sup.12.
[0141] The motor position has units of "counts" where each count is
the smallest integral representation of a unit of motor movement.
Position counts are directly provided to the controller by optical
encoders 1003. Defining motor position in terms of "counts" permits
the control system to easily interpret feedback from other position
feedback devices such as the LSB (Least-Significant-Bit) of the ADC
(Analog-to-Digital Converter) reading of a resolver. The units of
the coefficients, then, are in terms of the above quantities. For
example, k.sub.v has units of output-fraction per
counts-per-second, similarly k.sub.a has units of output-fraction
per counts-per-second-squared. This form is universally useful, and
applies equally well to rotational or linear motors. Thus, the
control system does not require knowledge of any of the electrical
or mechanical parameters in equation (8).
[0142] Once the motor model coefficients (i.e., k.sub.v, k.sub.a,
k.sub.j, k.sub.f, and k.sub.o) are calculated, several other motor
parameters can be directly derived from these coefficients. For
example, the mechanical time constant is closely approximated by
k.sub.a/k.sub.v, and the electrical time constant by
k.sub.j/k.sub.a. The maximum motor velocity can be approximated
by:
v max = 1 - k f - k 0 k v ( 11 ) ##EQU00010##
[0143] As previously explained in FIG. 3 and its corresponding
discussion, the motor model coefficients are calculated during the
self-commissioning process. The following provides a more detailed
illustration of the general procedure outlined in FIG. 3.
[0144] Referring again to FIG. 10, a voltage signal consisting of a
time-sequence of varying voltage levels is applied to the motor.
For example, this control system may apply 1.5 cycles of a sinusoid
having 200 millisecond period and peak amplitude (output fraction)
of 80%. The modulation signal (signal 1006), motor position
feedback (signal 1010), and current feedback (signal 1012), are
recorded during each servo processing interval, which is every 178
microseconds in this example.
[0145] The encoder interface unit 1017 records position data with
high accuracy and its operation is further illustrated in FIG. 11.
As shown in FIG. 11, the encoder 1003 provides two digital input
lines, channels A and B, to the encoder interface unit 1017. The
signals produced by the encoder 1003 and propagated along channels
A and B are two square waves in quadrature (i.e. 90.degree. out of
phase). An up or down transition on either input signifies that the
position has been increased or decreased by one "count". Each time
the encoder interface unit 1017 senses a transition, the encoder
interface unit records the count in position register 1103. The
encoder interface unit also records the time ("time stamp") that
the most recent encoder count event (input transition) took place.
The time is kept with a very high resolution timer, for example, a
25 MHz timer can be used to record the encoder event to a
resolution of 40 nanoseconds. At each servo processing interval
(i.e., every 178 microseconds), a time/position datum pair is fed
to the control system 1000 from the position and time registers
1103, 1104. Processing of the time/position pair may be further
enhanced by means of a control/status register 1105 that indicates
if a new encoder event occurred since the last servo processing
time.
[0146] The encoder interface unit in this controller provides the
time stamp for the most recent encoder event. The encoder event
timer is free running, i.e. it is never reset as is done when
measuring the interval between two encoder events. By supplying the
time of the most recent transition, and by ensuring the servo
processing interval is shorter than the encoder timer overflow
time, the control system can determine the precise time interval
between all elements in a very large set of encoder events. The
control system is then able to use sequences of time/position data
to compute high-accuracy derivatives of position. One such method
is to use a sequence of two measurements, p.sub.1, t.sub.1 and
p.sub.2, t.sub.2 to compute an estimate of velocity:
velocity = p 2 - p 1 t 2 - t 1 ( 12 ) ##EQU00011##
[0147] This method provides high accuracy at high and low
velocities and at times when the interval between reading the
position and time registers is not constant, and does not require
multiple modes of logic for different velocity ranges.
[0148] In this embodiment, the encoder interface unit 1017 is
implemented by programming an FPGA (Field-Programmable Gate Array).
The encoder interface maintains a high-frequency timer, e.g. 25
million timer "ticks" per second (40 nanoseconds duration between
ticks). The state of input channels A and B is monitored at each
timer tick. If a change is detected, the time of the state change
is recorded immediately, by copying the value of the high-frequency
timer into an intermediate time register. If the state of the
inputs remains unchanged for a given further number of timer ticks
(thus performing a noise-rejection function), then the position
register is either incremented or decremented, according to the
state of channels A and B, and the intermediate time register is
copied to the "time-stamp" register.
[0149] The encoder interface unit 1017 provides a regular
servo-processing interrupt to the controller. At each interrupt,
the control system reads the position and time-stamp registers, and
saves these values in a ring buffer for later use by other software
that estimates second and third order derivatives (acceleration,
jerk) for use in motor modeling.
[0150] The encoder interface unit 1017 includes a control/status
register 1105 that indicates if the position register has changed
since the previous servo processing interval. Because the encoder
interface unit 1017 provides the control system regular interrupt,
the time between interrupts is precisely known as a fixed number of
timer ticks. Thus the control system can compute the time interval
for intervals between position events that exceed the wrap-around
time of the encoder time register, for example, when 1000
consecutive servo intervals occur with no encoder event (i.e. at
lower velocities).
[0151] The encoder interface unit 1017 provides the means for the
control system to precisely synchronize the timing information
between the position feedback, servo processing, and PWM
generation, in the following ways: [0152] 1. The encoder interface
unit provides a register (not shown) that the control system may
read to determine the current value of the free-running
high-frequency timer. [0153] 2. The encoder interface unit provides
a register (not shown) that the control system may read to
determine the timer value at the time the interrupt was asserted.
[0154] 3. The encoder interface unit generates the PWM waveform.
The PWM waveform is synchronized with the processor interrupt
delivered to the control system; a new PWM waveform cycle begins
just after an interrupt is asserted. The encoder interface unit
provides a register (not shown) that the control system writes to
in order to command the duty cycle of the PWM waveform.
[0155] Thus, the control system is able to compute the time offset
between position events and the time the motor control signal is
changed. It can use this information to reduce time-delay effects
and improve the quality of closed-loop control.
[0156] Even though the servo rate is uniform, the sequence of
time/position pairs will typically not be uniformly spaced in time.
However, the time at which the position was achieved is recorded
with a high accuracy. After recording a series of motor positions
and times, the recorded position/time pairs are used to compute a
series of positions plus first, second, and third derivatives of
position at selected sample times. The result of this computation
is called a "motion state." FIG. 12 illustrates how the motion
states are computed. For each motion state 1203-1205 to be
produced, a set 1201 of recorded samples 1200 (time, position,
modulation signal) is selected. In one method, four pairs are
selected that span the desired sample. For example, pairs at
approximate times (relative to the final sample time) of -1, 0, +1,
and +2 milliseconds are selected. These four time/position pairs
are then fitted to a polynomial, representing position as a
function of time:
p=k.sub.0+k.sub.1t+k.sub.2t.sup.2+k.sub.3t.sup.3 (13)
[0157] The polynomial fit is performed using any mathematical
method known in the art, such as Rybicki's method, to determine the
coefficients k.sub.i. Once the coefficients are calculated, the
derivatives of position, p, can then be simply computed according
to the following formulae:
v=k.sub.1+2k.sub.2t+3k.sub.3t.sup.2 (14)
a=2k.sub.2+6tk.sub.3
j=6k.sub.3
[0158] The control system determines the sample span (e.g.,
t.sub.1-t.sub.9 is the sample span for motion state 1203) to
optimize jerk estimation since jerk is the most difficult
derivative to estimate. Encoder error, either in time or position,
can substantially increase the error in the jerk estimate. Because
the motor being controlled is unknown, the error characteristics of
the encoder are therefore also unknown. Therefore, the control
system employs a technique to select a sample span in order to
increase the accuracy of the jerk estimate. In this technique, the
control system gradually expands the sample span used to produce
each motion state until the "spread" (a measure of noise)
associated with a series of jerk estimates falls below a certain
threshold (e.g., 5%). Using a longer span tends to smooth noise
from the jerk estimate, but, if the span is too long, then changes
in jerk may be excessively smoothed which would also decrease the
accuracy of the jerk estimate. Using a shorter sample span,
however, the jerk signal may become lost in noise overlaid on the
underlying jerk signal, making an accurate estimate of jerk more
difficult. To illustrate this problem, FIG. 13 shows the jerk
estimates using the same servo record processed with two different
sample spans to produce a set of motion states. In graph 1300 the
span is 1.5 milliseconds and the jerk signal is largely lost in the
noise, while in graph 1301 the span is 8 milliseconds and produces
a better jerk estimate. However, if the span was expanded beyond 8
milliseconds, the jerk signal would become more smoothed and may
decrease the accuracy of the jerk estimate.
[0159] The control system measures the spread of a jerk estimate
given a selected sample span by computing the ratio of mean
absolute difference between samples and dividing by the largest
absolute value:
E j = j i - j i - 1 _ max ( j i ) ( 15 ) ##EQU00012##
[0160] The control system selects the sample span according to the
following algorithm. First, the control system computes jerk
estimates for a relatively short window of motion states spaced at
the servo interval (178 microseconds). The control system starts
with a small span, e.g., 2 milliseconds, and then computes the
spread. The control system then gradually increases the span until
the spread drops below a desired threshold, e.g., 5%. The control
system then uses this span to compute all of the derivative
estimates.
[0161] In some cases, the control system may determine that jerk
cannot be accurately estimated, and, in this case the control
system uses a second-order polynomial and three time/position pairs
rather than the third-order polynomial described in equation (13)
and four time/position pairs. The derivatives are evaluated at the
desired motion state time, which is at a time centered with respect
to the selected samples 1201. The derivatives, together with time
at which they are evaluated, and modulation signal and current
value, form a single motion state 1203.
[0162] In another method, all or many pairs within a selected
interval 1201 of the desired sample time are used; for example, all
pairs within -2 and +2 milliseconds. These time/position pairs are
then fit to the polynomial (13) using a least-squares fit to
determine the coefficients, and then use equation (14) as before to
determine the derivatives of position.
[0163] Fitting a polynomial is known to be a poorly-conditioned
numerical problem, and so to improve the accuracy of the solution,
a data preconditioning technique is used. In this technique, an
offset is subtracted from each time value in the set of selected
samples, and the result multiplied by a scale factor to produce a
set of times that has approximately zero mean and variance equal to
1. The offset that is subtracted from each time value in a selected
set of samples is the time that will be associated with the
resulting motion state. In a preferred embodiment, this time (and
hence the offset) coincides with the middle-most time in the sample
set. For example, referring to FIG. 12 again, in the first set of
samples 1201, the offset would be the value of the evaluation time
(and the middle-most value in the set), t.sub.5. The preconditioned
sample time may be expressed according to the following
equation:
t.sub.i'=(t.sub.i-t.sub.o)S (16)
[0164] where t.sub.0 is the evaluation time, and S is the inverse
of the standard deviation of the times. Using preconditioned data
values, the coefficients of the polynomial in equation (13) are
computed with respect to t'; and, when evaluated at t.sub.o, the
derivatives in equation (14) become:
v=k.sub.1S (17)
a=2k.sub.2S.sup.2
j=6k.sub.3S.sup.3
[0165] In one experiment, the above preconditioning technique
reduced the condition number of the input matrix (for the case
using the SVD least-squares fit method) by eight orders of
magnitude.
[0166] Once the derivatives for a motion state have been computed
(i.e., velocity, acceleration, and jerk), the corresponding motor
control signal, e, is computed. Since this embodiment uses a
constant-voltage power supply, the control system 1000 uses the
recorded modulation signal (signal 1006) as the value of the motor
control signal.
[0167] Typically there is a time delay of approximately two servo
periods between corresponding modulation signal recordings and
position pairs. This is because at a given servo interval, the
position and time read from the encoder interface unit 1017 were
recorded at the end of the previous interval. Additionally, the
modulation signal computed during the servo interval will not be
applied to the motor until the following interval, when the new PWM
duty cycle takes effect. Thus the servo record for a particular
interval includes a time/position pair from the previous interval
and a modulation signal value for the next interval in the future.
Therefore, the control system computes a "shifted time" equal to
the sum of the motion state time (e.g., t.sub.5, t.sub.10, t.sub.15
in FIG. 12) and an estimated time shift value of two servo periods,
to compensate for this delay. The recorded modulation signal
samples are then searched to find two values whose times bracket
the shifted time, and a motor control signal value is computed by
linear or polynomial interpolation.
[0168] A value of current associated with the motion state is
computed in the same way as just described for modulation signal.
However, the time shift is not employed, since the current value
was recorded, not commanded, during the same interval, and hence
its time of recording is very close to the time at which position
was recorded.
[0169] Thus a single motion state 1203 is computed and includes a
position value and its derivatives, a motor control signal value,
and a current value, for a single time instant. This process 1202
is repeated for successive motion state times until a set of states
sufficient to estimate the coefficients of the motor model
equations (9) and (10) is obtained.
[0170] The control system estimates the coefficients for the motor
model equations by selecting a set of motion states. For example,
the control system may select 100 motion states more or less
uniformly spaced within the aforementioned 300 millisecond duration
of the voltage signal. The motor model coefficients are then solved
via a direct least-squares method. The overconstrained equation to
be solved, in matrix form, containing n motion states, is:
[ 1 v 1 a 1 j 1 sgn v 1 1 v n a n j n sgn v n ] [ k 0 k v k a k j k
f ] = [ e 1 e n ] A x = b ( 18 ) ##EQU00013##
[0171] The above matrix equation is solved in a least-squares sense
to determine the values of the model coefficients. In a preferred
embodiment, the controller uses the SVD (Singular Value
Decomposition) method to solve the matrix equation, however, other
embodiments may employ other mathematical methods known in the art
to solve the matrix equation.
[0172] In a preferred embodiment, the numerical robustness of the
solution is improved by "preconditioning" the data in the A matrix.
The velocities, accelerations, and jerks have extremely large
magnitudes, and, accordingly, the accuracy of the solution may be
compromised. To precondition the data, the controller subtracts an
offset from each derivative and multiplies the result by a scale
factor, so that each column of the A matrix has zero mean and
variance equal to 1. The offset is the mean of the corresponding
column values, and the scale factor is the inverse of the standard
deviation of the column values. For example, each preconditioned
velocity term is v.sub.i'=(v.sub.i-O.sub.v)S.sub.v, where O.sub.v
is the mean velocity, and S.sub.v is the inverse of the standard
deviation of the velocities. This creates the following matrix
equation to solve for scaled coefficients:
[ 1 ( v 1 - O v ) S v ( a 1 - O a ) S a ( j 1 - O j ) S j sgn v 1 1
( v n - O v ) S v ( a n - O a ) A s ( j n - O j ) S j sgn v n ] [ k
0 ' k v ' k a ' k j ' k f ' ] = [ e 1 e n ] ( 19 ) ##EQU00014##
[0173] This equation can be solved more reliably than the matrix
equation (18) without preconditioning. In some tests, the condition
number (a measure of numerical reliability or ill-conditioning) was
reduced by 9 or 10 orders of magnitude by preconditioning the
data.
[0174] Once the preconditioned matrix equation is solved to achieve
the scaled coefficients, the model coefficients are calculated by
the following equations:
k.sub.v=S.sub.vk.sub.v' (20)
k.sub.a=S.sub.ak.sub.a'
k.sub.j=S.sub.jk.sub.j'
k.sub.f=k.sub.f'
k.sub.o=k.sub.o'-O.sub.vk.sub.v-O.sub.ak.sub.a-O.sub.jk.sub.j
[0175] Note that using the above model estimation automatically
compensates for variations in the wiring connections between the
controller and motor. For example, if encoder wires (i.e. wires
within connection 1009 shown in FIG. 10) or motor phase wires (i.e.
wires within connection 1005 shown in FIG. 10) are exchanged, this
results in a reversal of the normal direction of motion. If this
occurs, then all of the coefficients k.sub.v, k.sub.a, k.sub.j will
have a negative sign, and the sign of the modulating signal (i.e.
signal 120 shown in FIG. 1) will be consistent with the direction
of rotation, so that a stable, accurate motion is always
obtained.
[0176] The coefficients of the current model equation (10) (i.e.,
m.sub.v, m.sub.a, m.sub.f, and m.sub.o) are estimated in the same
way, using the same set of motion states. This time, however, the
recorded current values are used in place of the motor voltage, and
form the matrix equation:
[ 1 v 1 a 1 sgn v 1 1 v n a n sgn v n ] [ m 0 m v m a m f ] = [ i 1
i n ] ( 21 ) ##EQU00015##
[0177] The above equation is solved to obtain the coefficients
m.sub.v, m.sub.a, m.sub.f, and m.sub.o using the same techniques
described above.
[0178] The above procedure can be used to estimate a model based on
the record of any suitable motion, and is not restricted to the
result of an open-loop learning signal. Any motion having certain
desired characteristics, for example, containing a period of
acceleration, can be used to estimate a model. In this way, the
method can be used to continually update or automatically fine-tune
the model (as shown in block 204 in FIG. 2) and other control
system parameters that depend on the model, such as the closed-loop
controller.
[0179] In some cases, one or more of the parameters of the motor
model cannot be reliably estimated. For example, if a profile does
not contain both positive and negative velocities, the constant and
friction coefficients k.sub.o and k.sub.f are redundant and cannot
be independently estimated. In this case only one is used and the
result is later allocated using the proportions that existed in the
previous motor model, or, in some cases, assigned to only one
coefficient.
[0180] In some cases the jerk coefficient k.sub.j cannot be
reliably estimated; this condition can be detected if k.sub.j does
not have the same sign as k.sub.v and k.sub.a. In this case, the
input matrix equation (18) is modified to remove jerk terms and the
fit performed again. In this case, or in any case where the
controller may determine that jerk is not a significant factor, the
polynomial (13) may be changed to second-order, simplifying and
speeding up the computation of position derivatives.
Automatic Closed-Loop Controller Design
[0181] After the motor model has been estimated with a satisfactory
degree of accuracy, the control system continues in the
self-commissioning process to automatically design the closed-loop
control. Referring again to FIG. 10, the closed-loop control 1008
includes a state-space controller that combines a proportional
current controller 1019 with a position PID controller 1020. The
PID (Proportional-Integral-Derivative) controller has the following
control law:
u = k p e p + k i .intg. e p t + k d e p t ( 22 ) ##EQU00016##
[0182] where u (signal 1018) is the correction signal of the PID
controller, and e.sub.p=r.sub.p-p is the position error 1014, equal
to the reference (commanded) position r.sub.p (signal 1011) minus
the actual position p (signal 1010). The current loop multiplies
the current error e.sub.c=r.sub.c-i (signal 1015), which is the
difference between the current reference value r.sub.c (signal
1021) and the current feedback i (signal 1012), by a current gain
value k.sub.c to produce correction signal 1016. The current
reference values 1021 are supplied to the current feedback loop by
evaluating the motor current equation (10) at each servo processing
interval. The PID correction signal 1018 and current loop
correction signal 1016 are summed to produce the closed-loop
control correction signal 1013.
[0183] For the purposes of closed-loop control design the control
system 1000 ignores nonlinear model terms. By doing so, the
transfer function (position-command to position) of the closed-loop
motor system in Laplace transform space is:
H ( s ) = k d s 2 + sk p + k i k j s 4 + ( m a k c + k a ) s 3 + (
m v k c + k v + k d ) s 2 + sk p + k ( 23 ) ##EQU00017##
[0184] The control system 1000 computes the controller gains
k.sub.p, k.sub.i, k.sub.d, and k.sub.c to provide an acceptable
response by placing the poles (roots of the denominator polynomial
in equation (23)) in a desirable configuration. Note that the use
of the state-space control formulation allows the control system to
place the poles arbitrarily. One such desirable configuration is a
"Butterworth" arrangement, whereby all the poles are placed at a
constant radius .omega. from the origin of the s-plane, equally
spaced, with a specified "spread", or maximum angle .theta. with
respect to the negative real axis. In this case the controller
gains are computed as follows:
k c = 2 .omega. k j ( cos .theta. + cos .theta. 3 ) - k a m a k d =
2 k j ( 2 cos .theta.cos .theta. 3 + 1 ) .omega. 2 - k c m v - k v
k p = 2 k j ( cos .theta. + cos .theta. 3 ) .omega. 3 k i = k j
.omega. 4 ( 24 ) ##EQU00018##
[0185] Many other configurations are possible, as another example,
a pair of complex poles at .omega. and two real poles at higher
frequencies.
[0186] In one embodiment, the control system 1000 uses a spread
.theta. of .+-.20.degree.. The value of the frequency .omega. is
chosen based on desired values for controller resolution.
Controller resolution is defined as the minimum nonzero correction
signal (signal 1013) that can be achieved for a given set of gains.
In a digital control system, feedback quantities, both position and
current, are obtained as discrete integer quantities, thus,
therefore, in this case the smallest possible nonzero position
error equals one count. Multiplying this error by k.sub.p results
in the smallest nonzero correction signal. For example, if
k.sub.p=0.5, then the smallest correction signal is 50% of maximum
(recall that the units of the correction signal, as with the
modulation signal, are expressed in terms of "fraction of maximum
output"); this produces an extremely coarse resolution with only
two possible values of (positive) correction signal. When the
resolution is coarse, the controller approximates the behavior of a
relay feedback element which is known to cause instability; this is
the reason why the control system requires a certain (fine) level
of controller resolution. A specified level of resolution therefore
defines a maximum value for the proportional gains.
[0187] Thus, whatever configuration the control system uses to
calculate the gains, the control system can directly assign the
proportional gains to values of desired resolution. In this
embodiment, the control system uses default resolution values of
1%, and thus sets k.sub.p=0.01 and k.sub.c=0.01. The control system
can then compute corresponding values for frequency .omega. from
equation set (24), as follows:
.omega. c = k c m a + k a 2 k j ( cos .theta. + cos .theta. 3 )
.omega. p = ( k p 2 k j ( cos .theta. + cos .theta. 3 ) ) 1 / 3 (
25 ) ##EQU00019##
[0188] The control system then selects the smaller frequency value
of the two choices .omega..sub.c and .omega..sub.p, and computes
the closed-loop control gains using equation set (24). This
technique provides the desired resolution for the proportional
terms, but as will be described below, the overall desired
closed-loop control resolution is achieved by separate means,
without modifying the value of .omega. chosen using equation set
(25).
[0189] The desired resolution for the integral term controlled by
k.sub.i is achieved by modifying the controller sampling rate. To
illustrate this, consider the following example. Suppose that a
value for .omega. has been computed by the above method (i.e.
derived from proportional gains set to a predetermined resolution).
The integral gain k.sub.i, in units of output-fraction per
count-second, is computed using equation set (24); suppose it's
equal to 40, and the controller servo executes 2000 times per
second (i.e. servo processing interval equals 500 microseconds). At
each servo interval, the control system computes the integral
portion of equation (22) in the following way:
u.sub.i.sub.k=u.sub.i.sub.k-1+k.sub.i'e.sub.p.sub.k (26)
[0190] where e.sub.p.sub.k is the position error (in units of
counts) for the current interval, u.sub.i.sub.k is the correction
output of the integral term for the current interval, and
u.sub.i.sub.k-1 is the correction output of the integral term for
the previous interval. The integral gain k.sub.i' has units of
output-fraction per count-interval, and is therefore scaled using
the servo interval, k.sub.i'=k.sub.iT.sub.s, where T.sub.s is the
interval in seconds per interval. In this example, then, T.sub.s
equals 0.0005, and k.sub.i' therefore equals 0.02. The minimum
value of position error (i.e., one) in this case will increase the
correction output from the previous interval by an amount (as an
output fraction) of 2%, which is twice the desired resolution. The
desired resolution in this case can be achieved by doubling the
servo rate to 4000. Then T.sub.s equals 0.00025, and k.sub.i'
equals 0.01; this was achieved without modifying the value of
k.sub.i. It is apparent, then, that this control system is able, if
necessary, to modify its servo sampling rate during the control
design portion of self-commissioning. Experiments have shown that
this is almost never necessary, however. The computed value of
k.sub.i' normally provides far higher resolution than the
proportional term(s) k.sub.p and k.sub.c. This is not the case for
the derivative term, however.
[0191] The derivative term of equation (22) is formed by
multiplying a scaled version of the derivative gain k.sub.d by an
estimate of the derivative of the position error, as in the
following equation:
u.sub.d.sub.k=k.sub.d'd.sub.n.sub.k (27)
[0192] where u.sub.d.sub.k is the derivative term for the current
servo interval, k.sub.d' is the scaled derivative gain, and
d.sub.n.sub.k is the derivative estimate for the current servo
interval. The derivative estimate may be calculated using the
following equation:
d.sub.n.sub.k=e.sub.p.sub.k-e.sub.p.sub.k-n+1 (28)
[0193] where e.sub.p.sub.k is the position error for the current
interval, and e.sub.p.sub.k-n is the position error for n intervals
in the past. Often, n=2, and in this case e.sub.p.sub.k-n+1 is the
position error for the previous interval; however, larger values of
n are sometimes used when the servo rate is high. The minimum
correction output is that obtained for a step change of one count
in position error; the output, and therefore the resolution of the
derivative term, is the value of k.sub.d.sup.1. The gain
k.sub.d.sup.1 used in the servo loop is scaled in an analogous
manner to that described above for the integral gain, as
follows:
k d ' = k d T s ( n - 1 ) ( 29 ) ##EQU00020##
[0194] It is apparent from the above equation that the resolution
of the derivative term (i.e., the value of k.sub.d') decreases as
the servo rate is increased. To raise the derivative resolution
(i.e. lower the value of k.sub.d'), the servo rate can be decreased
(corresponding to a larger value of T.sub.s) or the value of n can
be increased. Neither of these is always desirable or achievable,
however. Most control systems normally set a conservative lower
limit to the servo rate. For example, the control system may
determine that the servo rate must be at least 25 times the
closed-loop bandwidth (i.e., .omega.); in this case, the maximum
allowable value for T.sub.s is calculated as follows:
T s = 2 .pi. 25 .omega. ( 30 ) ##EQU00021##
[0195] The controller cannot use a larger value than this maximum
value for T.sub.s in order to increase derivative resolution. Using
a large value of n effectively low-pass-filters the derivative, but
if n is too large, then the filter break-point approaches the
frequency .omega. and the filter delay increases, both of which can
degrade closed-loop control performance.
[0196] This controller solves this problem by applying a boxcar
derivative function to compute the derivative estimate, filter it,
and amplify the result. The boxcar derivative function of length n
is defined as:
d n k = e p k + + e p k - n 2 + 1 - e p k - n 2 - - e p k - n + 1 (
31 ) ##EQU00022##
if n is an even number, or:
d n k = e p k + + e p k - n 2 + 1 - e p k - n - 1 2 - 1 - - e p k -
n + 1 ( 32 ) ##EQU00023##
if n is odd. For example, a boxcar derivative of length six is
computed as:
d.sub.6.sub.k=e.sub.p.sub.k+e.sub.p.sub.k-1+e.sub.p.sub.k-2-e.sub.p.sub.-
k-3-e.sub.p.sub.k-4-e.sub.p.sub.k-5 (33)
and the boxcar derivative of length five is computed as:
d.sub.5.sub.k=e.sub.p.sub.k+e.sub.p.sub.k-1-e.sub.p.sub.k-3-e.sub.p.sub.-
k-4 (34)
[0197] Note that the boxcar derivative of length two is equivalent
to the traditional technique of equation (28) for n=2.
[0198] The derivative term is now computed as follows:
u.sub.d.sub.k=k.sub.d''d.sub.n.sub.k (35)
[0199] In the traditional technique defined by equations (27) and
(28), the output (of the difference in position error) is amplified
by a factor of n-1; this is reflected in equation (29). The
amplification factor can be computed by computing the output
produced by a sequence of position errors with constant slope
(i.e., derivative) equal to R counts per servo interval. Using the
boxcar derivative function of equation (31), however, it is
apparent that the amplification factor is now approximately equal
to n.sup.2/4 (this applies exactly when n is even). Thus the
derivative gain k.sub.d'' used by the servo loop can be reduced by
this same factor:
k d '' = 4 n 2 T s k d ( 36 ) ##EQU00024##
[0200] For the same length (and hence, approximately equal filter
break frequency) n, the boxcar derivative has much larger
amplification factor. For example, for n=8 the boxcar derivative
has twice the amplification of the traditional method; for n=16,
the amplification is about four times as great. This allows the
controller to use a reduced value for filter length n compared to
the traditional method. The boxcar derivative is also extremely
efficient to compute; for n even, the computation is as
follows:
d n k = d n k - 1 + e p k + e p k - n - 2 e p k - n 2 ( 37 )
##EQU00025##
[0201] To achieve the desired correction output resolution for the
derivative term, then, the control system first (and optionally)
adjusts the value of T.sub.s to the largest value deemed feasible
(e.g. that set by equation (30)). The value of T.sub.s is also not
allowed to be larger than the value specified by the integral term
resolution, as described above. Now the filter length is defined
by:
n = 4 k d T s k d '' ( 38 ) ##EQU00026##
[0202] where k.sub.d'' is this case has the value of the desired
resolution (e.g., 0.01). The value of n is then increased to be the
next integral even number.
[0203] The control system may sometimes find that the choice of
frequency using the above method produces a negative value for
current gain k.sub.c. This can occur when encoder resolution is low
or when the electrical time constant is small. In this case the
control system sets k.sub.c=0. However, now the control system
cannot place poles arbitrarily, and the control system proceeds to
place a complex pair at the value of .omega..sub.p computed using
equation (25) and the spread .theta., and a second pair at a spread
.theta./3; in this case the frequency of the second pole pair is
given by:
.omega. 2 = k a k j - 2 .omega. p cos .theta. 2 cos .theta. 3 ( 39
) ##EQU00027##
[0204] and the resulting gains are:
k p = 2 k j ( cos .theta..omega. p .omega. 2 2 + cos .theta. 3
.omega. p 2 .omega. 2 ) k i = k j .omega. 2 2 .omega. p 2 k d = k j
( .omega. p 2 + .omega. 2 2 + 4 cos .theta.cos .theta. 3 .omega. p
.omega. 2 ) - k v ( 40 ) ##EQU00028##
[0205] If the value of .omega..sub.2 is less than .omega..sub.p,
this indicates that resolution for the proportional term is not a
constraint, and in this case a solution for the gains is found in
which .omega..sub.2=.omega..sub.p. Note that when k.sub.c=0, the
entire current loop is disabled, and there is no further need to
measure or record current feedback (signal 1012 shown in FIG. 10),
nor to estimate or use the current model equation (10). This forms
an alternate embodiment of a lower-cost control system that does
not provide current feedback.
[0206] The above closed-loop control design procedure leads
naturally to a system that has good transient response
characteristics and is achieved without moving the motor.
[0207] As noted above, sometimes a reliable estimate for the jerk
coefficient k.sub.j is not obtained. When this happens, for the
purposes of closed-loop control design the control system simply
uses the value of zero, and computes a closed-loop control based on
three poles equally spaced around a circle. Additionally, the value
of k.sub.j may be very small, which leads to excessive values for
the derivative gain (k.sub.d) even when the derivative gain is
computed using a long boxcar derivative function. In this case the
pole placement design is changed from two complex pole pairs to a
single pair, plus a real pole at the same distance (thus forming
three poles on a circle), plus a real pole at a much higher
frequency.
[0208] Once the control system has computed a closed-loop control
design (i.e., computed the gains), the control system tests the
design by enabling control with the computed controller parameters,
and then commanding a series of small step responses. The
immediately following time history of the position error (for a
time period of, e.g., 0.5 seconds) is analyzed; if the response is
too oscillatory, the frequency .omega. is reduced (e.g. by
multiplying it by 0.85), the spread .theta. is also optionally
reduced, and new closed-loop control gains are computed using
equations (24), (40), or other equations that may apply for the
chosen pole configuration, and the step response check repeated,
until the response is acceptable.
[0209] The control system may optionally repeat the above
closed-loop control design sequence for a number of alternate
closed-loop control designs. For example, the controller may
anticipate the need to perform both step and scan motion functions;
a PID controller may be preferred when responding to a step motion
command, but a PD controller may be preferred when responding to a
scan command. Therefore, one or more alternate controllers, such as
a PD controller, may be designed at this time, as part of the
self-commissioning process. The computed parameters (e.g. gains) of
alternate controllers are stored so that an alternate controller
may be enabled and operated at a later time.
[0210] As described earlier, the motor position may be offset in
time from that corresponding to the feedforward signal, to
compensate for the natural delay in servo processing. Therefore,
the reference values presented to the feedback controller (signal
117 in FIG. 1) correspond to a time (e.g. 357 microseconds) later
than the feedforward value (signal 119 in FIG. 1).
Embodiment for Brushless Motors
[0211] An embodiment for brushless (electronically commutated)
motors is now described. This type of motor is described by the DC
brush motor model described in equations (9) and (10), however, in
this case the commutator (block 123 shown in FIG. 1) is used, and
the parameters for its commutation function(s) must also be
obtained or estimated. All commutation functions repeat at a given
period, and have a position offset. For convenience, the control
system defines a universal rotation function that, given a motor
position p, returns a value between zero and one indicating the
motor's position within the commutation interval:
C ( p ) = ( p - c 0 ) mod c p c p ( 41 ) ##EQU00029##
[0212] Particular commutation functions can be defined in terms of
the function C; and thus the phase-finding step of the
self-commissioning process (block 301 shown in FIG. 3) involves
estimating the parameters c.sub.o and c.sub.p. There are two common
types of brushless motors, each with its own commutation function:
[0213] 1. Trapezoidal-EMF waveform, switched commutation, typically
referred to simply as brushless DC motors. These motors may
sometimes supply Hall sensor outputs, one for each phase, to serve
as commutation inputs. The commutation function simply switches the
specified modulation signal (signal 120 shown in FIG. 1) into
different phases at different positions:
[0213] e A = { e , 0 .ltoreq. C < 1 / 3 - e , 1 / 2 .ltoreq. C
< 5 / 6 0 otherwise e B = { e , 1 / 6 .ltoreq. C < 1 / 2 - e
, 2 / 3 .ltoreq. C < 1 0 otherwise e C = { e , 1 / 3 .ltoreq. C
< 2 / 3 - e , C > 5 / 6 or C .ltoreq. 1 / 6 0 otherwise ( 42
) ##EQU00030## [0214] 2. Sinusoidal-EMF waveform, sinusoidal
commutation, typically referred to as PMSM (Permanent Magnet
Synchronous Motor) or brushless AC motor. In this case the
commutation function is sinusoidal:
[0214] e.sub.A=esin(2.pi.C) (43)
e.sub.B=esin(2.pi.C+2.pi./3)
e.sub.C=esin(2.pi.C+4.pi./3)
[0215] The commutation function parameters are estimated for the
particular motor type as described above.
[0216] Once the commutation function parameters have been
estimated, the remainder of the self-commissioning process
described in the DC brush motor embodiment is carried out, in
exactly the same way as described above.
[0217] A number of embodiments of the invention have been
described. Nevertheless, it will be understood that various
modifications may be made without departing from the spirit and
scope of the invention. For example, the control system may use a
modulator that controls current rather than one which controls
voltage. The computation of trajectory profiles may be performed
using closed-form mathematical formulae, rather than the iterative
logic illustrated in FIG. 4.
[0218] Trajectory planning may be accomplished directly in the
modulation signal domain, that is, the trajectory planning
algorithm may directly construct a voltage waveform (rather than
constructing an acceleration waveform), adjusting the voltage
waveform to satisfy the motion constraints. This technique may be
advantageously used in the context of optimum discontinuous
control, where the output fraction is set to either +1 or -1 to
effect, for example, step motion. In this method, the motor model
is also used to help design the applicable closed-loop controller
(e.g. via computing the parameters of a switching curve), said
controller implicitly including the motion planner.
[0219] Trajectory planning may use one or more trapezoid
acceleration pulses whereby jerk, maximum acceleration, and maximum
velocity are used as parameters instead of pulse time, peak
acceleration, and acceleration fraction.
[0220] The motor control system may be adapted for cases in which
the motor control signal is not directly proportional to the
modulation signal. In the case of an unregulated DC voltage source,
the control system may apply the motor control signal by measuring
the instantaneous input voltage and adjusting the modulation signal
accordingly. The control system may record the motor control signal
by recording the value of both the modulation signal and the input
voltage, so that the effective motor control signal can be
computed. For example, a voltage source may provide a voltage that
varies from 80 to 130 volts; in this case the maximum motor control
signal is presumed to be 80 volts, since the maximum signal is
preferably always available for application to the motor. The
controller may apply a motor control voltage of 50% of maximum
output (40 volts) by measuring the instantaneous input voltage and
setting the modulation signal to the value required to produce 40
volts; e.g. 50% for an input voltage of 80 volts, 33.3% for 120
volts, etc. The controller computes a recorded value for the motor
control signal by recording both modulation signal and input
voltage; if the recorded value of the modulation signal is 25% and
the recorded value of input voltage is 90 volts, then the computed
motor control signal is 22.5 volts; this may be converted to the
controller's output-fraction units by dividing by 80 volts, to
produce a computed value of the recorded motor control signal of
28.1%.
[0221] A similar method may be used in the case of an AC input
voltage source. In this case the control system may measure the
instantaneous voltage across all available phases, then it will
both select the phase lines to modulate and adjust the modulation
signal, in order to provide the correct commanded voltage to the
motor.
[0222] The control system may use a PID closed-loop control in
which the derivative term is computed by providing a velocity
setpoint r.sub.v from the trajectory generator (said setpoint is
already computed in order to compute the feedforward), estimating
the actual velocity v during each servo processing interval,
computing the velocity error e.sub.v=r.sub.v-v and computing the
derivative term as k.sub.d(r.sub.v-v).
[0223] The closed-loop control (shown as element 111 in FIG. 1) may
be any type of closed-loop controller known in the art and is not
limited to the state-space closed-loop controller illustrated in
FIG. 10.
[0224] The control system may use any known motor model for the
particular type of motor, for example, the motor model equation (9)
shown above may be augmented with a position-dependent term, e.g.
+k.sub.pp, or other terms. This type of motor model may be utilized
to model systems that might include position-dependent forces
(pushing on a spring, for example).
[0225] The control system may use a describing function other than
a polynomial for computing derivatives of position. Any describing
function that relates position to time, and is differentiable in
order to compute position derivatives, may be used. For example, a
sum of sinusoids can be used.
[0226] The control system may be adapted to receive and utilize
other forms of position feedback than feedback from an optical
encoder. For example, an ADC reading of a resolver can be obtained,
along with the exact time at which its input sample-and-hold
circuit was latched, to provide a corresponding position/time pair.
A magnetic encoder or potentiometer can also be used.
[0227] The control system may be adapted to use a state estimator
or observer to estimate position and/or current in cases where
enhanced accuracy of position or current feedback may be obtained
(e.g. when current measurements are determined to be noisy). In
addition to using the state estimator, information (i.e. motor
model equation coefficients) obtained during the self-commissioning
process may be used to design one or more state estimators, in a
manner analogous to the automatic design of a closed-loop
controller described above.
[0228] The control system may be adapted to incorporate an
estimator or observer for additional motor states, e.g. a torque
disturbance estimator, and the motor model used to design such
estimators.
[0229] The control system may use a technique to update the motor
model and other control system parameters (shown as element 204 in
FIG. 2) that is different than the model estimation technique used
for self-commissioning and described above. For example, an
auto-regression estimator or iterative-learning-controller may be
used for this element. The control system may use information
derived from the motor model coefficients obtained during the
self-commissioning process to design the element(s) used for model
and controller update.
[0230] The control system may use a variety of commutation
functions not described above, that may be advantageous for certain
motors. For example, a commutation function may be piecewise-linear
or a sum-of-sinusoids.
[0231] The control system may be adapted to use functions other
than the boxcar derivative function described above, to compute the
derivative estimate used by a PID or PD control element. For
example, convolution with the first derivative of a Gaussian, a
Lanczos differentiator filter, or the Kaiser window technique, may
be used.
[0232] The functions of the control system may be distributed among
one or several different computers. For example, the trajectory
generator, closed-loop control, and encoder interface may be
realized as a stand-alone low-cost module, and the model fitting,
trajectory generation, and other functions may be realized as a
software module that runs on the user's computer (e.g., personal
computer or industrial controller). The modules can be implemented
in any of the suitable technologies known in the art, e.g. fixed
semiconductor logic chip(s), FPGA (Field-Programmable Gate Array),
DSP (Digital Signal Processor), and microprocessor. The modules can
be implemented separately in many combinations on such hardware
modules, said modules then interconnected by means known in the
art, e.g. circuit board connection, PCI bus, VME/VXI bus, RS-232,
Ethernet, DeviceNet, CAN (Controller Area Network).
[0233] The control system may be configured to attach temporarily
to a motor/load/modulator system in order to perform the
self-commissioning function(s) as described above. The controller
can then, instead of directly performing the motion control
functions, compute and transmit parameters (both for closed-loop
control, e.g. gains, and for trajectory planning and generation)
for storage or use on a separate, target, motion controller. For
example, a self-commissioning instrument could be made for a
manufacturer's existing motion controller in such a way. Such an
instrument can add only the required hardware functions (e.g.
encoder interface and/or servo data recording) as a plug-in module
to the target controller, or it can be a separate instrument to
which the motor and modulator are connected for the duration of
self-commissioning. In such a case the parameters would also be
converted to a form appropriate for the target controller, and
could also be stored implicitly in the form of programs or other
modules that can be transmitted to a target controller when
desired.
[0234] Accordingly, other embodiments are within the scope of the
following claims.
* * * * *