В этом примере показано, как использовать Robust Control Toolbox™, чтобы спроектировать мультивход, мультивыходной контроллер путем формирования усиления ответа разомкнутого контура через частоту. Этот метод применяется к управлению осью тангажа самолета HIMAT.
Мы показываем, как выбрать подходящую целевую форму цикла и использовать loopsyn
функция, чтобы вычислить многомерный контроллер, который оптимально совпадает с целевой формой цикла.
Как правило, формирование цикла является компромиссом между двумя потенциально конфликтными целями. Мы хотим максимизировать коэффициент усиления разомкнутого контура, чтобы получить самую лучшую эффективность, но для робастности, мы должны опустить усиления ниже 0dB, где точность модели плоха, и высокое усиление может вызвать нестабильность. Это требует хорошей модели, где эффективность необходима (обычно в низких частотах), и достаточный спад на более высоких частотах, где модель часто плоха. Туалет частоты, где усиление пересекает 0dB линию, называется частотой среза и отмечает переход между требованиями робастности и эффективностью.
Рисунок 1: технические требования формирования Цикла.
Существует несколько инструкций для выбора целевой формы цикла Gd
:
Робастность устойчивости: Gd
должен иметь усиление меньше, чем 0dB на высоких частотах, где модель объекта управления так плоха, что ошибка фазы может приблизиться к 180 градусам.
Производительность: Gd
должен иметь высокое усиление, где вы хотите хорошую точность регулировки и хорошее подавление помех.
Перекрестное соединение и спад: Gd
должен пересечь 0dB линию между этими двумя областями частоты и крен прочь с наклоном-20 к-40 дБ/десятилетие мимо туалета частоты среза.
Простая целевая форма цикла
где перекрестный Wc
обратная величина времени нарастания желаемого переходного процесса.
В целях рисунка давайте использовать модель с шестью состояниями продольной динамики самолета 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')
Наша задача состоит в том, чтобы управлять alpha
и theta
путем издания соответствующего элевона и команд утки. Мы также хотим минимальный избыток между каналами - то есть, команда в альфе должна оказать минимальное влияние на theta и наоборот.
Разработка контроллера с 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
чтобы построить min и макс. ввод-вывод получают в зависимости от частоты:
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.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)');
Рисунок 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: графики частотных характеристик Сигмы.
Наконец, на этом шаге мы строим переходные процессы системы с обратной связью T.
step(T,8)
title('Responses to step commands for alpha and theta');
Рисунок 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')
Рисунок 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')
Этот график предполагает, что ошибка приближения мала в относительном выражении, поэтому сравните ответы с обратной связью с исходными и упрощенными контроллерами 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: Ответы на команды шага для альфы и theta.
Эти два ответа неразличимы так упрощенный контроллер 10-го порядка Kr
хорошая замена для K
в целях реализации.