Обрезка и линеаризация планера

В этом примере показано, как обрезать и линеаризировать планер. Нам сначала нужно найти отклонение лифта и полученную обрезанную скорость тела (q), которая сгенерирует заданное значение инцидентности, когда планер перемещается с заданной скоростью. Как только мы найдем условие обрезки, мы можем вывести линейную модель для динамики состояний вокруг условия обрезки.

        Fixed parameters  :
                            Incidence (Theta)
                            Body attitude (U)
                            Position
        Trimmed steady state parameters :
                            Elevator deflection (w)
                            Body rate (q)

Генерация рабочих точек

Откройте модель.

scdairframe

Чтобы получить объект спецификации рабочей точки, вы используете команду operspec:

opspec = operspec('scdairframe')
 Operating point specification for the Model scdairframe.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) scdairframe/EOM/ Equations of Motion (Body Axes)/Position
	 spec:  dx = 0,  initial guess: 0
	 spec:  dx = 0,  initial guess: -3.05e+03
(2.) scdairframe/EOM/ Equations of Motion (Body Axes)/Theta
	 spec:  dx = 0,  initial guess: 0
(3.) scdairframe/EOM/ Equations of Motion (Body Axes)/U,w
	 spec:  dx = 0,  initial guess: 984
	 spec:  dx = 0,  initial guess: 0
(4.) scdairframe/EOM/ Equations of Motion (Body Axes)/q
	 spec:  dx = 0,  initial guess: 0

Inputs: 
----------
(1.) scdairframe/Fin Deflection
	 initial guess: 0            

Outputs: 
----------
(1.) scdairframe/q
	 spec:  none
(2.) scdairframe/az
	 spec:  none


Во-первых, мы устанавливаем спецификации состояния Position, которые известны, но не в установившемся состоянии:

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

Вторая спецификация состояния является Theta, который известен, но не в установившемся состоянии:

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

Третья спецификация состояния включает угловые скорости оси тела, где переменная w находится в установившемся состоянии:

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

Далее мы ищем рабочую точку, которая соответствует этой спецификации.

op = findop('scdairframe',opspec);
 Operating point search report:
---------------------------------

 Operating point search report for the Model scdairframe.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) scdairframe/EOM/ Equations of Motion (Body Axes)/Position
      x:             0      dx:           984
      x:     -3.05e+03      dx:             0
(2.) scdairframe/EOM/ Equations of Motion (Body Axes)/Theta
      x:             0      dx:      -0.00972
(3.) scdairframe/EOM/ Equations of Motion (Body Axes)/U,w
      x:           984      dx:          22.7
      x:             0      dx:     -1.44e-11 (0)
(4.) scdairframe/EOM/ Equations of Motion (Body Axes)/q
      x:      -0.00972      dx:      1.72e-16 (0)

Inputs: 
----------
(1.) scdairframe/Fin Deflection
      u:       0.00142    [-Inf Inf]

Outputs: 
----------
(1.) scdairframe/q
      y:      -0.00972    [-Inf Inf]
(2.) scdairframe/az
      y:        -0.242    [-Inf Inf]

Линеаризация модели

Теперь рабочие точки готовы к линеаризации. Во-первых, мы задаем входную и выходные точки с помощью следующих команд:

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

Линеаризируйте модель и постройте график характеристики величины Бода для каждого условия.

sys = linearize('scdairframe',op,io);
bodemag(sys)

bdclose('scdairframe')