В этом примере показов, как использовать Toolbox™ Robust Control для разработки мультивхода, многовыходного контроллера путем формирования усиления разомкнутого контура характеристики по частоте. Этот метод применяется к управлению осью тангажа самолета HIMAT.
Мы покажем, как выбрать подходящую форму цикла и использовать loopsyn
функция для вычисления многопараметрического контроллера, который оптимально соответствует форме целевого цикла.
Как правило, формирование цикла является компромиссом между двумя потенциально конфликтующими целями. Мы хотим максимизировать коэффициент усиления без разомкнутого контура, чтобы получить лучшую возможную эффективность, но для робастности, нам нужно опустить коэффициент усиления ниже 0dB где точность модели низкая, и высокий коэффициент может вызвать нестабильность. Это требует хорошей модели, где необходима эффективность (обычно на низких частотах) и достаточного отката на более высоких частотах, где модель часто плохая. Частота Wc, где коэффициент усиления пересекает 0dB линию, называется частотой среза и помечает переход между эффективностью и требованиями робастности.
Фигура 1: Спецификации формирования цикла.
Существует несколько инструкций по выбору формы целевого цикла Gd
:
Устойчивость робастность: Gd
должен иметь коэффициент усиления меньше 0dB на высоких частотах, где модель объекта управления настолько плох, что ошибка фазы может приблизиться к 180 степеням.
Эффективность: Gd
должен иметь высокий коэффициент усиления, где вы хотите хорошую точность управления и хорошие подавления помех.
Кроссовер и Rolloff: Gd
должен пересечь 0dB линию между этими двумя частотными областями и креном с наклоном от -20 до -40 дБ/десятилетие после частоты среза Wc.
Простая форма целевого цикла
где кроссовер Wc
является взаимным значением времени нарастания желаемой переходной характеристики.
В иллюстрационных целях воспользуемся шестигосударственной моделью продольной динамики самолета 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')
Наша задача - контролировать alpha
и theta
путем выдачи соответствующих команд elevon и canard. Мы также хотим минимального разлива между каналами - то есть команда в альфа должна иметь минимальный эффект на 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
для построения графика минимального и максимального коэффициента усиления ввода-вывода как функции от частоты:
clf, sigma(G,'g',{.1,100}); title('Singular value plot for aircraft model G(s)');
Фигура 4: График сингулярного значения для модели G (s) самолета .
Для этого проекта мы используем целевой цикл форму 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;
Фигура 5: Форма Gd (s) целевого цикла.
Теперь мы готовы спроектировать контроллер 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)');
Фигура 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: Графики частотной характеристики Sigma.
Наконец, на этом шаге мы строим график переходных характеристик системы Т с обратной связью.
step(T,8)
title('Responses to step commands for alpha and theta');
Фигура 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')
Фигура 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')
Этот график предполагает, что ошибка приближения небольшая в относительных терминах, поэтому сравните отклики с обратной связью с исходными и упрощенными контроллерами 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
в целях реализации.