Copyright F.L. Lewis 1999
All rights reserved
EE 4343/5329 - Control System Design Project
LECTURE 12
Updated: Monday, April 09, 2001
DESIGN OF FEEDBACK CONTROL SYSTEMS
There are many sorts of feedback control systems, as shown in the figure. There are many sorts of control design techniques, including classical frequency domain techniques and state-variable (SV) matrix techniques. The actuator dynamics must usually be considered when designing controllers for industrial and aerospace systems.
Classical design techniques rely on graphical methods and impart a great deal of insight on system structure and robustness. They often require trial-and-error one-loop-at-a-time design, particularly for complex systems with nonminimum-phase zeros. State-variable (SV) techniques rely on solution of matrix equations. They are powerful and direct to apply and guarantee stability for any linear system that is reachable. Basic SV methods such as pole placement do not give much insight on structure or robustness.
The next figure shows a practical control system. Note that it has more blocks than we consider for basic design, including sensors, signal conditioners and transmitters, actuators, and so on. These are required for actual implementation of the controller. Sometimes it is necessary to include the dynamics of these extra components when the controller is designed.
HELICOPTER DESIGN EXAMPLE
In this example we will illustrate the problems associated with controller design for a system with nonminimum-phase zeros. We will do a root locus, a pole placement, and an LQR design. The helicopter dynamics are taken from Franklin, Powell, and Emami-Naeini [1991]. This example was handled rather well in Shahian and Hassul [1993].
Dynamics and Open-Loop Analysis
Helicopters have dynamics that are difficult to stabilize due to nonminimum-phase behavior. The state model
of the longitudinal motion of a helicopter is given by
where q= pitch rate, = pitch angle, u= horizontal velocity, and = rotor tilt angle. It is assumed that measurements of velocity are taken.
The poles are given by
damp(a)
Eigenvalue Damping Freq. (rad/s)
1.18e-001 + 3.68e-001i -3.06e-001 3.86e-001
1.18e-001 - 3.68e-001i -3.06e-001 3.86e-001
-6.57e-001 1.00e+000 6.57e-001
The transfer function is given by
[num,den]=ss2tf(a,b,c,d)
num =
0 9.8000 -4.9000 61.7400
den =
1.0000 0.4200 -0.0060 0.0980
» printsys(num,den)
num/den =
9.8 s^2 - 4.9 s + 61.74
------
s^3 + 0.42 s^2 - 0.006 s + 0.098
The zeros are given by
roots(num)
ans =
0.2500 + 2.4975i
0.2500 - 2.4975i
» damp(num)
Eigenvalue Damping Freq. (rad/s)
2.50e-001 + 2.50e+000i -9.96e-002 2.51e+000
2.50e-001 - 2.50e+000i -9.96e-002 2.51e+000
Note that there are two right-half plane zeros.
Root Locus for P Feedback
Straight Proportional feedback cannot stabilize this system, but an initial root locus using only P feedback often aids in getting a feel for the structure of the system. Therefore, in the figure let us select the compensator K(s)=k.
Then, the closed-loop transfer function is
and one performs a root locus simply using G(s)=H(s). As found above
.
The root locus is shown.
Note that the RHP zeros mean that the system cannot be stabilized using P feedback since the zeros attract the RL for high values of the gain k.
Root Locus with Compensators
It is necessary to design a compensator for this NMP system. The control structure to be used is shown. There is a feedback compensator K2(s) and a feedforward compensator K1(s).
Helicopter Longitudinal Control System
First cancel the pole at -0.65 by selecting
.
The pole was added for realizability (i.e. filtered derivative), and is put far to the left so as not to influence the RL for low frequencies.
Now select
which adds a zero to pull the poles to the left plus a filtering pole.
The closed-loop transfer function is
.
The root locus is shown.
This was found using
k=[0 : 0.1 : 100]
rlocus(num,den,k)
since rlocus with no k argument did not produce a good plot.
The RL shows that the system is stable for a range of k. For high gain k the poles approach the NMP zeros.
Pole Placement Ackermann Design
Now we will use SV techniques to design a feedback to place the closed-loop poles. We will use the state-variable feedback (SVFB)
u= -Kx.
Ackermann's formula is
where the reachability matrix is
and the desired closed-loop polynomial is .
The reachability matrix is
» u= [b a*b a^2*b]
u =
6.3000 -2.6180 1.1374
0 6.3000 -2.6180
9.8000 -9.0160 65.5855
which has nonzero determinant
» det(u)
ans =
2.4513e+003
so the system is reachable and the poles can be placed wherever desired.
For good POV and settling, the desired closed-loop poles are selected as
.
This gives a SVFB gain of
» pd=[-2, -1+j, -1-j];
» k=place(a,b,pd)
place: ndigits= 15
k =
0.4706 1.0000 0.0627
The closed-loop A matrix is given by
» ac=a-b*k
ac =
-3.3651 -6.3003 -0.4053
1.0000 0 0
-6.0123 -0.0004 -0.6349
and a check reveals the closed-loop poles at
» eig(ac)
ans =
-2.0000
-1.0000 + 1.0000i
-1.0000 - 1.0000i
exactly as desired.
It is interesting to perform a root locus on the system compensated by the computed SVFB. Note that
and we can define a new output w(t) so that
as shown in the figure.
The closed-loop system is then as shown, where we have added an adjustable scalar gain so that
.
Now one has the closed-loop transfer function
where is the transfer function one uses for the root locus vs. k. The RL is shown.
This RL was made using
» [ncl,dcl]=ss2tf(a,b,k,d)
ncl =
0 3.5800 6.0060 3.9020
dcl =
1.0000 0.4200 -0.0060 0.0980
» rlocus(ncl,dcl)
Alternatively, one can plot the RL directly from the state matrices using
rlocus(a,b,k,d)
It is very interesting to note what is going on here. The SVFB matrix functions as the output matrix of a SV system. In effect the SVFB redefines the system output to be w= Kx. The zeros of this new system are not the same as the original bad NMP zeros. The new zeros are at
» roots(ncl)
ans =
-0.8388 + 0.6215i
-0.8388 - 0.6215i
as shown in the SVFB root locus. These stable zeros pull the RL into the left-half plane. In fact, at a value of k=1, the RL passes right through the desired closed-loop poles!
The SVFB gain is implemented using multiplies and an add according to
.
1