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