Управление угловой частотой в HL-20 Autopilot

Это часть 2 серии примеров по проекту и настройке системы управления рейсом для HL-20 транспортного средства. Эта часть посвящена закрытию внутренних циклов, управляющих угловыми скоростями тела.

Архитектура управления

Откройте модель HL-20 с ее системой управления рейсом.

open_system('csthl20_control')

Эта 6-DOF модель адаптирована из планера НАСА HL-20 грузоподъемного тела (Aerospace Blockset). Модель сконфигурирована, чтобы симулировать окончательный заход на посадочную площадку. «Система руководства» генерирует траекторию глиссады и соответствующие команды крена, угла атаки (альфа) и угла боковой оси (бета). Перед «Системой управления рейсом» поставлена задача настроить поверхности управления для отслеживания этих команд. Блок «Controller» внутри «Flight Control System» является альтернативной подсистемой с различными строениями автопилота.

Контроллеры «Baseline» и «Classical» используют классическую архитектуру каскадного цикла с тремя внутренними циклами только P для управления угловыми скоростями p, q, r и тремя внешними циклами PI для управления угловыми положениями phi, альфа, бета. Все шесть пропорциональных составляющих и три интегральных составляющих запланированы как функция альфа и бета. Вариант «Baseline» содержит базовый проект, представленный в планере HL-20 Lifting Body (Aerospace Blockset) НАСА. Части 2 и 3 этой серии используют вариант «Classical», чтобы пройти процесс настройки. Активным вариантом управляет переменная рабочей области CTYPE. Установите его значение 2, чтобы активировать «Классический» вариант контроллера.

% Select "Classical" variant of controller
CTYPE = 2;

% call model update to make sure only active variant signals are analyzed during linearization
set_param('csthl20_control', 'SimulationCommand', 'update');

Обратите внимание, что этот вариант использует смесь интерполяционных таблиц и блоков MATLAB function, чтобы запланировать коэффициент усиления автопилота.

Setup настройки контроллера

В Части 1 этой серии (Обрезка и Линеаризация HL-20 Airframe) мы получили линеаризированные модели блоков «HL20 Airframe» и «Controls Selector» для 40 различных ориентаций самолета (40 различных пар (альфа, бета) значений). Загрузите эти массивы линеаризированных моделей.

load csthl20_TrimData G7 CS

size(G7)
8x5 array of state-space models.
Each model has 34 outputs, 9 inputs, and 7 states.
size(CS)
8x5 array of state-space models.
Each model has 6 outputs, 5 inputs, and 0 states.

The slTuner интерфейс является удобным способом получения линеаризированных моделей «csthl20_control», которые подходят для управления разработки системы и анализа. Через этот интерфейс можно обозначить сигналы и точки интереса в модели и определить, какие блоки вы хотите настроить.

ST0 = slTuner('csthl20_control');
ST0.Ts = 0;   % ask for continuous-time linearizations

Здесь точки интереса включают требования к углу и скорости, соответствующие отклики и отклонения da, de, dr.

AP = {'da;de;dr'
   'HL20 Airframe/pqr'
   'Alpha_deg'
   'Beta_deg'
   'Phi_deg'
   'Controller/Classical/Demands'  % angular demands
   'p_demand'
   'q_demand'
   'r_demand'};
ST0.addPoint(AP)

Поскольку мы уже получили линейные модели блоков «HL20 Airframe» и «Controls Selector» как функцию (альфа, бета), самый простой способ линеаризации всей модели «csthl20_control» - это замена каждого нелинейного компонента семейством линейных моделей. Это называется «подстановкой блоков» и часто является наиболее эффективным способом линеаризации сложных моделей при нескольких рабочих условиях.

% Replace "HL20 Airframe" block by 8-by-5 array of linearized models G7
BlockSub1 = struct('Name','csthl20_control/HL20 Airframe','Value',G7);

% Replace "Controls Selector" by CS
BlockSub2 = struct('Name','csthl20_control/Flight Control System/Controls Selector','Value',CS);

% Replace "Actuators" by direct feedthrough (ignore saturations and second-order actuator dynamics)
BlockSub3 = struct('Name','csthl20_control/Actuators','Value',eye(6));

ST0.BlockSubstitutions = [BlockSub1 ; BlockSub2 ; BlockSub3];

Теперь вы готовы к системе управления части.

Закрытие внутренних циклов

Начнем с трёх внутренних циклов, управляющих угловыми скоростями p, q, r. Чтобы стать ориентированным, постройте график передаточной функции без разомкнутого контура от отклонений (da, de, dr) к угловым скоростям (p, q, r). С slTuner интерфейс, можно запросить модель для любой передаточной функции, представляющей интерес.

% NOTE: The second 'da;de;dr' opens all feedback loops at the plant input
Gpqr = getIOTransfer(ST0,'da;de;dr','pqr','da;de;dr');

bode(Gpqr(1,1),Gpqr(2,2),Gpqr(3,3),{1e-1,1e3}), grid
legend('da to p','de to q','dr to r')

Эта диаграмма Боде предполагает, что диагональные условия ведут себя как интеграторы (вплоть до знака) за пределами 5 рад/с. Это оправдывает использование управления только пропорциональным. В соответствии с проектом базовой линии, установите целевую пропускную способность для циклов p, q, r равной 30, 22,5 и 37,5 рад/с, соответственно. Усиления Kp, Kq, Kr для каждого значения (альфа, бета) легко получаются из частотной характеристики объекта на этих частотах, и фазовые графики указывают, что Kp должен быть положительным (отрицательная обратная связь) и Kq, Kr должен быть отрицательным (положительная обратная связь).

% Compute Kp,Kq,Kr for each (alpha,beta) condition. Resulting arrays
% have size [1 1 8 5]
Kp = 1./abs(evalfr(Gpqr(1,1),30i));
Kq = -1./abs(evalfr(Gpqr(2,2),22.5i));
Kr = -1./abs(evalfr(Gpqr(3,3),37.5i));

bode(Gpqr(1,1)*Kp,Gpqr(2,2)*Kq,Gpqr(3,3)*Kr,{1e-1,1e3}), grid
legend('da to p','de to q','dr to r')

Чтобы завершить проект внутреннего контура, нажмите эти значения усиления в соответствующие интерполяционные таблицы в модели Simulink и обновите slTuner объект.

MWS = get_param('csthl20_control','ModelWorkspace');
MWS.assignin('Kp',squeeze(Kp))
MWS.assignin('Kq',squeeze(Kq))
MWS.assignin('Kr',squeeze(Kr))

refresh(ST0)

Далее вам нужно настроить внешние контуры, управляющие креном, углом атаки и углом боковой оси. Часть 3 этой серии (Attitude Control в HL-20 Autopilot - SISO Design) показывает, как настроить классическую архитектуру SISO, а часть 4 (Attitude Control в HL-20 Autopilot - MIMO Design) рассматривает преимущества архитектуры MIMO.

Похожие темы