В этом примере показано, как использовать команды 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.
Аналитические отчеты робастности подтверждают то, что мы наблюдали путем выборки времени с обратной связью и частотных характеристик. Второй проект является хорошим компромиссом между производительностью и робастностью, и третий проект слишком агрессивен и испытывает недостаток в робастности.