You are on page 1of 8

UNIVERSITY OF CALIFORNIA, SANTA CRUZ

BOARD OF STUDIES IN COMPUTER ENGINEERING


CMPE 240: INTRODUCTION TO LINEAR DYNAMICAL SYSTEMS
Gabriel Hugh Elkaim

Fall 2005

Aircraft Dynamics Example


longitudinal aircraft dynamics
wind gust & control inputs
linearized dynamics
steady-state analysis
eigenvalues & modes
impulse matrices

Longitudinal aircraft dynamics

Sfrag replacements

body axis

variables are (small) deviations from operating point or trim conditions


state (components):
u: velocity of aircraft along body axis
v: velocity of aircraft perpendicular to body axis
(down is positive)
: angle between body axis and horizontal
(up is positive)
angular velocity of aircraft (pitch rate)
q = :
1

horizontal

Inputs

disturbance inputs:
uw : velocity of wind along body axis
vw : velocity of wind perpendicular to body axis
control or actuator inputs:
e : elevator angle (e > 0 is down)
t : thrust

Linearized dynamics

for 747, level flight, 40000 ft, 774 ft/sec,

u
v
q

.003 .039
0
.322
u uw

.065 .319 7.74


0 v vw

.020 .101 .429


0
q
0
0
1
0

.01
1
"
#
.18 .04
e

1.16 .598 t
0
0

units: ft, sec, crad (= 0.01rad 0.57 )


matrix coefficients are called stability derivatives
outputs of interest:
aircraft speed u (deviation from trim)
climb rate h = v + 7.74

Steady-state analysis

DC gain from (uw , vw , e , t ) to (u, h):


H(0) = CA B =
1

"

1 0
27.2 15.0
0 1 1.34 24.9

gives steady-state change in speed & climb rate due to wind, elevator & thrust changes
solve for control variables in terms of wind velocities, desired speed & climb rate
"

e
t

"

.0379 0.0229
.0020 .0413
2

#"

u uw
h + vw

level flight, increase in speed is obtained mostly by increasing elevator (i.e., downwards)
constant speed, increase in climb rate is obtained by increasing thrust and increasing
elevator (i.e., downwards)
(thrust on 747 gives strong pitch up torque)

Eigenvalues and modes

eigenvalues are
0.3750 0.8818j,

0.0005 0.0674j

two complex modes, called short-period and phugoid, respectively


system is stable (but lightly damped)
hence step responses converge (eventually) to DC gain matrix
eigenvectors are

0.0005
0.5433
0.0899
0.0283

0.0135
0.8235
0.0677
0.1140

0.7510
0.0962
0.0111
0.1225

0.6130
0.0941
0.0082
0.1637

xshort =

xphug =

Short-period mode

y(t) = CetA (<xshort ) (pure short-period mode motion)


1

u(t)

0.5
0
0.5
1

10

12

14

16

18

20

10

12

14

16

18

20

h(t)

0.5
0

PSfrag replacements

0.5
1

only small effect on speed u


period 7 sec, decays in 10 sec

6.1

Phugoid mode

y(t) = CetA (<xphug ) (pure phugoid mode motion)


2

u(t)

1
0
1
2

200

400

600

800

1000

1200

1400

1600

1800

2000

200

400

600

800

1000

1200

1400

1600

1800

2000

h(t)

1
0

PSfrag replacements

1
2

affects both speed and climb rate


period 100 sec; decays in 5000 sec

Dynamic response to wind gusts

(gives response to short wind bursts)


impulse response matrix from (uw , vw ) to (u, h)
over time period [0, 20]:
0.1

h12

h11

0.1

0.1

10

15

0.1

20

0.5

10

15

20

10

15

20

0.5

h22

h21

PSfrag replacements
0

0.5

10

15

0.5

20

over time period [0, 600]:


0.1

h12

h11

0.1

0.1

200

400

0.1

600

h21

0.5

200

400

600

200

400

600

0.5

h22

0.5

PSfrag replacements

200

400

0.5

600

Dynamic response to actuators

h12

h11

impulse response matrix from (e , t ) to (u, h)


over time period [0, 20]:

0
1
2

0
1

10

15

20

10

15

20

10

15

20

3
2.5
2

h22

h21

PSfrag replacements
0

1.5
1
0.5

10

15

20

over time period [0, 600]:

h12

h11

0
1
2

200

400

600

2
0

200

400

600

200

400

600

200

400

600

h22

h21

PSfrag replacements

MATLAB code

% 747 longitudinal axis example for 263


% 40000 feet steady, level flight, 774 ft/sec
% from bryson p151
% x = u, w, q, theta
A = [ -0.003 0.039 0 -.322; -0.065 -0.319 7.74 0; 0.020 -.101 -.429
0 0 0 1 0];
%input = u_w, w_w, delta_e, delta_t
Bw= -A(:,[1,2]); Bc= [0.01 1; -.18 -.04; -1.16 .598; 0 0]; B = [Bw,
Bc];
% output: u, climb rate = -w + 7.74 theta
C = [ 1 0 0 0; 0 -1 0 7.74]; H0 = -C*inv(A)*B;
H01 = H0(:,[3,4]); % DC gain matrix from delta_e delta_t to
% speed, climb rate
% modal analysis
[V,Gam]=eig(A); xshort = real(V(:,1)); xphug = real(V(:,3)); xshort
= xshort/norm(xshort); xphug = xphug/norm(xphug);
Nsamp = 100; %number of time samples
yshort=zeros(2,Nsamp); t=linspace(0,20,Nsamp); for i=1:Nsamp,
yshort(:,i)=C*expm(t(i)*A)*xshort; end
figure(3) subplot(2,1,1) plot(t,yshort(1,:)); axis([0 20 -1 1])
ylabel(u) subplot(2,1,2) plot(t,yshort(2,:)); axis([0 20 -1 1])
ylabel(hdot)

print -deps aircraft_short


Nsamp = 400; %number of time samples
yshort=zeros(2,Nsamp); t=linspace(0,2000,Nsamp); for i=1:Nsamp,
yphug(:,i)=C*expm(t(i)*A)*xphug; end
figure(4) subplot(2,1,1) plot(t,yphug(1,:)); axis([0 2000 -2 2])
ylabel(u) subplot(2,1,2) plot(t,yphug(2,:)); axis([0 2000 -2 2])
ylabel(hdot)
print -deps aircraft_phug
% now do responses to various impulses
figure(1)
Nsamp = 200; %number of time samples
h1=zeros(2,Nsamp); h2=zeros(2,Nsamp); t=linspace(0,20,Nsamp); for
i=1:Nsamp,
h1(:,i)=C*expm(t(i)*A)*B(:,1); % impulse response from u_w
h2(:,i)=C*expm(t(i)*A)*B(:,2); % imp resp from v_w
end
subplot(2,2,1)
subplot(2,2,2)
subplot(2,2,3)
subplot(2,2,4)

plot(t,h1(1,:));
plot(t,h2(1,:));
plot(t,h1(2,:));
plot(t,h2(2,:));

axis([0
axis([0
axis([0
axis([0

20
20
20
20

-.1
-.1
-.5
-.5

0.1])
0.1])
0.5])
0.5])

ylabel(h11)
ylabel(h12)
ylabel(h21)
ylabel(h22)

print -deps aircraft_gust1


% now do same plots over longer time scale
figure(2); t=linspace(0,600,Nsamp); for i=1:Nsamp,
h1(:,i)=C*expm(t(i)*A)*B(:,1); % impulse response from u_w
h2(:,i)=C*expm(t(i)*A)*B(:,2); % imp resp from v_w
end
subplot(2,2,1)
subplot(2,2,2)
subplot(2,2,3)
subplot(2,2,4)

plot(t,h1(1,:));
plot(t,h2(1,:));
plot(t,h1(2,:));
plot(t,h2(2,:));

axis([0
axis([0
axis([0
axis([0

600
600
600
600

-.1
-.1
-.5
-.5

print -deps aircraft_gust2


% now do same things,

but for actuator inputs

figure(1)
7

0.1])
0.1])
0.5])
0.5])

ylabel(h11)
ylabel(h12)
ylabel(h21)
ylabel(h22)

Nsamp = 200; %number of time samples


h1=zeros(2,Nsamp); h2=zeros(2,Nsamp); t=linspace(0,20,Nsamp); for
i=1:Nsamp,
h1(:,i)=C*expm(t(i)*A)*B(:,3); % impulse response from delta_e
h2(:,i)=C*expm(t(i)*A)*B(:,4); % imp resp from delta_t
end
subplot(2,2,1)
subplot(2,2,2)
subplot(2,2,3)
subplot(2,2,4)

plot(t,h1(1,:));
plot(t,h2(1,:));
plot(t,h1(2,:));
plot(t,h2(2,:));

axis([0
axis([0
axis([0
axis([0

20
20
20
20

-2 2]) ylabel(h11)
-2 2]) ylabel(h12)
-5 5]) ylabel(h21)
0 3]) ylabel(h22)

print -deps aircraft_act1


% now do same plots over longer time scale
figure(2); t=linspace(0,600,Nsamp); for i=1:Nsamp,
h1(:,i)=C*expm(t(i)*A)*B(:,3); % impulse response from delta_e
h2(:,i)=C*expm(t(i)*A)*B(:,4); % imp resp from delta_t
end
subplot(2,2,1)
subplot(2,2,2)
subplot(2,2,3)
subplot(2,2,4)

plot(t,h1(1,:));
plot(t,h2(1,:));
plot(t,h1(2,:));
plot(t,h2(2,:));

axis([0
axis([0
axis([0
axis([0

print -deps aircraft_act2

courtesy of Stephen Boyd @ Stanford University


8

600
600
600
600

-2
-2
-3
-3

2])
2])
3])
3])

ylabel(h11)
ylabel(h12)
ylabel(h21)
ylabel(h22)

You might also like