Цикл контроллера оси тангажа HIMAT

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

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

Спецификации Loop Shaping: Эффективность, пропускная способность и робастность

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

Фигура 1: Спецификации формирования цикла.

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

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

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

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

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

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

Gd=Wc/s

где кроссовер Wc является взаимным значением времени нарастания желаемой переходной характеристики.

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

В иллюстрационных целях воспользуемся шестигосударственной моделью продольной динамики самолета HiMAT, обрезанной на 25000 футов и 0,9 Мач. Динамика самолета нестабильна, с двумя правыми полуплоскостными фугоидными режимами.

Фигура 2: Самолет НАСА HiMAT

Эта модель имеет два входов управления:

  • Отклонение высоты

  • Отклонение Канарда

Он также имеет два измеренных выхода:

  • Угол атаки альфа

  • Угол тангажа theta

Модель ненадежна сверх 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. Мы также хотим минимального разлива между каналами - то есть команда в альфа должна иметь минимальный эффект на theta и наоборот.

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

Разработка контроллера с 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/с, соответствующую временам нарастания около 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 с формой контура цели 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: Проверка соответствия откликов замкнутой системы вашим спецификациям

Наконец, на этом шаге мы строим график переходных характеристик системы Т с обратной связью.

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: Ответы на команды шага для альфа и theta.

Наш проект выглядит хорошо. Управление альфа и theta довольно развязано, перерегулирование меньше 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: Сингулярные значения Ханкеля K.

Сингулярные значения Ханкеля (HSV) измеряют относительную энергию каждого состояния при сбалансированной реализации K. HSV начинают падать более круто после 10-го состояния, поэтому попробуйте вычислить приближение K 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: Ответы на команды шага для альфа и theta.

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

См. также

Похожие темы