Управление положением в HL-20 Autopilot - MIMO Design

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

Фон

Этот пример использует модель HL-20, адаптированную из планера НАСА HL-20 грузоподъемного тела (Aerospace Blockset), см. Часть 1 серии (Обрезка и линеаризация HL-20 планера) для получения дополнительной информации. В частях 2 и 3 мы показали, как закрыть внутренние циклы и настроить внешние контуры классической архитектуры SISO для HL-20 автопилота, смотрите Управление Угловой Скоростью в HL-20 Autopilot и Управление Отношением в HL-20 Autopilot - SISO Design для получения дополнительной информации. В этом примере мы исследуем преимущества перехода на архитектуру MIMO для внешних контуров.

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

Чтобы начать, загрузите модель, установите CTYPE для 3 выбора варианта MIMO блока Контроллера и повторного применения шагов Part 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

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

Как и в проекте SISO (Attitude Control в 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)

  • Цель «Argins», требующая запасов по амплитуде не менее 7 дБ и запасов по фазе не менее 45 степени (в смысле полей диска).

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

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

Графики усиления для контроллера MIMO PI заданы блоками «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 Function для реализации пропорциональной составляющей расписания и блок Matrix Interpolation для реализации интегральной составляющей расписания. Блок Matrix Interpolation живет в библиотеке «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)

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

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

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

См. также

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте