Одновременная стабилизация Используя устойчивое управление

Этот пример использует команды Robust Control Toolbox™ ucover и musyn, чтобы спроектировать высокоэффективный контроллер для семейства нестабильных объектов.

Неопределенность объекта

Номинальная модель объекта управления состоит из нестабильной системы первого порядка.

Pnom = tf(2,[1 -2]);

Семейство встревоженных объектов является изменениями Pnom. Все объекты имеют один нестабильный полюс, но местоположение этого полюса варьируется через семейство.

p1 = Pnom*tf(1,[.06 1]);              % extra lag
p2 = Pnom*tf([-.02 1],[.02 1]);       % time delay
p3 = Pnom*tf(50^2,[1 2*.1*50 50^2]);  % high frequency resonance
p4 = Pnom*tf(70^2,[1 2*.2*70 70^2]);  % high frequency resonance
p5 = tf(2.4,[1 -2.2]);                % pole/gain migration
p6 = tf(1.6,[1 -1.8]);                % pole/gain migration

Покрытие неопределенной модели

Для задач синтеза обратной связи мы должны заменить этот набор моделей с одной неопределенной моделью объекта управления, чья область значений поведений включает p1 через p6. Это - одно использование команды ucover. Эта команда берет массив моделей LTI Parray и номинальная модель Pnom и модели различие Parray-Pnom как мультипликативная неопределенность в системной динамике.

Поскольку ucover ожидает массив моделей, используйте stack команда, чтобы собрать модели объекта управления p1 через p6 в один массив.

Parray = stack(1,p1,p2,p3,p4,p5,p6);

Затем используйте ucover "покрывать" область значений поведений Parray с неопределенной моделью формы

P = Pnom * (1 + Wt * Delta)

где вся неопределенность сконцентрирована в "несмоделированной динамике" Delta (ultidyn объект. Поскольку усиление Delta однородно ограничен 1 на всех частотах, фильтр "формирования" Wt используется, чтобы получить, как относительная сумма неопределенности меняется в зависимости от частоты. Этот фильтр также упоминается как функция взвешивания неопределенности. Попробуйте фильтр 4-го порядка Wt для этого примера:

orderWt = 4;
Parrayg = frd(Parray,logspace(-1,3,60));
[P,Info] = ucover(Parrayg,Pnom,orderWt,'InputMult');

Получившаяся модель P одно вход, объект неопределенного пространства состояний (USS) одно выхода с номинальной стоимостью Pnom.

P
P =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 5 states.
  The model uncertainty consists of the following blocks:
    Parrayg_InputMultDelta: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences

Type "P.NominalValue" to see the nominal value, "get(P)" to see all properties, and "P.Uncertainty" to interact with the uncertain elements.
tf(P.NominalValue)
ans =
 
    2
  -----
  s - 2
 
Continuous-time transfer function.

Предвещать график величины подтверждает что формирующий фильтр Wt "покрывает" относительное изменение поведения объекта. В зависимости от частоты уровень неопределенности составляет 30% в 5 рад/секунда (-10dB = 0.3), 50% в 10 рад/секунда и 100% вне 29 рад/секунда.

Wt = Info.W1;
bodemag((Pnom-Parray)/Pnom,'b--',Wt,'r'); grid
title('Relative Gaps vs. Magnitude of Wt')

Figure contains an axes object. The axes object contains 7 objects of type line. These objects represent untitled1, Wt.

Создание модели проекта разомкнутого контура

Спроектировать устойчивый контроллер для неопределенной модели объекта управления P, мы выбираем желаемую полосу пропускания замкнутой системы и минимизируем чувствительность к воздействиям на объекте выход. Структуру управления показывают ниже. Сигналы d и n воздействие загрузки и шум измерения. Диспетчер использует шумное измерение объекта выход y сгенерировать управляющий сигнал u.

Рисунок 1: структура управления.

Фильтры Wperf и Wnoise выбраны, чтобы осуществить желаемую полосу пропускания и некоторый соответствующий спад. Передаточная функция с обратной связью от [d;n] к y

    y = [Wperf * S , Wnoise * T] [d;n]

где S=1/(1+PC) и T=PC/(1+PC) чувствительность и дополнительные функции чувствительности. Если мы проектируем контроллер, который сохраняет усиление с обратной связью от [d;n] к y ниже 1, затем

    |S| < 1/|Wperf| ,    |T| < 1/|Wnoise|

Путем выбора соответствующей величины профилирует для Wperf и Wnoise, мы можем осуществить маленькую чувствительность (S) в полосе пропускания и соответствующем спаде (T) вне полосы пропускания.

Например, выберите Wperf когда фильтр lowpass первого порядка с усилением DC 500 и усилением перекрестно соединяет в желаемой полосе пропускания desBW:

desBW = 4.5;
Wperf = makeweight(500,desBW,0.33);
tf(Wperf)
ans =
 
  0.33 s + 4.248
  --------------
   s + 0.008496
 
Continuous-time transfer function.

Точно так же выберите Wnoise как фильтр высоких частот второго порядка с величиной 1 в 10*desBW. Это обеспечит коэффициент усиления разомкнутого контура PC к спаду с наклоном-2 для частот вне 10*desBW.

NF = (10*desBW)/20;  % numerator corner frequency
DF = (10*desBW)*50;  % denominator corner frequency
Wnoise = tf([1/NF^2  2*0.707/NF  1],[1/DF^2  2*0.707/DF  1]);
Wnoise = Wnoise/abs(freqresp(Wnoise,10*desBW))
Wnoise =
 
    0.1975 s^2 + 0.6284 s + 1
  ------------------------------
  7.901e-05 s^2 + 0.2514 s + 400
 
Continuous-time transfer function.

Проверьте что границы 1/Wperf и 1/Wnoise на S и T действительно осуществите желаемую полосу пропускания и спад.

bodemag(1/Wperf,'b',1/Wnoise,'r',{1e-2,1e3}), grid
title('Performance and roll-off specifications')
legend('Bound on |S|','Bound on |T|','Location','NorthEast')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Bound on |S|, Bound on |T|.

Затем используйте connect создавать соединение разомкнутого контура (блок-схема в рисунке 1 без блока контроллера). Задайте каждый блок, появляющийся в рисунке 1, назовите сигналы входящими и из каждого блока и позвольте connect сделайте проводное соединение:

P.u = 'u';   P.y = 'yp';
Wperf.u = 'd';   Wperf.y = 'Wperf';
Wnoise.u = 'n';  Wnoise.y = 'Wnoise';
S1 = sumblk('e = -ym');
S2 = sumblk('y = yp + Wperf');
S3 = sumblk('ym = y + Wnoise');
G = connect(P,Wperf,Wnoise,S1,S2,S3,{'d','n','u'},{'y','e'});

G неопределенная система с 2 выходами, с 3 входами, подходящая для устойчивого синтеза контроллера с musyn.

Устойчивый синтез контроллера

Проект выполняется с автоматизированной устойчивой командой проекта musyn. Целевая полоса пропускания составляет 4,5 рад/с.

ny = 1; nu = 1;
[C,muPerf] = musyn(G,ny,nu);
D-K ITERATION SUMMARY:
-----------------------------------------------------------------
                       Robust performance               Fit order
-----------------------------------------------------------------
  Iter         K Step       Peak MU       D Fit             D
    1           353.6        249.5        251.9             0
    2           70.74        9.965        10.05             4
    3           1.981        1.604        1.621             8
    4           1.164        1.164        1.188            10
    5           1.089        1.089        1.098            10
    6            1.05         1.05        1.055            10
    7           1.027        1.027        1.032             8
    8           1.016        1.016        1.023             8
    9           1.013        1.013         1.02             8
   10           1.011        1.011        1.012             8

Best achieved robust performance: 1.01

Когда устойчивый показатель эффективности muPerf близок 1, контроллер достигает целевой полосы пропускания замкнутой системы и спада. Как показывает опыт, если muPerf меньше 0.85, затем эффективность может быть улучшена, и если muPerf больше 1.2, затем желаемая полоса пропускания замкнутой системы не достижима для заданной неопределенности объекта.

Здесь muPerf приблизительно 1, таким образом, цели достигнуты. Получившийся контроллер C имеет 18 состояний:

size(C)
State-space model with 1 outputs, 1 inputs, and 16 states.

Можно использовать reduce и musynperf команды, чтобы упростить этот контроллер. Вычислите приближения порядков 1 - 17.

NxC = order(C);
Cappx = reduce(C,1:NxC);

Для каждого контроллера уменьшаемого порядка используйте musynperf вычислить устойчивый показатель эффективности и сравнить его с muPerf. Сохраните контроллер самый низкоуровневый с эффективностью не хуже, чем 1,05 * muPerf, ухудшение эффективности 5% или меньше.

for k=1:NxC
   Cr = Cappx(:,:,k);  % controller of order k
   bnd = musynperf(lft(G,Cr));
   if bnd.UpperBound < 1.05 * muPerf
      break % abort with the first controller meeting the performance goal
   end
end

order(Cr)
ans = 6

Это дает к контроллеру 6-го порядка Cr с сопоставимой эффективностью. Сравните Cr с контроллером полного порядка C.

opt = bodeoptions;
opt.Grid = 'on';
opt.PhaseMatching = 'on';
bodeplot(C,'b',Cr,'r--',opt)
legend('Full-order C','Reduced-order Cr','Location','NorthEast')

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent Full-order C, Reduced-order Cr. Axes object 2 contains 2 objects of type line. These objects represent Full-order C, Reduced-order Cr.

Устойчивая валидация контроллера

Постройте ответы разомкнутого контура моделей объекта управления p1 через p6 с упрощенным контроллером Cr.

bodeplot(Parray*Cr,'g',{1e-2,1e3},opt);

Figure contains 2 axes objects. Axes object 1 contains 6 objects of type line. This object represents untitled1. Axes object 2 contains 6 objects of type line. This object represents untitled1.

Постройте ответы на воздействие шага на объекте выход. Они сопоставимы с желаемой полосой пропускания замкнутой системы и устойчивы к изменениям объекта, как ожидалось от Устойчивого mu-значения Эффективности приблизительно 1.

step(feedback(1,Parray*Cr),'g',10/desBW);

Figure contains an axes object. The axes object contains 6 objects of type line. This object represents untitled1.

Варьируясь целевая полоса пропускания замкнутой системы

Тот же процесс проектирования может быть повторен для различных значений полосы пропускания замкнутой системы desBW. Выполнение так приводит к следующим результатам:

  • Используя desBW = 8 выражений хороший проект с устойчивой эффективностью muPerf из 1,09. Переходные процессы через Parray семейство сопоставимо с полосой пропускания замкнутой системы 8 рад/с.

  • Используя desBW = 20 выражений плохой проект с устойчивой эффективностью muPerf из 1,35. Это ожидается, потому что эта целевая полоса пропускания около очень большой неопределенности объекта. Некоторые переходные процессы для объектов p1,...,p6 на самом деле нестабильны.

  • Используя desBW = 0,3 выражения плохой проект с устойчивой эффективностью muPerf из 2,2. Это ожидается потому что Wnoise налагает спад прошлые 3 рад/с, который слишком близок к собственной частоте нестабильного полюса (2 рад/с). Другими словами, соответствующее управление нестабильной динамики требует более высокой полосы пропускания, чем заданный.

Смотрите также

| |

Похожие темы