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

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

Введение

Модель объекта управления состоит из системы первого порядка с неопределенным усилением и временной константой последовательно с умеренно заниженным резонансом и значительной немодулированной динамикой. Неопределенные переменные заданы с помощью 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)

где вся неопределенность сконцентрирована в компоненте «unmodeled dynamics» Deltaultidyn объект). Выберите номинальное значение P как центр Pn крышки и используйте фильтр формирования второго порядка 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. Структура управления показана на фигура. Основными сигналами являются нарушения порядка 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.9756        0.968       0.9786            10
    4          0.9288       0.9288       0.9369             8
    5          0.9123       0.9123       0.9145            10
    6          0.9048       0.9048        0.906            10
    7           0.899        0.899       0.9081            10
    8          0.8979       0.8979       0.8981            10

Best achieved robust performance: 0.898

Устойчивая эффективность 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 рад/с. Частотная характеристика имеет немного больше пиков, чем было замечено при проекте более низкой полосы пропускания, из-за повышенной неопределенности в модели на этой частоте. Поскольку значение Robust Performance 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);

Расчеты прочной устойчивости

Bode и Переходные процессы, показанные выше, сгенерированы из выборок неопределенной модели объекта управления 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 274% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 275% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 7.59 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.

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

См. также

| |

Похожие темы