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

В этом примере показано, как использовать команды 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:
-----------------------------------------------------------------
                    Closed-loop performance             Fit order
-----------------------------------------------------------------
  Iter         K-Step       Peak MU      D-Step             D
    1           223.6        100.4        101.4             2
    2           20.16        1.651        1.666            10
    3          0.8969       0.8939        0.904             8
    4          0.8517       0.8517       0.8552            10
    5          0.8366       0.8366       0.8407             6
    6          0.8304       0.8304       0.8374            10
    7          0.8244       0.8244        0.839            10
    8          0.8255       0.8255       0.8261            10

Best achieved robust performance: 0.824

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

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

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:
-----------------------------------------------------------------
                    Closed-loop performance             Fit order
-----------------------------------------------------------------
  Iter         K-Step       Peak MU      D-Step             D
    1           223.6        100.5        101.4             2
    2           20.17         1.85        1.867            10
    3            1.06        1.054        1.066            10
    4           1.002        1.002        1.012            10
    5          0.9829       0.9829       0.9855            10
    6          0.9709        0.971       0.9743            10
    7          0.9625       0.9626       0.9656            10
    8          0.9562       0.9563       0.9572            10
    9          0.9512       0.9512        0.952            10
   10          0.9471       0.9471       0.9477            10

Best achieved robust performance: 0.947

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

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

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

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:
-----------------------------------------------------------------
                    Closed-loop performance             Fit order
-----------------------------------------------------------------
  Iter         K-Step       Peak MU      D-Step             D
    1           223.6        100.9        101.9             2
    2           20.49        3.047        3.079             6
    3           1.842        1.842        1.863            10
    4           1.693        1.693        1.704            10
    5           1.626        1.625        1.634            10
    6           1.579        1.579         1.59             8
    7            1.55         1.55        1.568            10
    8           1.531        1.531        1.626             8
    9            1.53         1.53        1.549             8
   10           1.525        1.525        1.547            10

Best achieved robust performance: 1.52

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

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

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

step(S3,1);

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

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

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 267% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 268% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 7.53 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 153% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 153% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 16 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 82.4% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 82.5% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 74.3 rad/seconds.

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

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

| |

Похожие темы