Трехстепенная модель самолета в Matlab

В заметке приведён результат работы программы для моделирования динамики самолета. Рассматривается трехстепенная модель самолета в Matlab. Эту программу в текстовом виде Вы можете найти в книге [1, стр.180,189-190]. Трехстепенной моделью называется модель, имеющая три степени свободы. В нашем случае, это перемещения по вертикали и горизонтали, а также угол тангажа.

Для проверки трехстепенной модели, авторы решили задачу балансировки. В Matlab есть специализированные средства для моделированиия динамики самолета. Однако, мне хотелось посмотреть, как работает код, приведенный в книге. Результаты тестов из книги удалось повторить. Следует отметить две особенности, важные при сравнении получаемых результатов с данными в таблице [1, стр.190]. Во-первых, программа выводит угол атаки в радианах, а в таблице он приведен в градусах. Нужно переводить, например: 0.3856 рад = 0.3856*57.3 = 22,09 градуса. Модель работает с градусами только тогда, когда считает величины аэродинамических сил и моментов. Тригонометрические функции в Matlab работают с радианами. Угол отклонения руля высоты выводится в градусах, как в таблице. С ним все нормально. Во-вторых, в тескте книги приведен текст программы для посадочной конфигурации, то-есть, LAND=1. Для того, чтобы получить данные, указанные в упомянутой таблице, нужно установить LAND=0. В приложенном коде это сделано.

Общие сведения о структуре программы

trim — Основная функция, вызывающая все остальные. Она первой создает глобальные переменные для применения их в workspace функции cost. Это следующие переменные: вектор входных параметров x, управления u и  величина угла наклона траектории gamma. Вектор выходных параметров модели dx глобальным не является и фигурирует только в cost-функии и в самой модели. Также, trim устанавливает начальные значения и вызывает функцию fminsearch для минимизации cost-функции. То есть, фактически, trim служит для поиска параметров балансировки самолета. Для установки скорости и высоты используются переменные x(1) и x(5). Дело вкуса, конечно, однако данная функция требует от пользователя вводить имя файла cost-функции, имя файла для сохранения данных. Она также требует при каждом запуске вводить скорость, высоту и угол траектории. Я решил написать trimTable, чтобы было удобнее запускать расчет для разных параметров.

trimTable — Эта функция в книге отсутствует. Написана для оперативного расчета балансировки с различными параметрами по причинам, указанным в описании trim. Вызов fminsearch видоизменен так, чтобы программа выдавала количество вызовов cost-функции и другие данные о ходе процесса минимизации. Также изменен вывод результатов расчета балансировки, чтобы было удобнее сравнивать с результатами в книге

transp — трехстепенная модель самолета в Matlab. Текст — см. [1, стр.180]. Модель самолета по текущему вектору входных параметров x определяет элементы вектора выходных параметров (производных) dx. Вычисление производится с учетом управляющего вектора u, а также параметров (масса, площадь характеристическая, положение ЦТ) и конфигурации (закрылки, шасси) самолета. Конфигурация учитывается отличающимися аэродинамическими коэффициентами.

cost — cost-функция [1, стр.190]. Возвращает суммарную взвешенную невязку относительно нуля тех параметров, которые минимизируются в квадрате. У каждого параметра есть весовой коэффициент. Такая функция нужна для работы
fminsearch, вызываемой в trim (trimTable), и должна возвращать одно число.

adc — стандартная атмосфера [1, стр.715]. Нужна для вычисления скоростного напора в зависимости от высоты и скорости. Эту функцию может применить не только реализованная в transpModel трехстепенная модель самолета, но и шестистепенная модель. Функция в книге написана на Фортран 77. В приложенном коде — на Matlab.

Трехстепенная модель самолета — запуск и результаты

Для запуска, достаточно вызвать trimTable() в рабочем окне Matlab. Вывод программы выглядит так:

trimTable
 
 Iteration   Func-count     min f(x)         Procedure
     0            1          1.93294         
     1            4          1.85446         initial simplex
     2            6          1.75967         expand
     3            7          1.75967         reflect
     4            9          1.54939         expand
...
   122          210      7.86996e-13         contract inside
   123          212      3.66873e-13         contract inside
 
Optimization terminated:
the current x satisfies the termination criteria using
OPTIONS.TolX of 1.000000e-04 and F(X) satisfies the
convergence criteria using OPTIONS.TolFun of 1.000000e-04 

    iterations: 123
     funcCount: 212
     algorithm: 'Nelder-Mead simplex direct search'
       message: 'Optimization terminated: the current x
satisfies the termination criteria using OPTIONS.TolX of
1.000000e-04 and F(X) satisfies the convergence criteria
using OPTIONS.TolFun of 1.000000e-04'

TAS(ft/s) = 2.965105e-01, H(ft) = 0
Thrl(0...1)  Elev(deg)  AoA(deg)
0.296511	-25.732269	22.093573

Работа происходит в следующей последовательности. trimTable вызывает функцию fminsearch. Та решает задачу безусловного поиска экстремума методом Нельдера-Мида. В процессе её работы, согласно приведенному выводу, вычисление cost-функции cost происходит 212 раз. Каждый вызов cost-функции приводит к однократному вызову transp. По полученным величинам производных dx, каждый раз вычисляется невязка f в cost-функции. Невязка становится достаточно малой (3.66873e-13) и fminsearch прекращает вызовы cost, поэтому прекращаются вызовы transp. Программа завершает работу.

В результате, для скорости x(1)= TAS = 170 футов в секунду на уровне моря x(5) = 0, тяга балансировки равна 29,7%, отклонение руля высоты -25,7 градусов, балансировка осуществляется на угле атаки в 22,09 градуса. Ср. табл. 3.6-1 [1, стр.190].

Полет горизонтальный, угол атаки в cost-функции приравнивается к тангажу. Угол отклонения руля высоты считается положительным при движении задней кромки руля вниз. Применяемые единицы измерения — английские, поэтому ускорение свободного падения, применяемое для расчета силы веса, равно 32,17 фт/сек.кв.

Исходный код

Литература

[1] B.L.Stevens, F.L.Lewis, E.N.Johnson — «Aircraft Control and Simulation», 3ed.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.