+ All Categories
Home > Documents > MEM 530 Final

MEM 530 Final

Date post: 05-Apr-2018
Category:
Upload: christopher-braun
View: 221 times
Download: 0 times
Share this document with a friend

of 29

Transcript
  • 8/2/2019 MEM 530 Final

    1/29

    Aircraft Controls Final Exam

    Drexel University

  • 8/2/2019 MEM 530 Final

    2/29

    Part A: Controller Design

    In Order to design a state-feedback controller, we first had to concatenate the aircraft plant and actuator

    dynamics into a single plant. We wrote the actuator dynamics, given to us in Laplace space, in state-space

    representations such that the output matrix C was the identity. This ensured that the states relating the

    actuators represented the actual actuator positions. This is the concatenated system:

    Af = [E^-1*A E^-1*B;zeros(2,4) [-10 0;0 -.2]];Bf = [zeros(4,2);[10 0;0 .2]];Cf = [rtod*[-1 0 0 1 0 0];0 0 1 0 0 0]; %monitored outputs = [climb angle;vt]Mf = [0 0 0 rtod 0 0;0 0 1 0 0 0]; %measured outputs = [theta, vt]Df = zeros(size(Cf,1),2);

    The six states in order are angle of attack, pitch rate, velocity, pitch, elevator deflection, and throttle

    setting. All angular states are stored in radians. The Cf and Mf matrices contain the transformations into

    degrees, so the system outputs are in degrees rather than radians.

    Our group designed two separate controllers, one for climb and one for cruise flight.

    For the first, we set

    Q = diag([10 1]); r = diag([1000 1]); rho = 30;

    The first element in Q weights climb angle and the second weights velocity. The first element in r weights

    elevator control and the second weights throttle. Rho is relatively high because the plane will vibrate on

    its short-period frequencies for low rho values. The high rho slows the response of the system and raises

    the damping ratio. We calculated feedback gain as follows:

    F1 = -lqr(Af,Bf,Cf'*Q*Cf,rho^2*r);

    Observer poles were simply set to twice the regulator poles.

    H1 = -place(Af',Mf',eRegulator*2)';

    We then built the closed-loop system as such:

    Ac1 = [Af Bf*F1;-H1*Mf Af+H1*Mf+Bf*F1];Cc = [rtod*[-1 0 0 1 0 0 0 0 0 0 0 0];

    [0 0 1 0 0 0 0 0 0 0 0 0]];

    Where the first output is climb angle, in degrees, and the second is velocity. This system drives the plane

    to equilibrium flight, however, and we needed to turn it into a setpoint controller by adding a setpoint

    filter placed between the setpoint and input to the system. To solve for this filter, we set the time

    derivative of the system to zero and solved for the input filter, as shown below. x represents the

    estimated states, r represents the input signal, and P represents the filter. The system is solved by saying r

    and y are equal at steady-state.

  • 8/2/2019 MEM 530 Final

    3/29

    So, we set the setpoint filter toPi = -(Cc(1,:)*Ac1^-1*[Bf([1:end 1:end],1)])^-1;

    And Bc1 to

    Bc1 = [Bf([1:end 1:end],1)]*Pi;

    For the climb phase, only the first column of Bf and the first row of Cc are used, because the exam

    specifies that the setpoint controller for the climb phase is only controlling climb angle and is only

    commanding the elevator. For the level cruise phase, both rows of Cc and both columns of Bf are used.

    The block diagram for the closed-loop systems is below. The climb phase system has a slightly different

    form for its block diagram because the input r is a scalar; however, the general appearance of the block

    diagram still holds.

  • 8/2/2019 MEM 530 Final

    4/29

    The eigenvalues of the closed-loop system for the climb phase are

    -20.0000

    -10.0000

    -0.8758 + 2.2356i

    -0.8758 - 2.2356i

    -0.4379 + 1.1178i

    -0.4379 - 1.1178i

    -0.3484 + 0.2862i

    -0.3484 - 0.2862i

    -0.1742 + 0.1431i

    -0.1742 - 0.1431i

    -0.0986-0.1971

    At first, our group mistakenly took this to mean that the LQR controller should not control throttle either.

    We set up that system and got some interesting results. The aircraft reached a steady state climb angle, but

    also maintained a nonzero pitch rate such that the plane was continuously pitching up and slowing down

    to maintain the climb angle. When the controller switched at 2000 feet, the plane rolled forward and

  • 8/2/2019 MEM 530 Final

    5/29

    picked up speed, but actually loses 1500 feet of altitude before it settles to equilibrium. The graphs are

    included at the end of this report simply because we find them interesting.

    The controller for level, cruise flight is very similar to the one above, but with different values for r and

    Q.

    Q = diag([10 1]);r = diag([1000 10]);rho = 30;

    Elevator deflection is weighted more heavily here, as is climb angle.

    Since the setpoint controller must control both climb angle and velocity while commanding both elevator

    and throttle, the setpoint filter must be a 2x2 matrix:

    Pi = -(Cc*Ac2^-1*[Bf;Bf])^-1;

    And we may use both inputs, so

    Bc2 = [Bf;Bf]*Pi;

    Again, observer poles are simply placed at twice the regulator poles. The poles of the closed loop systemwith the second controller are

    -20.0000

    -10.0000

    -0.8758 + 2.2355i

    -0.8758 - 2.2355i

    -0.4379 + 1.1178i

    -0.4379 - 1.1178i

    -0.3743

    -0.1590 + 0.1916i

    -0.1590 - 0.1916i

    -0.0795 + 0.0958i

    -0.0795 - 0.0958i

    -0.1872

    To model these systems separately, one may simply use lsim(), but we could not do this for two reasons:

    First, we must model height and Northern (we assume the plane is going North) velocities, but we cannot

    accurately linearize those differential equations; second, the controllers must switch when the plane

    reaches 2000ft, and a linear system cannot contain background logic to do this.

    Instead, we wrote a differential function for use with ode45() or a similar solver. State-space systems are

    passed to this function via global variables, and the state vector is appended with altitude and North

    displacement. This way, we model both the linearized state-space system and the non-linear flight path

    system.

    To switch between the two controllers, a simple persistent Boolean variable is set when the plane hits

    2000ft above the altitude from which it started. An if() statement separates the two closed-loop systems

    with the persistent Boolean as its argument.

  • 8/2/2019 MEM 530 Final

    6/29

    Part B: Evaluation (nominal)

    a. Response of all the primary airplane variables: alpha, pitch rate, velocity and pitch areplotted and shown in Figure -1. First plots are angle of attack and pitch rate while the

    third one is velocity. Plane has velocity of 500 ft/s at start and slows down to 499.4 ft/sduring the angle change. After it reaches the desired altitude the velocity decreases to

    498.5 ft/s for leveling off and comes back to the velocity of 500 ft/s. Pitch rate has spikes

    at start as the angle of attack goes up to 1o and another spike at 238 s as the angle is

    changing from 1o back to zero. Pitch response shows the same behavior as expected.

    0 50 100 150 200 250 300 350 400 450 5005.2

    5.25

    5.3

    5.35

    5.4

    5.45

    5.5

    5.55

    5.6

    5.65

    5.7

    Time (s)

    Alpha Response

    Alpha (deg)

    0 50 100 150 200 250 300 350 400 450 500-0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

    Time (s)

    Pitch Rate Response

    q (deg/s)

  • 8/2/2019 MEM 530 Final

    7/29

    Figure -1 Plots of primary airplane variables

    b. Plots of climb angle response, elevator repose, throttle response and flight path are shownin figure 2. These demonstrations are further analyzed to see if the system has reached the

    settling time specifications. Climb angle is the command given by the team with the

    initial condition of 0 degree angle. The climb angle is zero at start and reaches desired 1o

    in 84 seconds and the angle is maintained until the plane reaches the altitude of 32070 ft.

    Overall, the auto-pilot takes 238 seconds to come from 30000 ft to 32000 ft.

    0 50 100 150 200 250 300 350 400 450 500496

    496.5

    497

    497.5

    498

    498.5

    499

    499.5

    500

    500.5

    Time (s)

    Velocity Response

    0 50 100 150 200 2500.5

    0.6

    0.7

    0.8

    0.9

    1

    1.1

    1.2

    Time (s)

    Pitch Response

    Vt (ft/s)

    theta (deg)

  • 8/2/2019 MEM 530 Final

    8/29

    Second graph shows that there is a spike in the elevator deflection at 238 seconds which

    is caused when leveling off from 1o

    climb angle. This takes approximately 38 seconds

    while the overall leveling process takes 50 seconds. It should be also noted that the there

    is an inverse relation between the climb angle and the elevator deflection therefore when

    the elevator deflection is negative, climb angle is positive.

    Last graph can be analyzed to observe the settling time in terms of displacement. 126700

    feet of north displacement is needed to reach to the desired altitude and 25100 ft more to

    go back to the level-off position.

  • 8/2/2019 MEM 530 Final

    9/29

    0 50 100 150 200 250 300 350 400 450 500-0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    Time (s)

    Climb Angle Response

    gamma (deg)

    0 50 100 150 200 250 300 350 400 450 500-4.108

    -4.106

    -4.104

    -4.102

    -4.1

    -4.098

    -4.096

    -4.094

    -4.092

    E

    levatorDeflection

    (deg)

    Time (s)

    Elevator Response

  • 8/2/2019 MEM 530 Final

    10/29

    Figure2 Airplane response I

    c. Response plots for at least two different values of indicating the improvement inperformance at the expense of larger actuator-activity

    1. There are two rho values for each controller as one controller is for one degree flightand the other is for level cruise flight. The values of rho are 30 for each controller.

    First, both values of rho indicated were decreased by 30% and the following graphs

    were obtained. Plane is expected to vibrate on its short-period frequencies for lower

    rho values. Alpha and pitch rate responses oscillate more when leveling off from 1o

    climb angle. In addition, the plane does not slow down as much during this change.

    0 50 100 150 200 250 300 350 400 450 5000.2

    0.21

    0.22

    0.23

    0.24

    0.25

    0.26

    0.27

    0.28

    0.29

    Throttle

    Time (s)

    Throttle Response

    0 0.5 1 1.5 2 2.5

    x 105

    3

    3.05

    3.1

    3.15

    3.2

    3.25x 10

    4

    Altitude

    (ft)

    North Displacement (ft)

    Flight Path

  • 8/2/2019 MEM 530 Final

    11/29

    Overall, the response of the system is increases but this drives system to be less

    stable. Graph4 shows that spike up from -4.095 to -4.096 in elevator deflection

    whereas there are no significant changes in other variables.

    0 50 100 150 200 250 300 350 400 450 5005.1

    5.2

    5.3

    5.4

    5.5

    5.6

    5.7

    5.8

    5.9

    Time (s)

    Alpha Response

    Alpha (deg)

    0 50 100 150 200 250 300 350 400 450 500-0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

    Time (s)

    Pitch Rate Response

    q (deg/s)

  • 8/2/2019 MEM 530 Final

    12/29

    Figure -4 Responses with 30% decrease in rho

    0 50 100 150 200 250 300 350 400 450 500497

    497.5

    498

    498.5

    499

    499.5

    500

    500.5

    Time (s)

    Velocity Response

    0 50 100 150 200 250 300 350 400 450 500-0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    Time (s)

    Pitch Response

    Vt (ft/s)

    theta (deg)

  • 8/2/2019 MEM 530 Final

    13/29

    0 50 100 150 200 250 300 350 400 450 500-0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    Time (s)

    Climb Angle Response

    gamma (deg)

    0 50 100 150 200 250 300 350 400 450 500-4.108

    -4.106

    -4.104

    -4.102

    -4.1

    -4.098

    -4.096

    -4.094

    -4.092

    -4.09

    E

    levatorDeflection

    (deg)

    Time (s)

    Elevator Response

  • 8/2/2019 MEM 530 Final

    14/29

    Figure5 Response with 30% decrease in rho

    2. The values of rho are 30 for each controller. Secondly, both values of rho indicatedwere increased by 50% and the following graphs were obtained. The system

    response is expected to slow down while the damping ratio is expected to rise. The

    same expected results are illustrated in figures 6 & 7. Alpha and pitch rate response

    have small spikes while having more oscillations as a result of increase in damping

    0 50 100 150 200 250 300 350 400 450 5000.2

    0.21

    0.22

    0.23

    0.24

    0.25

    0.26

    0.27

    0.28

    0.29

    Throttle

    Time (s)

    Throttle Response

    0 0.5 1 1.5 2 2.5

    x 105

    3

    3.05

    3.1

    3.15

    3.2

    3.25x 10

    4

    Altitude

    (ft)

    North Displacement (ft)

    Flight Path

  • 8/2/2019 MEM 530 Final

    15/29

    ratio. The plane needs less velocity to overcome the same angle change but takes

    slightly longer time to settle down because of the oscillations.

    0 50 100 150 200 250 300 350 400 450 5005.25

    5.3

    5.35

    5.4

    5.45

    5.5

    5.55

    5.6

    5.65

    5.7

    5.75

    Time (s)

    Alpha Response

    Alpha (deg)

    0 50 100 150 200 250 300 350 400 450 500-0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

    Time (s)

    Pitch Rate Response

    q (deg/s)

  • 8/2/2019 MEM 530 Final

    16/29

    Figure6 Response with 50% increase in rho

    0 50 100 150 200 250 300 350 400 450 500494

    495

    496

    497

    498

    499

    500

    501

    Time (s)

    Velocity Response

    0 50 100 150 200 250 300 350 400 450 500-0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    Time (s)

    Pitch Response

    Vt (ft/s)

    theta (deg)

  • 8/2/2019 MEM 530 Final

    17/29

    0 50 100 150 200 250 300 350 400 450 500-0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    Time (s)

    Climb Angle Response

    gamma (deg)

    0 50 100 150 200 250 300 350 400 450 500-4.108

    -4.106

    -4.104

    -4.102

    -4.1

    -4.098

    -4.096

    E

    levatorDeflection

    (deg)

    Time (s)

    Elevator Response

  • 8/2/2019 MEM 530 Final

    18/29

    Figure7 Response with 50% increase in rho

    d. Demonstration of meeting the objectives:All required plots are above.

    0 50 100 150 200 250 300 350 400 450 5000.2

    0.21

    0.22

    0.23

    0.24

    0.25

    0.26

    0.27

    0.28

    0.29

    Throttle

    Time (s)

    Throttle Response

    0 0.5 1 1.5 2 2.5

    x 105

    3

    3.05

    3.1

    3.15

    3.2

    3.25x 10

    4

    Altitude

    (ft)

    North Displacement (ft)

    Flight Path

  • 8/2/2019 MEM 530 Final

    19/29

    Part C: Evaluation (robustness)

    Part a.

    By modifying the MyTrim.m script slightly (changing altitude by 2000ft) and naming the script

    FinalExamRobustness, we were able to determine what the trim conditions should during the level flight

    phase.

    Original System Evaluation Model

    Elevator (deg) -4.1013 -4.8991

    Throttle .2038 .2055

    Alpha (deg) 5.4333 6.0293

    Part b.

    From FinalExamRobustness, we also get the linearized system for the evaluation. Using this model, we

    replaced our design model and with the evaluation model. The eigenvalues of both closed loop systems is

    shown below.

    Orignal System Evaluation Model

    -20.0000 -20.0000

    -10.0000 -10.0000

    -0.8758 + 2.2356i -0.8755 + 2.2370i

    -0.8758 - 2.2356i -0.8755 - 2.2370i-0.4379 + 1.1178i -0.4047 + 1.0765i

    -0.4379 - 1.1178i -0.4047 - 1.0765i

    -0.3484 + 0.2862i -0.3501 + 0.2834i

    -0.3484 - 0.2862i -0.3501 - 0.2834i-0.1742 + 0.1431i -0.1776 + 0.1414i

    -0.1742 - 0.1431i -0.1776 - 0.1414i

    -0.0986 -0.0847

    -0.1971 -0.2047

    We can see that the poles have shifted slightly, but overall, the evaluation model is stable and

    approximately equal to the design model.

  • 8/2/2019 MEM 530 Final

    20/29

    Appendix 1: Code

    Main script code%% MEM 530 Midterm Exam 2

    % clear all

    %% Problem A% Plane Properties

    rtod = 57.29578; %was used to convert radians to degrees

    s = 2170;

    cbar = 17.5;

    mass = 5.0e3;

    Iyy = 4.1e6;

    tstat = 6e4;

    dtdv = -38.0;

    ze = 2;

    cdcls = .042;

    cla = .085*rtod;

    cma = -.022*rtod;

    cmde =-.016*rtod;

    cmq = -16.0;

    cmadot = -6;

    cladot = 0;

    cl0 = .2;cd0 = .016;

    cm0 = .05;

    dcdg = 0;

    dcmg = 0;

    clq = 0;

    clv = 0;

    cmv = 0;

    cdv = 0;

    clde = 0;

    cdde = 0;

    gd = 32.17;

    xcg = .25;

    %%

    %team specific properties

    h = 30000;vt = 500;

    gamma = 0*pi/180;

    [m, qbar] = adc(vt,h);

    qs = qbar*s;

    %%

    %Equilibrium flight conditions

    [deltaee, deltate, alphae] = MyTrim(vt, h, gamma);

    cle = cl0 + cla*alphae;

    cme = dcmg + cm0 + cma*alphae + cmde*deltaee + cle*(xcg-.25);

    cde = dcdg + cd0 + cdcls*cle*cle;

    weight = mass * gd;

    lift = qs*cle;

    drag = qs*cde;

    thrust = (drag+weight*sin(gamma))/cos(alphae);

    global vtevte = vt;

    %%

    % Residual of steady-state flight

    res = thrust*sin(alphae)+lift-weight*cos(gamma); %% for debug

    %%

    %constants for state space construction

    Zalphadot = qs*cbar/(2*mass*vt)*cladot;

    Malphadot = qs*cbar^2/(Iyy*2*vt)*cmadot;

    Zalpha = -qs/mass*(cde + cla);

    Zq = qs*cbar/(2*mass*vt)*clq;

    Zv = -qs/(mass*vt)*(2*cle+clv);

  • 8/2/2019 MEM 530 Final

    21/29

    Zde = -qs/mass*clde;

    Xtv = 1/mass*dtdv*deltate;

    Xde = -qs/mass*cdde;

    Malpha = qs*cbar/Iyy*cma;

    Mtalpha = 0;

    Mq = qs*cbar^2/(Iyy*2*vt)*cmq;

    Mv = qs*cbar/(Iyy*vt)*(2*cme+cmv);

    Mtv = 1/Iyy*dtdv*deltate;

    Mde = qs*cbar/Iyy*cmde;

    Mdt = 1/Iyy*ze*(tstat+dtdv*vt);

    Xdt = 1/mass*(tstat+dtdv*vt);

    cdalpha = 2*cdcls*cle*cla;

    Xalpha = qs/mass*(cle-cdalpha);

    Xv = -qs/(mass*vt)*(2*cde+cdv);

    %%

    %state space representation

    E = [vt - Zalphadot, 0, 0, 0; -Malphadot 1 0 0; 0 0 1 0; 0 0 0 1];

    A = [Zalpha, vt + Zq, Zv - Xtv*sin(alphae), -gd*sin(gamma); Malpha + ...

    Mtalpha, Mq, Mv + Mtv, 0; Xalpha, 0, Xv + Xtv*cos(alphae), ...

    -gd*cos(gamma); 0 1 0 0];

    B = [Zde -Xdt*sin(alphae);Mde Mdt;Xde Xdt*cos(alphae);0 0];

    C = eye(4)*rtod;C(3,3)=1;

    g = ss(E^-1*A,E^-1*B,C,zeros(4,2));

    %%

    % Eignevectors, values

    [v e] = eig(E^-1*A)

    %%

    % Periods, damping ratios

    % [omega d] = damp(diag(e));

    % fprintf('\n\nFrequency\tPeriod\t\tdamping ratio\n');

    % fprintf('%1.4f\t\t%1.4f\t\t%1.4f\n',[omega 2*pi./omega d]');

    %% Part A

    %% I. Full State Feedback Design

    %%

    % Augment system with actuator dynamics

    % x=[alpha;q;vt;theta;de;dt]

    Af = [E^-1*A E^-1*B;zeros(2,4) [-10 0;0 -.2]];

    Bf = [zeros(4,2);[10 0;0 .2]];

    Cf = [rtod*[-1 0 0 1 0 0];0 0 1 0 0 0]; %monitored outputs = [climb angle;vt]

    Mf = [0 0 0 rtod 0 0;0 0 1 0 0 0]; %measured outputs = [theta, vt]

    Df = zeros(size(Cf,1),2);

    global Ac1 Ac2 Cc Bc1 Bc2 U

    %% Build separate controllers

    % Out = [gamma;vt]

    Cc = [rtod*[-1 0 0 1 0 0 0 0 0 0 0 0];

    [0 0 1 0 0 0 0 0 0 0 0 0]];

    %% For 1 Degree of Climb

    % Find LQR feedback gain

    Q = diag([10 1]);

    r = diag([1000 1]);

    rho = 30;

  • 8/2/2019 MEM 530 Final

    22/29

    F1 = -lqr(Af,Bf,Cf'*Q*Cf,rho^2*r);

    eRegulator = eig(Af+Bf*F1)

    %%

    % Place observer poles

    H1 = -place(Af',Mf',eRegulator*2)';

    eObserver = eig(Af+H1*Mf)

    %%

    % Build closed-loop system

    Ac1 = [Af Bf*F1;-H1*Mf Af+H1*Mf+Bf*F1];

    Pi = -(Cc(1,:)*Ac1^-1*[Bf([1:end 1:end],1)])^-1;

    Bc1 = [Bf([1:end 1:end],1)]*Pi;

    eClosedLoop1 = eig(Ac1)

    %% For Level Cruise Flight

    % Find LQR feedback gain

    Q = diag([10 1]);

    r = diag([1000 10]);

    rho = 30;

    F2 = -lqr(Af,Bf,Cf'*Q*Cf,rho^2*r);

    eRegulator = eig(Af+Bf*F2)

    %%

    % Place observer poles

    H2 = -place(Af',Mf',eRegulator*2)';

    eObserver = eig(Af+H2*Mf)

    %%

    % Build closed-loop system

    Ac2 = [Af Bf*F2;-H2*Mf Af+H2*Mf+Bf*F2];

    Pi = -(Cc*Ac2^-1*[Bf;Bf])^-1;

    Bc2 = [Bf;Bf]*Pi;

    eClosedLoop2 = eig(Ac2)

    %% Simulation

    t = 0:.01:500;

    % zeroU = [zeros(1,length(t))+2;zeros(1,length(t))+1]; %we want 1 degree of

    % climb

    % system is linearized around steady-state deltas, so input is 0

    % [outC] = lsim(gc,zeroU,t,.0*[alphae;0;vt;gamma;0;0;0;0;0;0;0;0]);

    clear modelDiff

    U = [1;2];

    % [t X] = ode45(@modelDiff,[t(1) t(end)],[.1*alphae;0;.1*vt;0;0;0;0;0;0;0;0;0;h;0]);

    [t X] = ode45(@modelDiff,[t(1) t(end)],[zeros(12,1);h;0]);

    outC = (Cc*X(:,1:12)')';

    % X = [alpha,q,vt,theta,de,dt,

    % alphaHat,qHat,vtHat,thetaHat,deHat,dtHat,

    % altitude,north displacement]

    %%

    % Primary airplane variable responses

  • 8/2/2019 MEM 530 Final

    23/29

    figure(1);clf

    subplot(211)

    plot(t,X(:,[1])*rtod+alphae*rtod);

    legend 'Alpha (deg)'

    xlabel 'Time (s)'

    title 'Alpha Response'

    subplot(212);

    plot(t,X(:,[2])*rtod);legend 'q (deg/s)'

    xlabel 'Time (s)'

    title 'Pitch Rate Response'

    figure(2)

    subplot(211);

    plot(t,X(:,[3]) + vte);

    legend 'Vt (ft/s)'

    xlabel 'Time (s)'

    title 'Velocity Response'

    subplot(212);

    plot(t,X(:,[4])*rtod+gamma*rtod);

    legend 'theta (deg)'

    xlabel 'Time (s)'

    title 'Pitch Response'

    %%

    % Meeting-the-Objectives plots

    figure(3);clf

    subplot(211);

    plot(t,outC(:,[1]));

    legend 'gamma (deg)'

    xlabel 'Time (s)'

    title 'Climb Angle Response'

    subplot(212);

    plot(t,X(:,5)+deltaee*rtod);

    ylabel 'Elevator Deflection (deg)'

    xlabel 'Time (s)'

    title 'Elevator Response'

    figure(4)

    subplot(211);plot(t,X(:,6)+deltate);

    ylabel 'Throttle'

    xlabel 'Time (s)'

    title 'Throttle Response'

    subplot(212);

    plot(X(:,14),X(:,13));

    ylabel 'Altitude (ft)'

    xlabel 'North Displacement (ft)'

    title 'Flight Path'

    %%

    % Plot states to show observer convergence

    figure(5)

    plot(t,X(:,1:12))

    legend 'alpha (rad)''q (rad/s)''Vt (ft/s)''theta (rad)''Elevator (rad)''throttle'axis([0 60 -.15 .1])

    figure(5)

    plot(t,X(:,1:12))

    legend 'alpha (rad)''q (rad/s)''Vt (ft/s)''theta (rad)''Elevator (rad)''throttle'

    axis([230 350 -.2 .1])

    %%

    [eRobust deltaeEval deltatEval alphaEval] = FinalExamRobustness(Af,Bf,Mf,H2,F2);

    fprintf('\n\n\n\nTrim Values:\n');

    fprintf('\t\t\tOrignal System\t\tEvaluation Model\n')

  • 8/2/2019 MEM 530 Final

    24/29

    fprintf('Elevator (deg):\t%1.4f\t\t\t%1.4f\n',deltaee*rtod,rtod*deltaeEval);

    fprintf('Throttle: \t%1.4f\t\t\t%1.4f\n',deltate,deltatEval);

    fprintf('Alpha (deg): \t%1.4f\t\t\t%1.4f\n',alphae*rtod,rtod*alphaEval);

    fprintf('\n\nClosed-loop poles:\n')

    fprintf('Orignal System\t\tEvaluation Model')

    [eClosedLoop2 eRobust]

  • 8/2/2019 MEM 530 Final

    25/29

    Function acdfunction [amach,qbar] = adc(vt,alt)

    r0 = 2.377e-3;

    tfac = 1-0.703e-5*alt;

    t = 519*tfac;

    if(alt >= 35000)

    t=390;

    end

    rho=r0*tfac^4.14;

    amach=vt/sqrt(1.4*1716.3*t);

    qbar=.5*rho*vt^2;

    end

    Function costfunction f = cost(s)

    global x u gamma h u2

    u(1) = s(1);u(2) = s(2);

    x(2) = s(3);

    x(3) = x(2) + gamma;

    time = 0;

    [xd] = transp(time, x, u, h, u2);

    f = xd(1)^2 + 100*xd(2)^2 + 10*xd(4)^2;

    end

    Function FinalExamRobustness%% MEM 530 Final Exam, part C

    function [eRobust deltaeEval deltatEval alphaEval] = FinalExamRobustness(Af,Bf,Mf,H,F)

    %% Problem A

    % Plane Propertiesrtod = 57.29578; %was used to convert radians to degrees

    s = 2170;

    cbar = 17.5;

    mass = 5.0e3;

    Iyy = 4.1e6;

    tstat = 6e4;

    dtdv = -38.0;

    ze = 2;

    cdcls = .042;

    cla = .085*rtod;

    cma = -.022*rtod;

    cmde =-.016*rtod;

    cmq = -16.0;

    cmadot = -6;

    cladot = 0;

    cl0 = .2;

    cd0 = .016;cm0 = .05;

    dcdg = 0;

    dcmg = 0;

    clq = 0;

    clv = 0;

    cmv = 0;

    cdv = 0;

    clde = 0;

    cdde = 0;

    gd = 32.17;

  • 8/2/2019 MEM 530 Final

    26/29

    xcg = .25;

    %%

    %team specific properties

    h = 32000;

    vt = 500;

    gamma = 1*pi/180;

    [m, qbar] = adc(vt,h);

    qs = qbar*s;

    %%

    %Equilibrium flight conditions

    [deltaee, deltate, alphae] = MyTrim(vt, h, gamma);

    cle = cl0 + cla*alphae;

    cme = dcmg + cm0 + cma*alphae + cmde*deltaee + cle*(xcg-.25);

    cde = dcdg + cd0 + cdcls*cle*cle;

    weight = mass * gd;

    lift = qs*cle;

    drag = qs*cde;

    thrust = (drag+weight*sin(gamma))/cos(alphae);

    global vte

    vte = vt;

    %%

    % Residual of steady-state flight

    res = thrust*sin(alphae)+lift-weight*cos(gamma); %% for debug%%

    %constants for state space construction

    Zalphadot = qs*cbar/(2*mass*vt)*cladot;

    Malphadot = qs*cbar^2/(Iyy*2*vt)*cmadot;

    Zalpha = -qs/mass*(cde + cla);

    Zq = qs*cbar/(2*mass*vt)*clq;

    Zv = -qs/(mass*vt)*(2*cle+clv);

    Zde = -qs/mass*clde;

    Xtv = 1/mass*dtdv*deltate;

    Xde = -qs/mass*cdde;

    Malpha = qs*cbar/Iyy*cma;

    Mtalpha = 0;

    Mq = qs*cbar^2/(Iyy*2*vt)*cmq;

    Mv = qs*cbar/(Iyy*vt)*(2*cme+cmv);

    Mtv = 1/Iyy*dtdv*deltate;

    Mde = qs*cbar/Iyy*cmde;

    Mdt = 1/Iyy*ze*(tstat+dtdv*vt);

    Xdt = 1/mass*(tstat+dtdv*vt);

    cdalpha = 2*cdcls*cle*cla;

    Xalpha = qs/mass*(cle-cdalpha);

    Xv = -qs/(mass*vt)*(2*cde+cdv);

    %%

    %state space representation

    E = [vt - Zalphadot, 0, 0, 0; -Malphadot 1 0 0; 0 0 1 0; 0 0 0 1];

    A = [Zalpha, vt + Zq, Zv - Xtv*sin(alphae), -gd*sin(gamma); Malpha + ...

    Mtalpha, Mq, Mv + Mtv, 0; Xalpha, 0, Xv + Xtv*cos(alphae), ...

    -gd*cos(gamma); 0 1 0 0];

    B = [Zde -Xdt*sin(alphae);Mde Mdt;Xde Xdt*cos(alphae);0 0];

    C = eye(4)*rtod;

    C(3,3)=1;

    g = ss(E^-1*A,E^-1*B,C,zeros(4,2));

    %%

    % Eignevectors, values

    [v e] = eig(E^-1*A);

    %%

    % Periods, damping ratios

    [omega d] = damp(diag(e));

    fprintf('\n\nFrequency\tPeriod\t\tdamping ratio\n');

  • 8/2/2019 MEM 530 Final

    27/29

    fprintf('%1.4f\t\t%1.4f\t\t%1.4f\n',[omega 2*pi./omega d]');

    %% Part A

    %% I. Full State Feedback Design

    %%

    % Augment system with actuator dynamics

    % x=[alpha;q;vt;theta;de;dt]

    Ar = [E^-1*A E^-1*B;zeros(2,4) [-10 0;0 -.2]];

    Br = [zeros(4,2);[10 0;0 .2]];

    Cr = [rtod*[-1 0 0 1 0 0];0 0 1 0 0 0]; %monitored outputs = [climb angle;vt]

    Mr = [0 0 0 rtod 0 0;0 0 1 0 0 0]; %measured outputs = [theta, vt]

    Dr = zeros(size(Cr,1),2);

    %% controller variables from linearized system in FinalExam2.m

    %%

    % Build close-loop system

    Acr = [Ar Br*F;-H*Mr Af+H*Mf+Bf*F];

    %% Evaluatiopn of robustness

    eRobust = eig(Acr);

    deltaeEval = deltaee;

    deltatEval = deltate;

    alphaEval = alphae;

    end

    Function ModelDifffunction [dx] = modelDiff(t,x)

    global Ac1 Ac2 Bc1 Bc2 U vte

    persistent h0 hHit

    if(isempty(h0))

    h0 = x(13,1);

    hHit = false;

    end

    % hHit = false;

    hHit = hHit || x(13,1) - h0 > 2000;

    % x = [alpha;q;vt;theta;de;dt;

    % alphaHat;qHat;vtHat;thetaHat;deHat;dtHat;

    % altitude;north displacement]

    if(~hHit)

    setpoint = 1;

    dx = zeros(size(x));

    dx(1:12,:) = Ac1*x(1:12,:) + Bc1 * ones(1,size(x,2))*setpoint;

    dx(13,:) = (vte + x(3,:)) * sin(x(4,:)-x(1,:));

    dx(14,:) = (vte + x(3,:)) * cos(x(4,:)-x(1,:));

    else

    setpoint = [0;0];

    dx = zeros(size(x));

    dx(1:12,:) = Ac2*x(1:12,:) + Bc2 * repmat(setpoint,1,size(x,2));

    dx(13,:) = (vte + x(3,:)) * sin(x(4,:)-x(1,:));

    dx(14,:) = (vte + x(3,:)) * cos(x(4,:)-x(1,:));

    end

  • 8/2/2019 MEM 530 Final

    28/29

    end

    Function MyTrimfunction [deltaee, deltate, alphae] = MyTrim(vt,h,gamma)

    %%Inputs

    % vt is the equilibrium velocity in ft/sec% h is the elavation in ft

    % gamma is the climb angle in degrees

    %%Purpose

    % Reference Section 3.6 for the reasoning behind the trim function.

    global x u gamma h u2

    % x is the state vector, x = [vt, alpha, theta, q]'

    % u is the input vector, u = [deltae, deltat]'

    % u2 is the secondary input vector, u = [cg, land]'

    % gamma is climb angle

    % h is elevation

    %Initial velocity

    x(1) = vt;

    %Initial elevation

    h = h;

    %Initial climb angle, in radians

    % gamma = gamma*pi/180;

    %Represents center of gravity position

    cg = 0.25;

    % 0 for clean flight, 1 for gears plus flaps

    land = 0;

    %Setup the initial input vector

    u = [.1 -10*pi/180];

    %Setup secondary input vector

    u2 = [cg, land];

    %Initial guess on alpha, in radians

    x(2) = .1;

    x(3) = x(2) + gamma;

    x(4) = 0;

    %Initial input to the cost function

    s0 = [u(1) u(2) x(2)];

    disp(['Initial cost = ', num2str(cost(s0))]);

    [s, fval] = fminsearch(@cost, s0);

    u(1) = s(1);

    u(2) = s(2);

    x(2) = s(3);

    x(3) = s(3) + gamma;

    disp(['minimum cost = ', num2str(fval)]);

    disp(['minimizing vector = ', num2str(s)]);disp(['minimizing throttle = ', num2str(s(1))]);

    disp(['minimizing elevator = ', num2str(s(2)*180/pi)]);

    disp(['minimizing alpha = ', num2str(s(3)*180/pi)]);

    deltate = s(1);

    deltaee = s(2);

    alphae = s(3);

    end

  • 8/2/2019 MEM 530 Final

    29/29

    Function transpfunction xd = transp(time, x, u, h, u2)

    %Medium-sized transport aircraft, longitundinal dynamics

    RTOD = 57.29578; %was used to convert radians to degrees

    S = 2170;

    CBAR = 17.5;MASS = 5.0E3;

    Iyy = 4.1e6;

    TSTAT = 6E4;

    DTDV = -38.0;

    ZE = 2;

    CDCLS = .042;

    CLA = .085*RTOD;

    CMA = -.022*RTOD;

    CMDE =-.016*RTOD;

    CMQ = -16.0;

    CMADOT = -6;

    CLADOT = 0;

    GD = 32.17;

    THTL = u(1);

    ELEV = u(2);XCG = u2(1);

    LAND = u2(2);

    VT = x(1);

    ALPHA = x(2);

    THETA = x(3);

    Q = x(4);

    H = h;

    [MACH, QBAR] = adc(VT,H);

    QS = QBAR*S;

    GAM = THETA - x(2);

    if LAND == 0

    CL0 = .2;

    CD0 = .016;

    CM0 = .05;

    DCDG = 0;DCMG = 0;

    elseif LAND == 1

    CL0 = 1;

    CD0 = .8;

    CM0 = -.2;

    DCDG = .02;

    DCMG = -.05;

    end

    THR = (TSTAT + VT*DTDV)*max(THTL,0);

    CL = CL0 + CLA*ALPHA;

    CM = DCMG + CM0 + CMA*ALPHA + CMDE*ELEV + CL*(XCG-.25);

    CD = DCDG + CD0 + CDCLS*CL*CL;

    xd(1) = (THR*cos(x(2))-QS*CD)/MASS - GD*sin(GAM);

    xd(2) = (-THR*sin(x(2))-QS*CL+MASS*(VT*Q+GD*cos(GAM)))/(MASS*VT+QS*CLADOT);

    xd(3) = Q;D = .5*CBAR*(CMQ*Q+CMADOT*xd(2))/VT;

    xd(4) = (QS*CBAR*(CM + D) + THR*ZE)/Iyy;

    end


Recommended