Сначала сокращенный устойчивый проект

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

Введение

Модель объекта управления состоит из системы первого порядка с неопределенным усилением и временной константой последовательно с мягко 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 в качестве фильтра нижних частот первого порядка со значением, больше, чем 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'});

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

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

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

    0.9483

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,ClosedLoop2,muBound2] = dksyn(M,ny,nu);
muBound2
muBound2 =

    0.9415

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

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,ClosedLoop3,muBound3] = dksyn(M,ny,nu);
muBound3
muBound3 =

    1.5189

Поскольку muBound3 больше, чем 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 190% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 190% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 3.78 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 154% of the modeled uncertainty.
 -- There is a destabilizing perturbation amounting to 155% of the modeled uncertainty.
 -- This perturbation causes an instability at the frequency 16.3 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 72.9 rad/seconds.

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