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

Этот пример использует команды 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')

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

Спроектировать устойчивый контроллер для неопределенной модели объекта управления 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')

Затем используйте 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.964        10.05             4
    3           1.981        1.601        1.619             8
    4           1.159        1.159        1.179             8
    5           1.088        1.088        1.097            10
    6           1.046        1.046         1.05            10
    7           1.025        1.025        1.033             8
    8           1.016        1.016        1.022             8
    9           1.013        1.013        1.017             8
   10           1.011        1.011        1.026            10

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')

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

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

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

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

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

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

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

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

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

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

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

| |

Похожие темы