Está en la página 1de 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
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

u
v
q

.003 .039
0
.322
u uw

0 v vw

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

## 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 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

## (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

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,

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

8

600
600
600
600

-2
-2
-3
-3

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

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