Этот пример показывает, как использовать 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
Эта модель имеет два входных параметров управления:
Отклонение элевона
Отклонение утки
Это также имеет два измеренных выходных параметров:
Угол альфы нападения
Передайте угловую тету
Модель ненадежна вне 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
путем издания соответствующего элевона и команд утки. Мы также хотим минимальный избыток между каналами - то есть, команда в альфе должна иметь минимальный эффект на тету и наоборот.
Разработка контроллера с 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.6445
GAM=1.6445 значения указывает, что форме целевого цикла соответствовали в +/-4.3dB (использующий 20*log10 (GAM) =4.32). Сравните сингулярные значения разомкнутого цикла, 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: Ответы на команды шага для альфы и теты.
Наш проект выглядит хорошим. Альфа и средства управления тетой справедливо разъединяются, перерегулирование - меньше 15 процентов, и пиковое время составляет только 0,5 секунды.
Мы только разработали K
с 2 выходными контроллерами, с 2 входами с удовлетворительной производительностью. Однако у этого контроллера есть довольно старший разряд:
size(K)
State-space model with 2 outputs, 2 inputs, and 16 states.
Мы можем теперь использовать алгоритмы снижения сложности модели, чтобы попытаться упростить этот контроллер при сохранении его показателей производительности. Сначала мы вычисляем сингулярные значения Ганкеля K
, чтобы понять, сколько состояний контроллера эффективно способствует закону о надзоре:
hsv = hankelsv(K); semilogy(hsv,'*--') grid title('Hankel singular values of K') xlabel('Order')
Рисунок 9: сингулярные значения Ганкеля K.
Мера по Сингулярным значениям Ганкеля (HSV) относительная энергия каждого состояния в сбалансированной реализации K
. Заметьте, что HSV для 10-го состояния является четырьмя порядками величины, меньшими, чем для 9-го состояния, так попытайтесь вычислить приближение 9-го порядка K
Kr = reduce(K,9); order(Kr)
ans = 9
У упрощенного контроллера Kr
есть порядок 9 по сравнению с 16 для начального контроллера K
. Сравните ошибку приближения K-Kr
через частоту с усилениями K
.
sigma(K,'b',K-Kr,'r-.') 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: Ответы на команды шага для альфы и теты.
Эти два ответа неразличимы так упрощенный контроллер 9-го порядка, Kr
является хорошей заменой для K
в целях реализации.