Adaptive Torque Disturbance Cancellation for Electric Motors
20200336093 ยท 2020-10-22
Inventors
- David L. Wilson (Muskego, WI, US)
- Jorge Zambada Tinoco (San Diego, CA, US)
- David Patrick Magee (Allen, TX)
Cpc classification
H02P2205/07
ELECTRICITY
H02P6/10
ELECTRICITY
H02P23/04
ELECTRICITY
International classification
H02P23/04
ELECTRICITY
H02P23/00
ELECTRICITY
Abstract
An adaptive torque disturbance cancellation method and motor control system for rotating a load are described. The system has: (i) a speed controller for receiving a first input signal indicating a desired motor speed and, in response, for outputting a motor control signal; (ii) current sensing circuitry for sensing current through a motor that rotates in response to the speed controller; (iii) circuitry for storing, into a storage device, history data representative of the current through a motor when the motor operates to rotate the load; and (iv) circuitry for modifying the motor control signal in response to the history data.
Claims
1. A motor control system comprising: a controller configured to: receive a first feedback signal corresponding to motion of a motor; and provide a first control signal based on the first feedback signal; a compensator circuit that includes a data storage device configured to store a table, wherein the compensator circuit is configured to: receive a second feedback signal corresponding to motion of the motor, a position signal corresponding to a position of the motor, and a learning rate signal; provide a second control signal based on the position signal and the table; update a value in the table that corresponds to the position signal based on the second feedback signal and the learning rate signal; and an adder coupled to the controller and the compensator circuit and configured to: receive the first control signal and the second control signal; and provide a third control signal configured to command motion of the motor based on the first control signal and the second control signal.
2. The motor control system of claim 1, wherein the compensator circuit includes: a first scaling device configured to: receive the second feedback signal and the learning rate signal; and provide a first scaled signal based on the second feedback signal and the learning rate signal; and a second scaling device configured to: receive the value in the table that corresponds to the position signal and the learning rate signal; and provide a second scaled signal based on the value and the learning rate signal, wherein the compensator circuit is configured to update the value based on the first scaled signal and the second scaled signal.
3. The motor control system of claim 2, wherein: the adder is a first adder; and the compensator circuit includes a second adder coupled to the first scaling device and the second scaling device and configured to: receive the first scaled signal and the second scaled signal; and provide a third scaled signal based on a sum of the first scaled signal and the second scaled signal, wherein the compensator circuit is configured to update the value based on the third scaled signal.
4. The motor control system of claim 1, wherein: the value in the table that corresponds to the position signal is a first value; and the compensator circuit is configured to: receive a position advance signal; and provide the second control signal based on a second value in the table that corresponds to the position signal and the position advance signal.
5. The motor control system of claim 1, wherein: the adder is a first adder; and the motor control system further includes a second adder coupled to the first adder and configured to: receive the third control signal and the second feedback signal; and provide a fourth control signal based a difference between the third control signal and the second feedback signal.
6. The motor control system of claim 5 further comprising a torque controller coupled to the second adder and configured to: receive the fourth control signal; and provide a drive signal for the motor in response to the fourth control signal.
7. The motor control system of claim 6, wherein the torque controller is configured to provide the drive signal based on a proportional-integral control function.
8. The motor control system of claim 1, wherein the first feedback signal corresponds to a velocity of the motor and the second feedback signal corresponds to current through the motor.
9. The motor control system of claim 1, wherein the position signal corresponds to an angular position of the motor.
10. The motor control system of claim 1, wherein: the adder is a first adder; and the motor control system further includes a second adder coupled to the controller and configured to: receive a velocity command signal and a third feedback signal corresponding to a velocity of the motor; and provide the first control signal based on a difference between the velocity command signal and the third feedback signal.
11. The motor control system of claim 1, wherein the compensator circuit is configured to disable updating of the table in response to a measure of a change in the table being below a threshold.
12. A method comprising: receiving a first feedback signal corresponding to motion of a motor; providing a first control signal based on the first feedback signal; receiving a second feedback signal corresponding to motion of the motor, a position signal corresponding to a position of the motor, and a learning rate signal; providing a second control signal based on a value of a table that corresponds to the position signal; updating the value based on the second feedback signal and the learning rate signal; and providing a third control signal configured to command motion of the motor based on the first control signal and the second control signal.
13. The method of claim 12 further comprising: providing a first scaled signal based on the second feedback signal and the learning rate signal; providing a second scaled signal based on the value and the learning rate signal; and updating the value based on the first scaled signal and the second scaled signal.
14. The method of claim 13 further comprising: adding the first scaled signal and the second scaled signal to produce a third scaled signal; and updating the value based on the third scaled signal.
15. The method of claim 12, wherein the value of the table that the second control signal is based on corresponds to a sum of the position signal and a position advance signal.
16. The method of claim 12 further comprising: providing a fourth control signal based on the third control signal and the second feedback signal to a torque converter; and providing, using the torque converter, a drive signal for the motor in response to the fourth control signal.
17. The method of claim 12, wherein the first feedback signal corresponds to a velocity of the motor and the second feedback signal corresponds to current through the motor.
18. The method of claim 17 further comprising providing the first control signal based on a difference between a commanded velocity command and the velocity of the motor.
19. The method of claim 12, wherein the position signal corresponds to an angular position of the motor.
20. The method of claim 12, further comprising disabling updating of the table in response to a measure of a change in the table being below a threshold.
Description
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
DETAILED DESCRIPTION OF EMBODIMENTS
[0016]
[0017]
[0018] System 30 of
[0019] (1) .sub.m: angular position of motor 12 (i.e., rotational angle of its shaft 12.sub.SH), either measured directly from motor 12 or estimated by an angle observer;
[0020] (2) .sub.adv: an angle advance signal that accounts for timing delays between a read from a look-up table (LUT) of feed-forward compensator 32 and the application of the torque controller command, S.sub.D, to the motor 12;
[0021] (3) LR: a learning rate coefficient, which indicates a rate at which feed-forward compensator 32 updates its LUT so as to converge its feed-forward current component i.sub.ff to a relatively consistent periodic waveform; and
[0022] (4) I.sub.M: the measured current from sensors (not separately shown in
[0023] As will be detailed below, in response to the above four inputs, feed-forward compensator 32 adjusts the feed-forward current component i.sub.ff and that signal is added to the output signal of speed controller 18 by adder 34, with the sum of those two signals representing the commanded current I.sub.C input to error generator 20. Thus, feed-forward compensator 32 may modify the commanded current I.sub.C input to adder 34 so as to provide an output current I.sub.C to error generator 20, which thereafter operates as described earlier and understood to one skilled in the art. The modification to I.sub.C, therefore, reduces the effects of periodic torque disturbances from the load 12.sub.L, as further understood below.
[0024]
[0025] The operation of feed-forward compensator 32, in the context of system 30 is now described. Initially, the data in the LUT is zeroed and a commanded velocity V.sub.C signal is applied to system 30, which, prior to any feedback will pass to speed controller 18 and adder 34; meanwhile, the value of a feed-forward current component i.sub.ff is selected as the FETCH 2 value from the LUT, but because the LUT is initially zeroed, then the feed-forward current component i.sub.ff is also zero and therefore provides no offset to the output of speed controller 18. Hence, initially adder 34 provides a commanded current I.sub.C based solely on the speed controller output signal I.sub.C. The current command is also initially unaffected through error generator 20 as there is not yet a feedback measured current I.sub.M, so the unchanged value is processed by torque controller 22 to provide the signal(s) S.sub.D to start motor 12 operating. Once such operation occurs, however, measured current I.sub.M starts to rise, and that value is fed back not only to error generator 20, but also as an input to feed-forward compensator 32.
[0026] As measured current I.sub.M is fed back to feed-forward compensator 32, it is used to update the LUT at the measured angle value .sub.m of shaft 12.sub.SH. For example, if I.sub.M=x amps at .sub.m=y degrees, then the LUT is updated with a scaled version of those x amps, at a table entry indicated by pointer PTR.sub.1 for the address corresponding to y degrees. More particularly, as measured current I.sub.M is fed back into feed-forward compensator 32, it is scaled according to the learning rate LR, which preferably is a value between zero and one. Moreover, the larger the value of LR, the more quickly feed-forward compensator 32 begins to influence the signal applied to motor 12. Such influence occurs first by way of first scaling device 40, which scales I.sub.M by LR, after which the scaled value is added, by adder 44, to one minus that LR scale factor times a FETCH 1 output from the LUT, where the FETCH 1 output is taken from the memory location in the LUT denoted by pointer PTR.sub.1, corresponding to the measured angle .sub.m. The sum determined by adder 44 is then stored in the LUT, that is, it provides an update to the LUT, as a data point for x scaled amps at the same table location corresponding to .sub.m=y degrees. Pointer PTR.sub.1 is included in
[0027] Preferred embodiments benefit from the LUT data converging in a stable fashion. In this regard, the update equation for the LUT current values, i.sub.LUT, can be written as the following Equation 1:
i.sub.LUT[m,n+1]=LR.Math.i[m,n]+(1LR).Math.i.sub.LUT[m,n]Equation 1
where,
[0028] m is a mechanical angle index
[0029] n is the sample number
[0030] LR is a convergence constant, with 0LR1, and LR=0 means that the LUT current value is not updated while LR=1 means that the LUT current value is equal to the measured current value (as to the latter, if one substitutes LR=1 into Equation 1, the result is i.sub.LUT[m,n+1]=i[m,n], thereby indicating there is no averaging, as the new LUT value is the same as the measured value). The update Equation 1 is guaranteed to be stable over the LR range indicated above. Smaller LR values ensure more averaging at each mechanical angle.
[0031] Further, as mentioned above, at initialization/startup time, the LUT values are all initialized to zero. The angle resolution of the LUT table, , can be determined from the following Equation 2:
where, N is the number of points in the LUT for one mechanical revolution.
[0032] To determine a particular mechanical angle index, the following Equation 3 can be used:
where mod( ) is the modulo operator.
[0033] Given the preceding discussion, as the LUT is updated as described above and its waveform converges on a same shape as the current level that is proportional to the torque disturbance waveform, then at the same time it provides a FETCH 2 output as the compensated feed-forward current component i.sub.ff. Thus, the feed-forward current component i.sub.ff will converge to an angle dependent waveform whose values can be used to anticipate the change in load torque as shaft 12.sub.SH rotates and compensating on the fly with a historic record of how that change will occur, with that record being the waveform in the LUT. In this regard, it is recognized in connection with a preferred embodiment that as shaft 12.sub.SH is at a measured angle .sub.m, then a value of current i.sub.LUT could be selected at that angle and used as the current to be instantaneously applied to motor 12. However, it is further recognized that there are delays due to table reading, computation time, electronic delay, etc. Thus, to determine which LUT current value to use for the feed-forward component, the latency of the system should be considered when determining the correct LUT current value to use. This time latency, T.sub.tat, contributes to an angle advance needed to read the correctly addressed value from the LUT as the motor rotates at a given mechanical speed, .sub.m, which has units of rad/sec. The angle advance can be calculated using the following Equation 4:
[0034] The angle used to read the LUT current value for feedforward compensation can be determined using the following Equation 5:
.sub.ff[n]=.sub.m[n]+.sub.adv[n]Equation 5
where,
[0035] .sub.ff[n] is angle used to read the LUT current value for feedforward compensation and corresponds to the memory address denoted by pointer PTR.sub.2;
[0036] .sub.m[n] is the mechanical angle of motor 12; and
[0037] .sub.adv[n] is the mechanical angle advance to account for the system latency.
[0038] As a result, the .sub.adv input provides an angular advancing offset, so as to advance the read location in the LUT into the future by a small amount relative to the present location of the motor shaft, so that the resulting current read from the LUT will be very close to the desired value needed to compensate the torque disturbance as the mechanical angle reaches that point in time when the control command is actually applied to the motor; this advancement is shown in
[0039] to yield the following Equation 7:
[0040] Thus, the feedforward current component at sample number n can be written as the following Equation 8:
i.sub.ff[n]=i.sub.LUT[m.sub.ff[n],n]Equation 8
[0041] From the above, note that as feed-forward compensator 32 operates, its LUT will become populated with values that resemble the measured current waveform at a rate determined by the learning rate LR input, with that input therefore defining the aggressiveness of how fast compensator 32 stores data (i.e., learns) representing distortion in current due to the periodic torque disturbance. If the torque disturbance waveform is fairly repeatable from cycle to cycle, then the learning rate can be set to a higher value, which results in noise cancellation almost immediately. However, if the torque disturbance waveform has a basic shape but is not exactly the same from cycle to cycle, then the learning rate should be set to a lower value, which results in the LUT waveform representing the average shape of the torque disturbance over several cycles. In a preferred embodiment, therefore, in most applications, the learning rate LR input should only need to be set once at initialization.
[0042] In another aspect of a preferred embodiment, the LUT methodology update can be periodically enabled and disabled, for example so as to save power (e.g., eliminating processing MIPS) at times when the LUT data is sufficient so as to cancel torque disturbance beyond a particular threshold. In this regard, in a preferred embodiment, an error measure, e[n] can be defined as shown in the following Equation 9:
e[n]=i.sub.LUT[m,n+1]i.sub.LUT[m,n]Equation 9
Given Equation 9, in this preferred embodiment, if an absolute value of e[n] satisfied (e.g., falls below) a threshold (e.g., 0.001 A=1 mA), the LUT update process is disabled, such as for a period of time. During this disabled time period, therefore, processing power is saved. The process may be re-enabled later, in response to one more conditions (e.g., passage of time; new torque load; a stop and re-start of motor 12, etc.).
[0043]
[0044]
[0045]
[0046] The feedback side of the control loop in system 30 receives feedback signals from multiple sources, all such sources based on sensors at motor 12 and corresponding sense circuits 12.sub.SR. One source of feedback signals is a set of current sample streams produced by ADC 64 based on output from sense circuits 12.sub.SR, and which represent currents induced in the stator windings by the rotor of motor 12 as it rotates. Current sample streams from ADC 64 are applied to a Clarke transform function 66 to produce spatially fixed and phase feedback signals transforming the three-phase time invariant system of differential equations into a two coordinate time variant system. These transformed feedback signals are input to a Park transform function 68, which in turn produces direct and quadrature phase feedback currents Id, Iq, respectively. An N.sub.pp (number of pole pairs of the motor) block 70 transforms the mechanical angle, .sub.m, to an electrical angle .sub.e, which is connected to Park transform function 68 and to an inverse Park transform function 54.
[0047] Given the preceding, both the generalized