# Trim and Linearize an Airframe

This example shows how to trim and linearize an airframe using Simulink® Control Design™ software.

The goal is to find the elevator deflection and the resulting trimmed body rate that generate a given angle of incidence when the airframe is traveling at a set speed.

Once you find the trim condition, you can compute a linear model for the dynamics of the states around the trim condition.

Fixed parameters:

• Angle of incidence (`Theta`)

• Body attitude (`U`)

• Position

• Elevator deflection (`w`)

• Body rate (`q`)

### Compute Operating Points

Open the model.

```mdl = 'scdairframe'; open_system(mdl) ``` Create an operating point specification object for the model using the model initial conditions.

```opspec = operspec(mdl) ```
```opspec = Operating point specification for the Model scdairframe. (Time-Varying Components Evaluated at time t=0) States: ---------- <strong>x</strong> <strong>Known</strong> <strong>SteadyState</strong> <strong>Min</strong> <strong>Max</strong> <strong>dxMin</strong> <strong>dxMax</strong> <strong>_____</strong> <strong>_____</strong> <strong>___________</strong> <strong>____</strong> <strong>___</strong> <strong>_____</strong> <strong>_____</strong> (1.) scdairframe/EOM/ Equations of Motion (Body Axes)/Position 0 false true -Inf Inf -Inf Inf -3048 false true -Inf Inf -Inf Inf (2.) scdairframe/EOM/ Equations of Motion (Body Axes)/Theta 0 false true -Inf Inf -Inf Inf (3.) scdairframe/EOM/ Equations of Motion (Body Axes)/U,w 984 false true -Inf Inf -Inf Inf 0 false true -Inf Inf -Inf Inf (4.) scdairframe/EOM/ Equations of Motion (Body Axes)/q 0 false true -Inf Inf -Inf Inf Inputs: ---------- <strong>u</strong> <strong>Known</strong> <strong>Min</strong> <strong>Max</strong> <strong>_</strong> <strong>_____</strong> <strong>____</strong> <strong>___</strong> (1.) scdairframe/Fin Deflection 0 false -Inf Inf Outputs: ---------- <strong>y</strong> <strong>Known</strong> <strong>Min</strong> <strong>Max</strong> <strong>_</strong> <strong>_____</strong> <strong>____</strong> <strong>___</strong> (1.) scdairframe/q 0 false -Inf Inf (2.) scdairframe/az 0 false -Inf Inf ```

Specify which states in the model are:

• Known at the operating point

• At steady state at the operating point

Specify that the `Position` states are known and not at steady state. For the state values, specified in `opspec.States(1).x`, use the default values from the model initial condition.

```opspec.States(1).Known = [1;1]; opspec.States(1).SteadyState = [0;0]; ```

Specify that the second state, which corresponds to the angle of incidence `Theta`, is known but not at steady state. As with the position states, use the default state value from the model initial condition.

```opspec.States(2).Known = 1; opspec.States(2).SteadyState = 0; ```

The third state specification includes the body axis angular rates `U` and `w`. Specify that both states are known at the operating point and that `w` is at steady state.

```opspec.States(3).Known = [1 1]; opspec.States(3).SteadyState = [0 1]; ```

Search for the operating point that meets these specifications.

```op = findop(mdl,opspec); ```
``` Operating point search report: --------------------------------- opreport = Operating point search report for the Model scdairframe. (Time-Varying Components Evaluated at time t=0) Operating point specifications were successfully met. States: ---------- <strong>Min</strong> <strong>x</strong> <strong>Max</strong> <strong>dxMin</strong> <strong>dx</strong> <strong>dxMax</strong> <strong>_____</strong> <strong>__________</strong> <strong>_____</strong> <strong>_____</strong> <strong>___________</strong> <strong>_____</strong> (1.) scdairframe/EOM/ Equations of Motion (Body Axes)/Position 0 0 0 -Inf 984 Inf -3048 -3048 -3048 -Inf 0 Inf (2.) scdairframe/EOM/ Equations of Motion (Body Axes)/Theta 0 0 0 -Inf -0.0097235 Inf (3.) scdairframe/EOM/ Equations of Motion (Body Axes)/U,w 984 984 984 -Inf 22.69 Inf 0 0 0 0 -1.4367e-11 0 (4.) scdairframe/EOM/ Equations of Motion (Body Axes)/q -Inf -0.0097235 Inf 0 1.1477e-16 0 Inputs: ---------- <strong>Min</strong> <strong>u</strong> <strong>Max</strong> <strong>____</strong> <strong>_________</strong> <strong>___</strong> (1.) scdairframe/Fin Deflection -Inf 0.0014161 Inf Outputs: ---------- <strong>Min</strong> <strong>y</strong> <strong>Max</strong> <strong>____</strong> <strong>__________</strong> <strong>___</strong> (1.) scdairframe/q -Inf -0.0097235 Inf (2.) scdairframe/az -Inf -0.24207 Inf ```

### Linearize Model

To linearize the model at the computed operating point, first specify the linearization input and output points.

```io(1) = linio('scdairframe/Fin Deflection',1,'input'); io(2) = linio('scdairframe/EOM',3,'output'); io(3) = linio('scdairframe/Selector',1,'output'); ```

Linearize the model at the operating point.

```sys = linearize(mdl,op,io); ```

Plot the Bode magnitude response for the linear model.

```bodemag(sys) bdclose('scdairframe') ```  