В этом примере показано, как использовать Toolbox™ надежного управления для конструирования контроллера с множеством входов и множеством выходов путем формирования коэффициента усиления отклика с разомкнутым контуром по частоте. Этот способ применяется для управления осью тангажа самолета HIMAT.
Мы показываем, как выбрать подходящую форму целевого цикла и использовать loopsyn функция для вычисления многопараметрического контроллера, который оптимально соответствует целевой форме цикла.
Как правило, формирование цикла представляет собой компромисс между двумя потенциально конфликтующими целями. Мы хотим максимизировать коэффициент усиления с разомкнутым контуром, чтобы получить максимально возможную производительность, но для надежности нам необходимо снизить коэффициент усиления ниже 0dB где точность модели низкая, а высокий коэффициент усиления может вызвать неустойчивость. Это требует хорошей модели, где необходима производительность (обычно на низких частотах), и достаточного скатывания на более высоких частотах, где модель часто плохая. Частота Wc, где коэффициент усиления пересекает линию 0dB, называется частотой пересечения и отмечает переход между требованиями к производительности и надежности.

Рис. 1: Характеристики формирования петель.
Существует несколько рекомендаций по выбору формы целевого цикла. Gd:
Устойчивость и надежность: Gd должен иметь коэффициент усиления менее 0dB на высоких частотах, где модель установки настолько плоха, что фазовая ошибка может приблизиться к 180 градусам.
Производительность: Gd должны иметь высокий выигрыш там, где требуется хорошая точность управления и хорошее отклонение возмущений.
Кроссовер и роллофф: Gd должен пересекать линию 0dB между этими двумя частотными областями и скатываться с наклоном от -20 до -40 дБ/декада мимо перекрестной частоты Wc.
Простая форма целевого цикла
Wc/s
где кроссовер Wc представляет собой обратную величину времени нарастания требуемой реакции на шаг.
В иллюстративных целях используем шестиступенчатую модель продольной динамики самолёта HiMAT, обрезанного на 25000 футов и 0,9 Mach. Динамика самолёта нестабильна, с двумя фугоидными режимами правой половины плоскости.
Рисунок 2: Самолет НАСА HiMAT
Эта модель имеет два управляющих входа:
Отклонение элевона
Отклонение Канара
Он также имеет два измеряемых выхода:
Угол атаки альфа
Угол тангажа тета
Модель ненадежна за пределами 100 рад/с. Режимы изгиба фюзеляжа и другие неопределённые факторы вызывают отклонения между моделью и истинным самолётом на целых 20 децибел (или 1000%) сверх частоты 100 рад/с.
ag = [
-2.2567e-02 -3.6617e+01 -1.8897e+01 -3.2090e+01 3.2509e+00 -7.6257e-01;
9.2572e-05 -1.8997e+00 9.8312e-01 -7.2562e-04 -1.7080e-01 -4.9652e-03;
1.2338e-02 1.1720e+01 -2.6316e+00 8.7582e-04 -3.1604e+01 2.2396e+01;
0 0 1.0000e+00 0 0 0;
0 0 0 0 -3.0000e+01 0;
0 0 0 0 0 -3.0000e+01];
bg = [0 0;
0 0;
0 0;
0 0;
30 0;
0 30];
cg = [0 1 0 0 0 0;
0 0 0 1 0 0];
dg = [0 0;
0 0];
G = ss(ag,bg,cg,dg);
G.InputName = {'elevon','canard'};
G.OutputName = {'alpha','theta'};
clf
step(G), title('Open-loop step response of HIMAT aircraft')
Наша задача - контролировать alpha и theta путем ввода соответствующих команд elevon и canard. Мы также хотим минимального распространения между каналами - то есть команда в альфа должна иметь минимальное влияние на тета и наоборот.
Проектирование контроллера с помощью loopsyn включает в себя следующие этапы:
Шаг 1: Посмотрите на динамику завода и ответы
Шаг 2: Укажите требуемую форму контура Gd
Шаг 3: Использование loopsyn для вычисления оптимального контроллера формирования цикла
Шаг 4: Анализ фигурного контура L, замкнутого контура T и чувствительности S
Шаг 5: Убедитесь, что ответы с замкнутым циклом соответствуют вашим спецификациям.
В этом примере модель самолета G Имеет два нестабильных полюса фугоидной моды правой половины плоскости. Он имеет один ноль, который находится в левой половине плоскости:
plant_poles = pole(G)
plant_poles = 6×1 complex
-5.6757 + 0.0000i
0.6898 + 0.2488i
0.6898 - 0.2488i
-0.2578 + 0.0000i
-30.0000 + 0.0000i
-30.0000 + 0.0000i
plant_zeros = tzero(G)
plant_zeros = -0.0210
Мы будем использовать sigma для построения графика минимального и максимального усиления ввода-вывода в зависимости от частоты:
clf, sigma(G,'g',{.1,100}); title('Singular value plot for aircraft model G(s)');

Рисунок 4 - График сингулярных значений для модели (моделей) самолета G (s ).
Для этой конструкции мы используем целевую форму цикла Gd (s) = 8/s, соответствующую времени нарастания около 1/8 = 0,125 с.
s = zpk('s'); % Laplace variable s Gd = 8/s; sigma(Gd,{.1 100}) grid title('Target loop shape Gd(s).') % create textarrow pointing to crossover frequency Wc hold on; plot([8,35],[0,21],'k.-'); plot(8,0,'kd'); plot([.1,100],[0 0],'k'); text(3,23,'Crossover Frequency \omega_c = 8'); hold off;

Рисунок 5: Целевая форма петли Gd (s).
Теперь мы готовы разработать контроллер H-бесконечности K, так что коэффициенты усиления отклика G (s) * K (s) с разомкнутым контуром также соответствуют целевой форме Gd контура (при стабилизации динамики самолета).
[K,CL,GAM] = loopsyn(G,Gd); GAM
GAM = 1.6447
Стоимость GAM около 1,6 указывает на то, что форма целевой петли была достигнута в пределах +/-4,3 дБ (с использованием 20*log10(GAM) = 4.3). Сравнение сингулярных значений разомкнутого контура L = G*K с формой target-loop Gd:
L = G*K; % form the compensated loop L sigma(Gd,'b',L,'r--',{.1,100}); grid legend('Gd (target loop shape)','L (actual loop shape)');

Рис. 6: Сингулярные значения L по сравнению с Gd
Далее мы сравним коэффициенты усиления передачи с разомкнутым контуром L, передачи с замкнутым контуром T и функции чувствительности S.
T = feedback(L,eye(2));
T.InputName = {'alpha command','theta command'};
S = eye(2)-T;
% SIGMA frequency response plots
sigma(inv(S),'m',T,'g',L,'r--',Gd,'b',Gd/GAM,'b:',...
Gd*GAM,'b:',{.1,100})
legend('1/\sigma(S) performance',...
'\sigma(T) robustness',...
'\sigma(L) open loop',...
'\sigma(Gd) target loop shape',...
'\sigma(Gd) \pm GAM(dB)');
% Make lines wider and fonts larger
% set(findobj(gca,'Type','line','-not','Color','b'),'LineWidth',2);
h = findobj(gca,'Type','line','-not','Color','b');
set(h,'LineWidth',2);
Рис. 7: Графики частотной характеристики Sigma.
Наконец, на этом этапе мы строим график ступенчатых откликов системы с замкнутым контуром T.
step(T,8)
title('Responses to step commands for alpha and theta');
Рис. 8: Ответы на пошаговые команды для альфа и тета.
Наш дизайн выглядит хорошо. Альфа - и тета-контроли достаточно развязаны, перестрелка меньше 15 процентов, а пиковое время составляет всего 0,5 секунды.
Мы только что разработали контроллер с 2 входами и 2 выходами K с удовлетворительной производительностью. Однако этот контроллер имеет довольно высокий порядок:
size(K)
State-space model with 2 outputs, 2 inputs, and 17 states.
Теперь мы можем использовать алгоритмы уменьшения модели, чтобы попытаться упростить этот контроллер, сохраняя его рабочие характеристики. Сначала мы вычисляем сингулярные значения Ханкеля K чтобы понять, сколько состояний контроллера эффективно способствуют закону управления:
hsv = hankelsv(K); semilogy(hsv,'*--') grid title('Hankel singular values of K') xlabel('Order')

Рисунок 9: Сингулярные значения Hankel для К.
Сингулярные значения Ханкеля (HSV) измеряют относительную энергию каждого состояния при сбалансированной реализации K. HSV начинают падать более круто после 10-го состояния, поэтому попробуйте вычислить приближение К 10-го порядка.
Kr = reduce(K,10); order(Kr)
ans = 10
Упрощенный контроллер Kr имеет порядок 10 по сравнению с 17 для начального контроллера K. Сравнение аппроксимационной ошибки K-Kr по частоте с коэффициентом усиления K.
sigma(K,'b',K-Kr,'r-.',{1e-4,1e6}) legend('K','error K-Kr')

Этот график предполагает, что ошибка аппроксимации мала в относительном выражении, поэтому сравните отклики с обратной связью с исходным и упрощенным контроллерами K и Kr.
Tr = feedback(G*Kr,eye(2)); step(T,'b',Tr,'r-.',8) title('Responses to step commands for alpha and theta'); legend('K','Kr')

Рис. 11: Ответы на пошаговые команды для альфа и тета.
Два ответа неразличимы, поэтому упрощенный контроллер 10-го порядка Kr является хорошей заменой K для целей реализации.