В этом примере показано, как использовать команды 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.9679 0.9783 8 4 0.9284 0.9284 0.9321 6 5 0.9116 0.9116 0.92 10 6 0.9026 0.9025 0.9047 10 7 0.899 0.899 0.903 10 8 0.8975 0.8975 0.8977 10 Best achieved robust performance: 0.897
Устойчивая производительность 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.116 2.135 10 3 1.254 1.249 1.261 10 4 1.178 1.178 1.192 10 5 1.154 1.154 1.159 10 6 1.141 1.141 1.144 10 7 1.132 1.132 1.135 10 8 1.124 1.124 1.125 10 9 1.121 1.121 1.125 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.26 3.618 3.649 8 3 2.189 2.189 2.215 10 4 1.997 1.997 2.014 10 5 1.919 1.919 1.933 10 6 1.873 1.873 1.932 6 7 1.85 1.85 1.872 10 8 1.826 1.826 1.845 8 9 1.818 1.818 1.83 8 10 1.811 1.811 1.818 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 275% 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.63 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 151% of the modeled uncertainty. -- This perturbation causes an instability at the frequency 17.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 83.9% of the modeled uncertainty. -- There is a destabilizing perturbation amounting to 84% of the modeled uncertainty. -- This perturbation causes an instability at the frequency 79.5 rad/seconds.
Аналитические отчеты робастности подтверждают то, что мы наблюдали путем выборки времени с обратной связью и частотных характеристик. Второй проект является хорошим компромиссом между производительностью и робастностью, и третий проект слишком агрессивен и испытывает недостаток в робастности.