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

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

где вся неопределенность сосредоточена в «неизмененной динамике» Deltaultidyn объект). Потому что выигрыш 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. The axes 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 первого порядка с усилением постоянного тока 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. The axes 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 является 3-входной, 2-выходной неопределенной системой, подходящей для устойчивого синтеза контроллера с 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.98        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 и musyn perf команды для упрощения данного контроллера. Вычислите приближения порядков 1-17.

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

Для каждого контроллера пониженного порядка используйте musyn perf вычислить устойчивый показатель эффективности и сравнить его с 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. Axes 1 contains 2 objects of type line. These objects represent Full-order C, Reduced-order Cr. Axes 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. Axes 1 contains 6 objects of type line. This object represents untitled1. Axes 2 contains 6 objects of type line. This object represents untitled1.

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

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

Figure contains an axes. The axes 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 рад/с). Другими словами, правильное управление нестабильной динамикой требует более высокой полосы пропускания, чем указано.

См. также

| |

Похожие темы