exponenta event banner

Формирование контура контроллера оси шага HIMAT

В этом примере показано, как использовать Toolbox™ надежного управления для конструирования контроллера с множеством входов и множеством выходов путем формирования коэффициента усиления отклика с разомкнутым контуром по частоте. Этот способ применяется для управления осью тангажа самолета HIMAT.

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

Характеристики формирования петель: производительность, пропускная способность и надежность

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

Рис. 1: Характеристики формирования петель.

Форма целевого цикла

Существует несколько рекомендаций по выбору формы целевого цикла. Gd:

  • Устойчивость и надежность: Gd должен иметь коэффициент усиления менее 0dB на высоких частотах, где модель установки настолько плоха, что фазовая ошибка может приблизиться к 180 градусам.

  • Производительность: Gd должны иметь высокий выигрыш там, где требуется хорошая точность управления и хорошее отклонение возмущений.

  • Кроссовер и роллофф: Gd должен пересекать линию 0dB между этими двумя частотными областями и скатываться с наклоном от -20 до -40 дБ/декада мимо перекрестной частоты Wc.

Простая форма целевого цикла

Gd = Wc/s

где кроссовер Wc представляет собой обратную величину времени нарастания требуемой реакции на шаг.

Модель самолета НАСА HiMAT

В иллюстративных целях используем шестиступенчатую модель продольной динамики самолёта 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')

Figure contains 4 axes. Axes 1 with title From: elevon contains an object of type line. This object represents G. Axes 2 contains an object of type line. This object represents G. Axes 3 with title From: canard contains an object of type line. This object represents G. Axes 4 contains an object of type line. This object represents G.

Наша задача - контролировать alpha и theta путем ввода соответствующих команд elevon и canard. Мы также хотим минимального распространения между каналами - то есть команда в альфа должна иметь минимальное влияние на тета и наоборот.

Этапы проектирования формирования контуров

Проектирование контроллера с помощью loopsyn включает в себя следующие этапы:

  • Шаг 1: Посмотрите на динамику завода и ответы

  • Шаг 2: Укажите требуемую форму контура Gd

  • Шаг 3: Использование loopsyn для вычисления оптимального контроллера формирования цикла

  • Шаг 4: Анализ фигурного контура L, замкнутого контура T и чувствительности S

  • Шаг 5: Убедитесь, что ответы с замкнутым циклом соответствуют вашим спецификациям.

Шаг 1: Анализ динамики завода

В этом примере модель самолета 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)');

Figure contains an axes. The axes contains 2 objects of type line. This object represents G.

Рисунок 4 - График сингулярных значений для модели (моделей) самолета G (s ).

Шаг 2: Задание целевой требуемой формы цикла Gd

Для этой конструкции мы используем целевую форму цикла 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;

Figure contains an axes. The axes contains 5 objects of type line, text. This object represents Gd.

Рисунок 5: Целевая форма петли Gd (s).

Шаг 3. Использование LOOPSYN для вычисления оптимального контроллера формирования петель

Теперь мы готовы разработать контроллер 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)');

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Gd (target loop shape), L (actual loop shape).

Рис. 6: Сингулярные значения L по сравнению с Gd

Шаг 4: Анализ фигурного контура L, замкнутого контура T и чувствительности S

Далее мы сравним коэффициенты усиления передачи с разомкнутым контуром 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);

Figure contains an axes. The axes contains 9 objects of type line. These objects represent 1/\sigma(S) performance, \sigma(T) robustness, \sigma(L) open loop, \sigma(Gd) target loop shape, \sigma(Gd) \pm GAM(dB), untitled3.

Рис. 7: Графики частотной характеристики Sigma.

Шаг 5: Проверка соответствия ответов с замкнутым циклом вашим спецификациям

Наконец, на этом этапе мы строим график ступенчатых откликов системы с замкнутым контуром T.

step(T,8)
title('Responses to step commands for alpha and theta');

Figure contains 4 axes. Axes 1 with title From: alpha command contains an object of type line. This object represents T. Axes 2 contains an object of type line. This object represents T. Axes 3 with title From: theta command contains an object of type line. This object represents T. Axes 4 contains an object of type line. This object represents T.

Рис. 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')

Figure contains an axes. The axes with title Hankel singular values of K contains an object of type line.

Рисунок 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')

Figure contains an axes. The axes contains 4 objects of type line. These objects represent 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')

Figure contains 4 axes. Axes 1 with title From: alpha command contains 2 objects of type line. These objects represent K, Kr. Axes 2 contains 2 objects of type line. These objects represent K, Kr. Axes 3 with title From: theta command contains 2 objects of type line. These objects represent K, Kr. Axes 4 contains 2 objects of type line. These objects represent K, Kr.

Рис. 11: Ответы на пошаговые команды для альфа и тета.

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

См. также

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