| Products & Services | Solutions | Academia | Support | User Community | Company |
| Download Product Updates | | | Get Pricing | | | Trial Software |
| Documentation → Control System Toolbox |
| Contents | Index |
| Learn more about Control System Toolbox |
| On this page… |
|---|
This case study demonstrates the tools for classical control design by stepping through the design of a yaw damper for a 747® jet transport aircraft.
The jet model during cruise flight at MACH = 0.8 and H = 40,000 ft. is
A=[-.0558 -.9968 .0802 .0415;
.598 -.115 -.0318 0;
-3.05 .388 -.4650 0;
0 0.0805 1 0];
B=[ .00729 0;
-0.475 0.00775;
0.153 0.143;
0 0];
C=[0 1 0 0;
0 0 0 1];
D=[0 0;
0 0];
sys = ss(A,B,C,D);The following commands specify this state-space model as an LTI object and attach names to the states, inputs, and outputs.
states = {'beta' 'yaw' 'roll' 'phi'};
inputs = {'rudder' 'aileron'};
outputs = {'yaw' 'bank angle'};
sys = ss(A,B,C,D,'statename',states,...
'inputname',inputs,...
'outputname',outputs);
You can display the LTI model sys by typing sys. This command produces the following result.
a =
beta yaw roll phi
beta -0.0558 -0.9968 0.0802 0.0415
yaw 0.598 -0.115 -0.0318 0
roll -3.05 0.388 -0.465 0
phi 0 0.0805 1 0
b =
rudder aileron
beta 0.00729 0
yaw -0.475 0.00775
roll 0.153 0.143
phi 0 0
c =
beta yaw roll phi
yaw 0 1 0 0
bank angle 0 0 0 1
d =
rudder aileron
yaw 0 0
bank angle 0 0
Continuous-time model.The model has two inputs and two outputs. The units are radians for beta (sideslip angle) and phi (bank angle) and radians/sec for yaw (yaw rate) and roll (roll rate). The rudder and aileron deflections are in radians as well.
Compute the open-loop eigenvalues and plot them in the
-plane.
damp(sys)
Eigenvalue Damping Freq. (rad/s)
-7.28e-003 1.00e+000 7.28e-003
-5.63e-001 1.00e+000 5.63e-001
-3.29e-002 + 9.47e-001i 3.48e-002 9.47e-001
-3.29e-002 - 9.47e-001i 3.48e-002 9.47e-001
pzmap(sys)

This model has one pair of lightly damped poles. They correspond to what is called the "Dutch roll mode."
Suppose you want to design a compensator that increases the
damping of these poles, so that the resulting complex poles have a
damping ratio
with natural frequency
rad/sec. You can do this using the Control System Toolbox™ analysis
tools.
First, perform some open-loop analysis to determine possible control strategies. Start with the time response (you could use step or impulse here).
impulse(sys)

The impulse response confirms that the system is lightly damped. But the time frame is much too long because the passengers and the pilot are more concerned about the behavior during the first few seconds rather than the first few minutes. Next look at the response over a smaller time frame of 20 seconds.
impulse(sys,20)

Look at the plot from aileron (input 2) to bank angle (output 2). To show only this plot, right-click and choose I/O Selector, then click on the (2,2) entry. The I/O Selector should look like this.

The new figure is shown below.

The aircraft is oscillating around a nonzero bank angle. Thus, the aircraft is turning in response to an aileron impulse. This behavior will prove important later in this case study.
Typically, yaw dampers are designed using the yaw rate as sensed output and the rudder as control input. Look at the corresponding frequency response.
sys11=sys('yaw','rudder') % Select I/O pair.
bode(sys11)

From this Bode diagram, you can see that the rudder has significant
effect around the lightly damped Dutch roll mode (that is, near
rad/sec).
A reasonable design objective is to provide a damping ration
with a natural frequency
rad/sec. Since the simplest compensator is a
static gain, first try to determine appropriate gain values using
the root locus technique.
% Plot the root locus for the rudder to yaw channel rlocus(sys11)

This is the root locus for negative feedback and shows that the system goes unstable almost immediately. If, instead, you use positive feedback, you may be able to keep the system stable.
rlocus(-sys11) sgrid

This looks better. By using simple feedback, you can achieve
a damping ratio of
. Click
on the blue curve and move the data marker to track the gain and damping
values. To achieve a 0.45 damping ratio, the gain should be about
2.85. This figure shows the data marker with similar values.

Next, close the SISO feedback loop.
K = 2.85;
cl11 = feedback(sys11,-K); % Note: feedback assumes negative
% feedback by default
Plot the closed-loop impulse response for a duration of 20 seconds, and compare it to the open-loop impulse response.
impulse(sys11,'b--',cl11,'r',20)

The closed-loop response settles quickly and does not oscillate much, particularly when compared to the open-loop response.
Now close the loop on the full MIMO model and see how the response from the aileron looks. The feedback loop involves input 1 and output 1 of the plant (use feedback with index vectors selecting this input/output pair). At the MATLAB® prompt, type
cloop = feedback(sys,-K,1,1); damp(cloop) % closed-loop poles Eigenvalue Damping Freq. (rad/s) -3.42e-001 1.00e+000 3.42e-001 -2.97e-001 + 6.06e-001i 4.40e-001 6.75e-001 -2.97e-001 - 6.06e-001i 4.40e-001 6.75e-001 -1.05e+000 1.00e+000 1.05e+000
Plot the MIMO impulse response.
impulse(sys,'b--',cloop,'r',20)

The yaw rate response is now well damped, but look at the plot from aileron (input 2) to bank angle (output 2). When you move the aileron, the system no longer continues to bank like a normal aircraft. You have over-stabilized the spiral mode. The spiral mode is typically a very slow mode and allows the aircraft to bank and turn without constant aileron input. Pilots are used to this behavior and will not like your design if it does not allow them to fly normally. This design has moved the spiral mode so that it has a faster frequency.
What you need to do is make sure the spiral mode does not move
further into the left-half plane when you close the loop. One way
flight control designers have addressed this problem is to use a washout
filter
where
![]()
The washout filter places a zero at the origin, which constrains
the spiral mode pole to remain near the origin. We choose
for a time constant of five seconds and use the
root locus technique to select the filter gain H.
First specify the fixed part
of the washout by
H = zpk(0,-0.2,1);
Connect the washout in series with the design model sys11 (relation between input 1 and output 1) to obtain the open-loop model
oloop = H * sys11;
and draw another root locus for this open-loop model.
rlocus(-oloop) sgrid

Create and drag a data marker around the upper
curve to locate the maximum damping, which is about
.
This figure shows a data marker at the maximum damping ratio; the gain is approximately 2.07.

Look at the closed-loop response from rudder to yaw rate.
K = 2.07; cl11 = feedback(oloop,-K); impulse(cl11,20)

The response settles nicely but has less damping than your previous
design. Finally, you can verify that the washout filter has fixed
the spiral mode problem. First form the complete washout filter
(washout + gain).
WOF = -K * H;
Then close the loop around the first I/O pair of the MIMO model sys and simulate the impulse response.
cloop = feedback(sys,WOF,1,1); % Final closed-loop impulse response impulse(sys,'b--',cloop,'r',20)

The bank angle response (output 2) due to an aileron impulse (input 2) now has the desired nearly constant behavior over this short time frame. To inspect the response more closely, use the I/O Selector in the right-click menu to select the (2,2) I/O pair.

Although you did not quite meet the damping specification, your design has increased the damping of the system substantially and now allows the pilot to fly the aircraft normally.
![]() | Design Case Studies | Hard-Disk Read/Write Head Controller | ![]() |

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.
| © 1984-2009- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |