В этом примере показано, как использовать команды 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.9681 0.9787 10 4 0.9289 0.9289 0.9367 8 5 0.9117 0.9118 0.9139 10 6 0.9053 0.9053 0.906 10 7 0.898 0.898 0.907 10 8 0.8959 0.8959 0.8984 10 9 0.8946 0.8946 0.8969 8 Best achieved robust performance: 0.895
Устойчивая эффективность 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 рад/с. Частотная характеристика имеет более худой, чем было замечено в более низком проекте полосы пропускания, из-за увеличенной неопределенности в модели на этой частоте. Поскольку Устойчивое 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);
Предвещание и Переходные процессы, показанные выше, сгенерированы от выборок неопределенной модели объекта управления 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 278% of the modeled uncertainty. -- There is a destabilizing perturbation amounting to 279% of the modeled uncertainty. -- This perturbation causes an instability at the frequency 8.14 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.
Аналитические отчеты робастности подтверждают то, что мы наблюдали путем выборки времени с обратной связью и частотных характеристик. Второй проект является хорошим компромиссом между эффективностью и робастностью, и третий проект слишком агрессивен и испытывает недостаток в робастности.