Home | Classical Feedback Control | Previous | Next |
Please refer to the beginning of this document for copyright information and use permissions.
In this section an example of the implementation of a loop response with a Bode step is considered. This response has been used as a prototype for several practical control systems.
Example 1. The plant
is a double integrator with an n.p. lag. The compensator function C(s) is a ratio of a 3rd-order to a 4th-order polynomials (the compensator design methods are described in the next chapter). The loop transfer function
is plotted in Fig. 4.3 with
n = conv([11 55 110 36], [-1 10]); d = conv([1 7.7 34 97 83 0 0], [1 10]); w = logspace(-1,1,200); bode(n,d,w)
Fig. 4.3 Open-loop frequency response |
Fig. 4.4 L-plane Nyquist diagram |
The crossover frequency = 1_{ }rad/sec. The L-plane Nyquist diagram is plotted in Fig. 4.4 with
[mag, phase] = bode(n,d,w); plot(phase,20*log10(mag),'w', -180,0,'wo'); grid
The slope of the loop gain at lower frequencies approaches -12 dB/oct and the loop phase shift approaches -180°. This response provides larger feedback at lower frequencies than the response in Fig. 4.2(b) following the stability margin boundary in Fig. 4.2(a) but violates the stability margin at these frequencies. To ensure stability and good transient responses to large commands and disturbances (which saturate the actuator), the loop compensation must be nonlinear. Such compensation is described in the end of this example and explained at length in Chapters 10, 11, and 13.
The closed-loop transfer function M = n/g where g = n + d is plotted in Fig. 4.5 with
n = conv([0 0 0 1],n); g = n + d; w = logspace(-1,1,200); bode(n,g,w)
(The zeros are added to n
to make the dimensions of vectors n
and
d
equal so that MATLAB can calculate
g
.)
Fig. 4.5 Closed-loop frequency response |
Fig. 4.6 Closed-loop step-response |
As should be expected, the closed-loop step-response plotted
by step(n,g)
and shown in Fig. 4.6 has a
large, 55% overshoot. The overshoot can be reduced by introduction of a
prefilter R(s).
The command-to-output response of the system with the prefilter should be close to the response of a linear phase (Bessel, or Gaussian) filter. This can be achieved by using a notch prefilter
.
The notch is tuned to 0.9 with the gain at this frequency equal to 20 log(1/2) = - 6 dB. In the case considered, = 1. The prefilter response is plotted in Fig. 4.7 with
nr = [1 1 0.81]; dr = [1 2 0.81]; bode(nr, dr, w)
and the closed-loop response with the prefilter is plotted in Fig. 4.8 with
nc = conv(nr, n); gc = conv(dr, g); bode(nc, gc, w)
The phase response in Fig. 4.8 has a lesser curvature
than that in Fig. 4.5. We might therefore expect a better transient
response. Indeed, the overshoot is only 7% on the step-response for the
closed-loop system with the prefilter plotted by
step(nc,gc)
and shown in Fig. 4.8; the
rise time and the settling time remain approximately the same.
Fig. 4.7 Prefilter frequency response |
Fig. 4.8 Closed-loop response of |
Fig. 4.9 Closed-loop step-response |
Fig. 4.10 Closed-loop step-response |
The gain response in Fig. 4.8 still has a hump at = 1 which contributes to the phase nonlinearity and to the overshoot. By compensating for the hump with a small, 1.6_{ }dB additional notch with
nr2 = [1 0.5 1]; dr2 = [1 0.6 1]; nc2 = conv(nr2, nc); gc2 = conv(dr2, gc); bode(nc2, gc2, w) step(nc2, gc2)
one can further reduce the overshoot as shown in Fig. 4.10. A still better and more economical equalization can be devised and implemented.
The equalization becomes less accurate when the plant parameters deviate from the nominal. The plant gain variations can be specified by a multiplier k. The effects of variations in k can be calculated as follows:
n = conv([11 55 110 36], [-1,10]); d = conv([1 7.7 34 97 83 0], [1 10]); k = 1; n = conv(n, k); % specify k w = logspace(-1,1,200); bode(n, d, w) % open-loop response [mag, phase] = bode(n, d, w); plot(phase, 20*log10(mag)) % Nyquist diagram grid n = conv([0 0 1], n); g = n + d; bode(n, g, w) % closed-loop response nr = [1 1 0.81]; dr = [1 2 0.81]; bode(nr, dr, w) % prefilter notch response nc = conv(nr, n); gc = conv(dr, g); bode(nc, gc, w) % closed-loop response with notch nr2 = [1 0.5 1]; dr2 = [1 0.6 1]; bode(nr2 ,dr2, w) % second notch response nc2 = conv(nr2, nc); gc2 = conv(dr2, gc); bode(nc2, gc2, w) % closed-loop response with notches step(nc2, gc2) % step response with notches
For ±20% variations in the plant gain coefficient, the step-responses are shown in Fig. 4.11. The overshoot remains less than 10%.
(a) | (b) |
Fig. 4.11 Closed-loop step-responses of the system with notches,
(a) for k = 1.2 and k = 0.8 and (b)
for k = 2.5
When the plant's gain coefficient increases to 2.5, i.e., the plant's gain increases by 8 dB from the nominal thus reducing the gain stability margin to only 2 dB, the transient response becomes oscillatory as shown in Fig. 4.11(b); still, this is not a catastrophic failure of the controller.
With ± 40% variations in k the overshoot remains under 20%, and with k 3.2 (i.e., with 20 log k = 10.1 > x) the output starts growing exponentially; the proof (simulation) is left as a recommended student exercise. It is also recommended to make simulations with small (say, 5%) variations in the coefficients of the polynomials in the compensator transfer function and to observe that these changes do not critically affect the system performance, and therefore, the coefficients can be appropriately rounded.
To ensure that large-amplitude commands which overload the actuator will not trigger self-oscillation, and to improve the transient responses for large-amplitude commands, the compensation can be made nonlinear. This is done by, first, splitting the compensator transfer function C(s) into the sum of two functions C_{1}(s) and C_{2}(s) which represent transfer functions of two parallel paths, the first path being dominant at lower frequencies; and second, by placing a saturation link with an appropriate threshold in front of the first path's linear link. The related theory and design methods are described in Chapters 10, 11, and 13. The transfer functions of the paths can be found as
C_{1} = a_{o}/(s + p_{1}) and C_{2} = [C(s) - C_{1}(s)]
where p_{1} is the lowest pole of
C(s) (p_{1} can be 0), and a_{o} is
its residue. For finding p_{1} and
a_{o }, the MATLAB function
residue
or the function
bointegr
from the Bode Step toolbox in
Appendix 14 can be used.
Example 2. A dc motor rotates a spacecraft radiometer antenna whose moment of inertia J = 0.027 Nm^{2}. is the antenna angle, s is the antenna angular velocity, and U is the voltage applied to the motor. The motor winding resistance R = 2. The motor constant (the torque-to-current ratio) k = 0.7_{ }Nm/A. The torque is k(U - E_{B})/R where the back electromotive force E_{B} = ks. The angle = [k(U - E_{B})/R]/(s^{2}J).
From the latter two equations, the voltage-to-angle transfer function
.
If the loop n.p. lag equals that in Example 1, and if the loop response needs to be the same as in Example 1, the compensator and driver transfer function should be C(s) from Example 1 multiplied by
.
The MATLAB code for this transfer function's numerator and denominator is
k = 0.7; res = 2; ja = 0.027; a = k*k/(res*ja); nc1 = conv(res*ja/k,[1 a]); dc1 = [1 0];
Example 3. To use the response in Example 1 as a
prototype for a control system with crossover frequency
f_{b} = 12 Hz, s
must be replaced by
s/ (where
= 12 × 2 75.4)
in the transfer functions for the loop and for the prefilter. The numerator
ns
and the denominator
ds
of the loop transfer function can be found
with
n = conv([11 55 110 36], [-1,10]); wb = 75.4; d = conv([1 7.7 34 97 83 0 0], [1 10]); format short e; [ns, ds] = lp2lp(n, d, wb)
and the numerators and denominators of the two notch transfer functions of the prefilter with
nr = [1 1 0.81]; dr = [1 2 0.81]; [nrs, drs] = lp2lp(nr, dr, wb) nr2 = [1 0.5 1]; dr2 = [1 0.6 1]; [nr2s, dr2s] = lp2lp(nr2, dr2, wb)
The results will be displayed with single precision
(format short e
), although the calculations
will be performed and the numbers stored with double precision.
(Notice that if we apply the
lp2lp
transform not to the entire loop but
only to the compensator and retain 1/s^{2} as the plant, the new
compensator transfer function must be multiplied by
.)
Example 4. We can now write an example of a design specification for a time-invariable controller for a plant with a prescribed nominal transfer function P_{n}, with high-frequency flexible modes, and with hard saturation in the actuator:
The specifications on the overshoot guarantee minimum performance for the worst case of maximum plant parameter variations, and also assure that most systems in production (with the plant parameters close to the nominal) have much better performance than the worst case.
From Example 1 it is seen that these specifications can be met when the stability margins are 30° and 10 dB. If smaller stability margins are chosen, the sensitivity in the frequency neighborhood of f_{b} increases and the variations in k cause larger deviations of the transient response from the nominal.
Home | Classical Feedback Control | Previous | Next |