Этот пример показывает, как использовать функцию Robust Control Toolbox™ ncfsyn
, чтобы улучшить робастность устойчивости системы с обратной связью, приблизительно поддерживая высокое усиление и характеристики низкого усиления ответа разомкнутого цикла.
Модель объекта управления является слегка ослабленной, системой второго порядка
Диаграмма Боде ясно показывает резонирующий пик.
P = tf(16,[1 0.16 16]); bode(P)
Система с обратной связью должна
Будьте нечувствительны к шуму, включая 60dB/decade затухание вне 20 радов/секунда
Имейте интегральное действие и пропускную способность чувствительности по крайней мере 0,5 радов/секунда
Имейте перекрестные усилением частоты, не больше, чем 7
Мы можем перевести эти требования в желаемую форму для коэффициента усиления разомкнутого контура и искать контроллер, который осуществляет эту форму. Например, контроллер Kprop
, состоящий из термина PI последовательно с высокочастотным компонентом задержки, достигает желаемой формы цикла:
K_PI = pid(1,0.8); K_rolloff = tf(1,[1/20 1]); Kprop = K_PI*K_rolloff; bodemag(P*Kprop); grid
Желаемый высокочастотный спад, интегральное действие и местоположение перекрестной усилением частоты все очевидны из графика. К сожалению, этот контроллер не стабилизирует систему с обратной связью, как свидетельствуется полем Stable
от вычисления allmargin
.
allmargin(P*Kprop)
ans = struct with fields: GainMargin: 0.1096 GMFrequency: 4.1967 PhaseMargin: -20.4811 PMFrequency: 5.6155 DelayMargin: 1.0552 DMFrequency: 5.6155 Stable: 0
ncfsyn
Команда ncfsyn
может использоваться, чтобы получить устойчивость с обратной связью и улучшенные запасы устойчивости без значительного ухудшения в большом (>> 1) и маленький (<<1) области усиления ответа разомкнутого цикла. Значение Gamma
(3-й выходной аргумент) меньше чем 3 указывают на успех (скромное ухудшение усиления наряду с приемлемыми полями робастности). Обратите внимание на то, что ncfsyn
принимает позитивные отклики, таким образом, необходимо инвертировать знак Kprop
. У нового диспетчера, К, стабилизирует номинальную динамику и, кажется, есть достойные поля робастности, по крайней мере, когда измерено в классическом смысле.
[negK,~,Gamma] = ncfsyn(P,-Kprop);
K = -negK; % flip sign back
Gamma
allmargin(P*K)
Gamma = 1.9883 ans = struct with fields: GainMargin: [6.3299 11.1423] GMFrequency: [1.6110 15.1667] PhaseMargin: [80.0276 -99.6641 63.7989] PMFrequency: [0.4472 3.1460 5.2319] DelayMargin: [3.1236 1.4443 0.2128] DMFrequency: [0.4472 3.1460 5.2319] Stable: 1
Как ожидалось с обратной связью стабильно, и с Gamma
меньше чем 2, запасы по амплитуде и фазе соответствуют кустарным способом стандарты.
Gamma
дает индикацию относительно ухудшения усиления (в движении от Kprop
до K
), мы должны ожидать, и в больших и небольших областях усиления цикла. С Gamma
приблизительно 2 мы ожидаем только приблизительно 6 дБ (20*log10 (Гамма)) сокращение усиления больших областей усиления цикла, и не больше, чем увеличение усиления на 6 дБ небольших областей усиления цикла. Предвещайте графики значения, подтверждают это.
subplot(1,2,1) bodemag(Kprop,'r',K,'g'); grid legend('Proposed Controller, Kprop','Redesigned Controller, K') title('Controller Gains') subplot(1,2,2) bodemag(P*Kprop,'r',P*K,'g'); grid legend('P*Kprop','P*K') title('Open-Loop Gains')
Рисунок 1: Контроллер и Коэффициенты усиления разомкнутого контура
Импульсивное воздействие во входе объекта ослабляется эффективно за несколько секунд. Для сравнения также показывают некомпенсированный ответ объекта.
TF = 4; subplot(1,2,1) impulse(feedback(P,K),'b',P,'r',TF); legend('Closed-Loop','Open-Loop') title('Plant response, y, to impulse at plant input') subplot(1,2,2); impulse(-feedback(K*P,1),'b',TF) legend('Closed-Loop Control action, u')
Рисунок 2: Контроллер и Коэффициенты усиления разомкнутого контура
Наконец, Чувствительность с обратной связью и Дополнительные функции Чувствительности показывают желаемое сокращение чувствительности и высокочастотное шумовое затухание, выраженное в целях производительности с обратной связью.
S = feedback(1,P*K); T = 1-S; clf bodemag(S,T,{1e-2,1e2}); grid
В этом примере функциональный ncfsyn
используется, чтобы настроить предложенный контроллер в порядке достигнуть устойчивости с обратной связью при попытке поддержать общие большие и маленькие характеристики усиления цикла функции разомкнутого цикла PK
.