Первичный робастный синтез

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

Введение

Модель объекта управления состоит из системы первого порядка с неопределенным усилением и постоянной времени последовательно с мягко underdamped резонанс и значительная несмоделированная динамика. Неопределенные переменные заданы с помощью ureal и ultidyn и неопределенная модель объекта управления P создается как продукт простых передаточных функций:

gamma = ureal('gamma',2,'Perc',30);  % uncertain gain
tau = ureal('tau',1,'Perc',30);      % uncertain time-constant
wn = 50; xi = 0.25;
P = tf(gamma,[tau 1]) * tf(wn^2,[1 2*xi*wn wn^2]);
% Add unmodeled dynamics
delta = ultidyn('delta',[1 1],'SampleStateDim',5,'Bound',1);
W = makeweight(0.1,20,10);
P = P * (1+W*delta);

Набор переходных процессов для случайным образом выбранных значений неопределенности иллюстрирует изменчивость объекта.

step(P,5)

Покрытие неопределенной модели

Неопределенная модель объекта управления P содержит 3 неопределенных элемента. Для задач синтеза обратной связи часто желательно упростить модель неопределенности в то время как приблизительно сдерживающий ее полная изменчивость. Это - одно использование команды ucover. Эта команда берет массив ответов LTI Pa и номинальный ответ Pn и модели различие Pa-Pn как мультипликативная неопределенность в системной динамике (ultidyn).

Использовать ucover, сначала сопоставьте неопределенную модель P в семейство ответов LTI с помощью usample. Эта команда производит неопределенные элементы в неопределенной системе. Это возвращает массив моделей LTI где каждый модель, представляющая одно возможное поведение неопределенной системы. В этом примере сгенерируйте 60 демонстрационных значений P:

rng('default');     % the random number generator is seeded for repeatability
Parray = usample(P,60);

Затем используйте ucover покрывать все поведения в Parray простой неопределенной моделью формы

Usys = Pn * (1 + Wt * Delta)

где вся неопределенность сконцентрирована в "несмоделированной динамике" Delta компонента (ultidyn объект. Выберите номинальную стоимость P как сосредотачивают Pn из покрытия и использования формирующий фильтр 2-го порядка Wt получать как относительный промежуток между Parray и Pn меняется в зависимости от частоты.

Pn = P.NominalValue;
orderWt = 2;
Parrayg = frd(Parray,logspace(-3,3,60));
[Usys,Info] = ucover(Parrayg,Pn,orderWt,'in');

Проверьте, что величина фильтра (в красном) "покрывает" относительные изменения частотной характеристики объекта (в синем).

Wt = Info.W1;
bodemag((Pn-Parray)/Pn,'b--',Wt,'r')

Создание модели проекта разомкнутого контура

Спроектировать устойчивый контроллер для неопределенного объекта P, выберите целевую полосу пропускания замкнутой системы desBW и выполните проект минимизации чувствительности с помощью упрощенной модели Usys неопределенности. Структуру управления показывают в рисунке 1. Основные сигналы являются воздействием d, шум измерения n, управляющий сигнал u, и объект выход y. Фильтры Wperf и Wnoise отразите содержимое частоты воздействия и шумовых сигналов, или эквивалентно, диапазоны частот, где хорошее воздействие и шумовые свойства отклонения необходимы.

Наша цель состоит в том, чтобы сохранить y близко к нулю путем отклонения воздействия d и минимизация удара шума измерения n. Эквивалентно, мы хотим спроектировать контроллер, который сохраняет усиление от [d;n] к y "маленький". Обратите внимание на то, что

y  = Wperf * 1/(1+PC) * d + Wnoise * PC/(1+PC) * n

таким образом, передаточная функция интереса состоит из эффективности - и взвешенные шумом версии функции чувствительности 1 / (1+PC) и дополнительный PC функции чувствительности / (1+PC).

Рисунок 1: структура управления.

Выберите функцию взвешивания эффективности Wperf как фильтр lowpass первого порядка с величиной, больше, чем 1 на частотах ниже желаемой полосы пропускания замкнутой системы:

desBW = 0.4;
Wperf = makeweight(500,desBW,0.5);

Чтобы ограничить полосу пропускания контроллера и вызвать крен прочь вне желаемой полосы пропускания, используйте модель Wnoise шума датчика с величиной, больше, чем 1 на частотах, больше, чем 10*desBW:

Wnoise = 0.0025 * tf([25 7 1],[2.5e-5 .007 1]);

Постройте профили величины Wperf и Wnoise:

bodemag(Wperf,'b',Wnoise,'r'), grid
title('Performance weight and sensor noise model')
legend('Wperf','Wnoise','Location','SouthEast')

Затем создайте соединение разомкнутого контура рисунка 1:

Usys.InputName = 'u'; Usys.OutputName = 'yp';
Wperf.InputName = 'd'; Wperf.OutputName = 'yd';
Wnoise.InputName = 'n'; Wnoise.OutputName = 'yn';

sumy = sumblk('y = yp + yd');
sume = sumblk('e = -y - yn');

M = connect(Usys,Wperf,Wnoise,sumy,sume,{'d','n','u'},{'y','e'});

Первый проект: низкое требование полосы пропускания

Проектирование контроллера выполняется с автоматизированной устойчивой командой проекта musyn. Неопределенная модель разомкнутого контура дана M.

[ny,nu] = size(Usys);
[K1,muBound] = musyn(M,ny,nu);

D-K ITERATION SUMMARY:
-----------------------------------------------------------------
                       Robust performance               Fit order
-----------------------------------------------------------------
  Iter         K Step       Peak MU       D Fit             D
    1           223.6        100.4        101.4             2
    2           20.15        1.759        1.774            10
    3          0.9757       0.9681       0.9787            10
    4          0.9289       0.9289       0.9367             8
    5          0.9117       0.9118       0.9139            10
    6          0.9053       0.9053        0.906            10
    7           0.898        0.898        0.907            10
    8          0.8959       0.8959       0.8984            10
    9          0.8946       0.8946       0.8969             8

Best achieved robust performance: 0.895

Устойчивая эффективность muBound положительная скалярная величина. Если это близко 1, то проект успешен и желаемое и эффективное соответствие полос пропускания замкнутой системы тесно. Как показывает опыт, если muBound меньше 0.85, затем достижимая производительность может улучшаться. Когда muBound больше 1.2, затем желаемая полоса пропускания замкнутой системы не достижима для данной суммы неопределенности объекта.

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

opt = bodeoptions;
opt.PhaseMatching = 'on';
opt.Grid = 'on';

bodeplot(Parray*K1,{1e-2,1e2},opt);

Рандомизированные Диаграммы Боде с обратной связью подтверждают полосу пропускания подавления помех с обратной связью приблизительно 0,4 рад/с.

S1 = feedback(1,Parray*K1);  % sensitivity to output disturbance
bodemag(S1,{1e-2,1e3}), grid

Наконец, вычислите и постройте ответы с обратной связью на воздействие шага на объекте выход. Они сопоставимы с желаемой полосой пропускания замкнутой системы 0,4 с обосновывающимися временами приблизительно 7 секунд.

step(S1,8);

В этой наивной стратегии проектирования мы коррелировали шумовую полосу пропускания с желаемой полосой пропускания замкнутой системы. Это просто помогает ограничить полосу пропускания контроллера. Справедливая перспектива - то, что этот подход фокусируется на выходном затухании воздействия перед лицом неопределенности модели объекта управления. Шум датчика действительно не обращен. С проблемами со значительными суммами шума датчика имели бы дело другим способом.

Второй проект: более высокое требование полосы пропускания

Давайте восстановим проект для более высокой целевой полосы пропускания и корректировки шумовой полосы пропускания также.

desBW = 2;
Wperf = makeweight(500,desBW,0.5);
Wperf.InputName = 'd'; Wperf.OutputName = 'yd';
Wnoise = 0.0025 * tf([1 1.4 1],[1e-6 0.0014 1]);
Wnoise.InputName = 'n'; Wnoise.OutputName = 'yn';

M = connect(Usys,Wperf,Wnoise,sumy,sume,{'d','n','u'},{'y','e'});
[K2,muBound2] = musyn(M,ny,nu);

D-K ITERATION SUMMARY:
-----------------------------------------------------------------
                       Robust performance               Fit order
-----------------------------------------------------------------
  Iter         K Step       Peak MU       D Fit             D
    1           223.6        100.5        101.4             2
    2           20.17        2.117        2.136            10
    3           1.256        1.252        1.263            10
    4           1.179        1.179        1.193            10
    5           1.154        1.154        1.159            10
    6           1.142        1.142        1.144            10
    7           1.135        1.135        1.136            10
    8           1.124        1.124        1.126            10
    9            1.12         1.12        1.124             8
   10           1.114        1.114        1.124            10

Best achieved robust performance: 1.11

С устойчивой эффективностью приблизительно 1,1 этот проект достигает хорошего компромисса между целями эффективности и неопределенностью объекта. Диаграммы Боде разомкнутого контура подтверждают довольно устойчивый проект с достойными запасами по фазе, но не столь хорошие как более низкий проект полосы пропускания.

bodeplot(Parray*K2,{1e-2,1e2},opt)

Рандомизированные Диаграммы Боде с обратной связью подтверждают полосу пропускания замкнутой системы приблизительно 2 рад/с. Частотная характеристика имеет более худой, чем было замечено в более низком проекте полосы пропускания, из-за увеличенной неопределенности в модели на этой частоте. Поскольку Устойчивое mu-значение Эффективности было 1.1, мы ожидали некоторое ухудшение в робастности целей эффективности по более низкому проекту полосы пропускания.

S2 = feedback(1,Parray*K2);
bodemag(S2,{1e-2,1e3}), grid

Ответы воздействия шага с обратной связью далее иллюстрируют более высокий ответ полосы пропускания с разумной робастностью через изменчивость модели объекта управления.

step(S2,8);

Третий проект: очень Агрессивное требование полосы пропускания

Восстановите проект еще раз с чрезвычайно оптимистической целью полосы пропускания замкнутой системы 15 рад/с.

desBW = 15;
Wperf = makeweight(500,desBW,0.5);
Wperf.InputName = 'd'; Wperf.OutputName = 'yd';
Wnoise = 0.0025 * tf([0.018 0.19 1],[0.018e-6 0.19e-3 1]);
Wnoise.InputName = 'n'; Wnoise.OutputName = 'yn';

M = connect(Usys,Wperf,Wnoise,sumy,sume,{'d','n','u'},{'y','e'});
[K3,muBound3] = musyn(M,ny,nu);

D-K ITERATION SUMMARY:
-----------------------------------------------------------------
                       Robust performance               Fit order
-----------------------------------------------------------------
  Iter         K Step       Peak MU       D Fit             D
    1           223.6        100.9        101.8             2
    2           20.22        3.579         3.61             8
    3           2.187        2.187        2.213            10
    4           1.996        1.996        2.012            10
    5           1.918        1.919        1.935            10
    6           1.873        1.873        1.949             6
    7           1.856        1.856        1.874            10
    8           1.828        1.828         1.84             8
    9           1.814        1.814        1.823             8
   10           1.809        1.809        1.812             8

Best achieved robust performance: 1.81

Поскольку устойчивая эффективность больше 1.8, цели эффективности с обратной связью не достигаются под неопределенностью объекта. Частотные характеристики системы с обратной связью имеют более высокий peaks, указывающий на низкую производительность спроектированного контроллера.

S3 = feedback(1,Parray*K3);
bodemag(S3,{1e-2,1e3}), grid

Точно так же переходные процессы под неопределенностью иллюстрируют плохую эффективность с обратной связью.

step(S3,1);

Устойчивые вычисления устойчивости

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

ropt = robOptions('Display','on','MussvOptions','sm5');
stabmarg1 = robstab(feedback(P,K1),ropt);
Computing peak...  Percent completed: 100/100
System is robustly stable for the modeled uncertainty.
 -- It can tolerate up to 278% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 279% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 8.14 rad/seconds.
stabmarg2 = robstab(feedback(P,K2),ropt);
Computing peak...  Percent completed: 100/100
System is robustly stable for the modeled uncertainty.
 -- It can tolerate up to 151% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 152% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 17.4 rad/seconds.
stabmarg3 = robstab(feedback(P,K3),ropt);
Computing peak...  Percent completed: 100/100
System is not robustly stable for the modeled uncertainty.
 -- It can tolerate up to 84% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 84.2% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 79.5 rad/seconds.

Аналитические отчеты робастности подтверждают то, что мы наблюдали путем выборки времени с обратной связью и частотных характеристик. Второй проект является хорошим компромиссом между эффективностью и робастностью, и третий проект слишком агрессивен и испытывает недостаток в робастности.

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

| |

Похожие темы