В этом примере показано, как использовать команды Toolbox™ надежного управления usample, ucover и musyn разработать надежный контроллер со стандартными целями производительности. Он может служить шаблоном для более сложных задач по проектированию управления.
Модель установки состоит из системы первого порядка с неопределенным коэффициентом усиления и постоянной времени последовательно с слабо затухающим резонансом и значительной немодированной динамикой. Неопределенные переменные задаются с помощью 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 (a 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'});
Проектирование контроллера выполняется с помощью команды автоматизированного надежного проектирования 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.9756 0.968 0.9786 10
4 0.9288 0.9288 0.9369 8
5 0.9123 0.9123 0.9145 10
6 0.9048 0.9048 0.906 10
7 0.899 0.899 0.9081 10
8 0.8979 0.8979 0.8981 10
Best achieved robust performance: 0.898
Надежная производительность 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)

Рандомизированные графики Bode с замкнутым контуром подтверждают полосу пропускания с замкнутым контуром приблизительно 2 рад/с. Частотная характеристика имеет несколько больший пик, чем было видно в конструкции с меньшей полосой пропускания, из-за повышенной неопределенности в модели на этой частоте. Поскольку значение параметра «Надежная производительность» составляло 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, цели производительности с замкнутым контуром не достигаются при неопределенностях установки. Частотные характеристики системы с замкнутым контуром имеют более высокие пики, указывающие на низкую производительность проектируемого контроллера.
S3 = feedback(1,Parray*K3);
bodemag(S3,{1e-2,1e3}), grid

Аналогичным образом, ступенчатые ответы в условиях неопределенности иллюстрируют плохую работу замкнутого цикла.
step(S3,1);

Графики реакции Bode и Step, показанные выше, генерируются из образцов неопределенной модели установки 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 274% 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.59 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.
Отчеты по анализу надежности подтверждают то, что мы наблюдали путем выборки временных и частотных откликов с замкнутым контуром. Вторая конструкция является хорошим компромиссом между производительностью и надежностью, а третья слишком агрессивна и не имеет надежности.