exponenta event banner

Контроль положения в автопилоте HL-20 - MIMO Design

Это часть 4 примера серии по проектированию и настройке системы управления полетом для HL-20 транспортного средства. В этой части показано, как настроить архитектуру MIMO PI для управления креном, шагом и рысканием транспортного средства.

Фон

В этом примере используется модель HL-20, адаптированная из NASA HL-20 Lifting Body Airframe (Aerospace Blockset), см. Часть 1 серии (Trimming and Linearization of the HL-20 Airfair) для получения подробной информации. В частях 2 и 3 мы показали, как замкнуть внутренние петли и настроить внешние петли классической архитектуры SISO для автопилота HL-20, см. Управление угловой скоростью в автопилоте HL-20 и управление ориентацией в автопилоте HL-20 SISO Design для подробностей. В этом примере рассматриваются преимущества переключения на архитектуру MIMO для внешних контуров.

В этой архитектуре три контура PI для тона, альфа, бета заменяются 3-входным, 3-выходным контроллером PI, который смешивает измерения тона, альфа и бета для вычисления уставок внутреннего контура p_demand, q_demand, r_demand. Интуитивно эта архитектура должна быть более успешной для уменьшения перекрестных связей между осями. Заметим, что коэффициенты усиления P и I представляют собой матрицы 3 на 3, запланированные как функция альфа и бета.

Для начала загрузите модель, установите CTYPE 3, чтобы выбрать вариант MIMO блока Controller, и повторно применить шаги части 2 для замыкания внутренних контуров (эта часть конструкции неизменна). Обратите внимание, что это создает и настраивает slTuner интерфейс ST0 для взаимодействия с моделью Simulink.

load_system('csthl20_control')
CTYPE = 3;  % MIMO architecture
HL20recapPart2

ST0
 
slTuner tuning interface for "csthl20_control":

No tuned blocks. Use the addBlock command to add new blocks.
9 Analysis points: 
--------------------------
Point 1: Signal "da;de;dr", located at 'Output Port 1' of csthl20_control/Flight Control System/Controller
Point 2: Signal "pqr", located at 'Output Port 2' of csthl20_control/HL20 Airframe
Point 3: 'Output Port 1' of csthl20_control/Flight Control System/Alpha_deg
Point 4: 'Output Port 1' of csthl20_control/Flight Control System/Beta_deg
Point 5: 'Output Port 1' of csthl20_control/Flight Control System/Phi_deg
Point 6: 'Output Port 1' of csthl20_control/Flight Control System/Controller/MIMO/Demands
Point 7: Signal "p_demand", located at 'Output Port 1' of csthl20_control/Flight Control System/Controller/MIMO/Roll-off1
Point 8: Signal "q_demand", located at 'Output Port 1' of csthl20_control/Flight Control System/Controller/MIMO/Roll-off2
Point 9: Signal "r_demand", located at 'Output Port 1' of csthl20_control/Flight Control System/Controller/MIMO/Roll-off3
 
No permanent openings. Use the addOpening command to add new permanent openings.
Properties with dot notation get/set access:
      Parameters         : [] 
      OperatingPoints    : [] (model initial condition will be used.)
      BlockSubstitutions : [3x1 struct]
      Options            : [1x1 linearize.SlTunerOptions]
      Ts                 : 0

Настройка настройки внешнего контура

Как и в конструкции SISO (Управление ориентацией в HL-20 Autopilot - SISO Design), первым шагом является получение линеаризованной модели «растения», видимой внешними контурами при каждом (альфа, бета) состоянии. Чтобы учесть тот факт, что усиления внутреннего цикла Kp, Kq, Kr изменяются на (альфа, бета), замените блок «MIMO/Product» на его линейный эквивалент, который является диагональной матрицей усиления.

$$\left( \begin{array}{ccc} Kp(\alpha,\beta) & 0 & 0 \\ 0 & Kq(\alpha,\beta) & 0 \\
0 & 0 & Kr(\alpha,\beta) \end{array} \right) . $$

Blk = 'csthl20_control/Flight Control System/Controller/MIMO/Product';
Subs = [zeros(3) append(ss(Kp),ss(Kq),ss(Kr))];
BlockSub4 = struct('Name',Blk,'Value',Subs);

ST0.BlockSubstitutions = [ST0.BlockSubstitutions ; BlockSub4];

Графики усиления «P» и «I» инициализируются в матрицы постоянной диагонали diag([0.05, 0.05, -0.05]). Постройте график угловых откликов для этих начальных настроек.

T0 = getIOTransfer(ST0,'Demand',{'Phi_deg','Alpha_deg','Beta_deg'});
step(T0,6)

Настройка целей

Для настройки графиков усиления MIMO мы используем следующие три цели настройки:

  • Цель «Чувствительность» - задать требуемую полосу пропускания (время отклика) и максимизировать развязку на низкой частоте.

s = tf('s');
R1 = TuningGoal.Sensitivity({'Phi_deg','Alpha_deg','Beta_deg'},s);
R1.Focus = [1e-2 1];
R1.LoopScaling = 'off';

viewGoal(R1)

  • Ограничение «Gain» для передачи по замкнутому контуру от угловых требований к угловым откликам. Профиль усиления выбран для обеспечения адекватного скатывания и ограничения перестрелки (что связано с горбом вблизи кроссовера).

MaxGain = 1.2 * (10/(s+10))^2;  % max gain profile
R2 = TuningGoal.Gain('Demands',{'Phi_deg','Alpha_deg','Beta_deg'},MaxGain);

viewGoal(R2)

  • Цель «Поля» - требовать поля усиления не менее 7 дБ и поля фазы не менее 45 градусов (в смысле поля диска).

R3 = TuningGoal.Margins('da;de;dr',7,45);

Настройка графика усиления

Графики усиления для PI-контроллера MIMO определяются блоками «P» и «I» в архитектуре MIMO. Напомним, что эти блоки выводят матрицы 3 на 3 и реализуют функцию передачи MIMO:

$$ \left( \begin{array}{c} p_{\rm demand} \\ q_{\rm demand} \\ r_{\rm demand} \end{array} \right) =
\frac{10}{s+10} (P + I / s)
\left( \begin{array}{c} \phi_{\rm deg} \\ \alpha_{\rm deg} \\ \beta_{\rm deg} \end{array} \right). $$

Для иллюстрации мы используем функциональный блок MATLAB для реализации графика пропорционального усиления и блок матричной интерполяции для реализации плана интегрального усиления. Блок интерполяции матриц находится в библиотеке «Simulink Extras» и представляет собой таблицу подстановки, в которой каждая запись таблицы является матрицей.

Чтобы настроить графики усиления P и I, отметьте соответствующие блоки как настраиваемые в slTuner интерфейс.

TunedBlocks = {'MIMO/P' , 'MIMO/I'};
ST0.addBlock(TunedBlocks)

Параметризовать каждую настроенную спецификацию усиления как полиномиальную поверхность в альфа и бета. Снова мы используем квадратичную поверхность для пропорционального усиления и многолинейную поверхность для интегрального усиления.

% Grid of (alpha,beta) design points
alpha_vec = -10:5:25;	 % Alpha Range
beta_vec = -10:5:10;     % Beta Range
[alpha,beta] = ndgrid(alpha_vec,beta_vec);
SG = struct('alpha',alpha,'beta',beta);

% Proportional gain matrix
alphabetaBasis = polyBasis('canonical',2,2);
P0 = diag([0.05 0.05 -0.05]);  % initial (constant) value
PS = tunableSurface('P', P0, SG, alphabetaBasis);
ST0.setBlockParam('P',PS);

% Integral gain matrix
alphaBasis = @(alpha) alpha;
betaBasis = @(beta) abs(beta);
alphabetaBasis = ndBasis(alphaBasis,betaBasis);
I0 = diag([0.05 0.05 -0.05]);
IS = tunableSurface('I', I0, SG, alphabetaBasis);
ST0.setBlockParam('I',IS);

Наконец, используйте systune настроить 6 поверхностей усиления на три цели настройки.

ST = systune(ST0,[R1 R2 R3]);
Final: Soft = 1.13, Hard = -Inf, Iterations = 105

Конечное значение целевой функции указывает, что цели настройки почти выполнены (цель настройки удовлетворяется, когда её «значение» меньше единицы). Постройте график угловых откликов с замкнутым контуром и сравните его с проектом базовой линии.

T = getIOTransfer(ST,'Demand',{'Phi_deg','Alpha_deg','Beta_deg'});
step(T0,T,6)
legend('Baseline','Tuned','Location','SouthEast')

Эти ответы показывают значительное снижение перерасхода и перекрестной связи по сравнению с конструкцией SISO.

Проверка

Для дальнейшей проверки этой конструкции переместите настроенные поверхности усиления в модель Simulink.

writeBlockValue(ST)

Для блока интерполяции матрицы «I» выполняется выборка поверхности усиления в точках останова таблицы и обновление данных таблицы в рабочем пространстве модели. Для функционального блока «P» MATLAB это генерирует код MATLAB для уравнений поверхности усиления. Для просмотра этого кода дважды щелкните по блоку.

Как только вы передвинете выигрыш в Simulink, настройка архитектуры MIMO будет завершена, и вы сможете смоделировать ее поведение во время захода на посадку.

Эти ответы не очень отличаются от дизайна SISO (Контроль за отношением в автопилоте HL-20 - Дизайн SISO) из-за умеренных требований в течение маневра. Преимущества конструкции MIMO будут более заметны при более сложном маневре.

См. также

Связанные темы