Угловое управление уровнем в автопилоте HL-20

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

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

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

open_system('csthl20_control')

Эта модель 6-DOF адаптируется от Корпуса Несущего тела (Aerospace Blockset) NASA HL-20. Модель сконфигурирована, чтобы симулировать итоговый подход к посадочной площадке. "Система наведения" генерирует траекторию глиссады и соответствующий крен, угол нападения (альфа) и угол заноса (бета) команды. Для "Системы Управления полетом" определяют задачу с корректировкой поверхностей управления, чтобы отследить эти команды. Блок "Controller" в "Системе Управления полетом" является различной подсистемой с различными настройками автопилота.

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

% 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), мы получили линеаризовавшие модели "Корпуса HL20", и "Управляет Селекторными" блоками для 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.

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

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

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

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", и "Управляет Селекторными" блоками в зависимости от (альфа, бета), самый простой способ линеаризовать целую модель "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, доктор) к угловым уровням (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, криптон для каждого (альфа, бета) значение с готовностью получено из частотной характеристики объекта на этих частотах, и графики фазы показывают, что Kp должен быть положительным (отрицательная обратная связь) и Kq, криптон должен быть отрицательным (положительная обратная связь).

% 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 этого ряда (Управление ориентацией в автопилоте HL-20 - Проект SISO) показывает, как настроить классическую архитектуру SISO, и Часть 4 (Управление ориентацией в автопилоте HL-20 - Проект MIMO) изучает преимущества архитектуры MIMO.

Похожие темы