Формирование цикла контроллера оси тангажа HIMAT

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

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

Технические требования формирования цикла: эффективность, пропускная способность и робастность

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

Рисунок 1: технические требования формирования Цикла.

Целевая форма цикла

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

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

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

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

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

Gd=Wc/s

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

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

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

Рисунок 2: самолет НАСА HiMAT

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

  • Отклонение элевона

  • Отклонение утки

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

  • Угол альфы нападения

  • Передайте угловую theta

Модель ненадежна вне 100 рад/секунда. Режимы изгиба фюзеляжа и другие неопределенные факторы вызывают отклонения между моделью и истинным самолетом целых 20 децибелов (или 1 000%) вне частоты 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 путем издания соответствующего элевона и команд утки. Мы также хотим минимальный избыток между каналами - то есть, команда в альфе должна оказать минимальное влияние на 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 чтобы построить min и макс. ввод-вывод получают в зависимости от частоты:

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.3dB (using 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: графики частотных характеристик Сигмы.

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

Наш проект выглядит хорошим. Альфа и средства управления theta справедливо разъединяются, перерегулирование - меньше 15 процентов, и пиковое время составляет только 0,5 секунды.

Упрощение контроллера

Мы только спроектировали K с 2 выходными контроллерами, с 2 входами с удовлетворительной эффективностью. Однако у этого контроллера есть довольно старший разряд:

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. HSVs начинают понижаться более круто после 10-го состояния, так попытайтесь вычислить приближение 10-го порядка K.

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 в целях реализации.

Смотрите также

Похожие темы