Устойчивая стабильность, устойчивая эффективность и Mu-Analysis

Этот пример показывает, как использовать Robust Control Toolbox™ для анализа и количественной оценки робастности систем управления с обратной связью. Это также обеспечивает понимание связи с Mu-Analysis и mussv функция.

Описание системы

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

Фигура 1: Система с обратной связью для анализа робастности

Подавления помех и нечувствительность к шуму количественно определяются эффективностью целью

(P(1+KP)-1Wd,(1+PK)-1Wn)

где Wd и Wn являются весовыми функциями, отражающими частотное содержимое d и n. Здесь Wd является большим на низких частотах и Wn является большим на высоких частотах.

Wd = makeweight(100,.4,.15);
Wn = makeweight(0.5,20,100);
bodemag(Wd,'b--',Wn,'g--')
title('Performance Weighting Functions')
legend('Input disturbance','Measurement noise')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Input disturbance, Measurement noise.

Создание неопределенной модели объекта управления

Неопределенная модель объекта управления P - слегка демпфированная, система второго порядка с параметрической неопределенностью в коэффициентах знаменателя и значительной частотно-зависимой немодулированной динамикой сверх 6 рад/с. Математическая модель выглядит следующим образом:

P(s)=16s2+0.16s+k(1+Wu(s)δ(s))

Значение параметра k принято, что около 40% неопределенности, с номинальным значением 16. Частотно-зависимая неопределенность на входе объекта принимается около 30% на низкой частоте, повышаясь до 100% на 10 рад/с и больше, чем это. Создайте неопределенную модель объекта управления P путем создания и объединения неопределенных элементов:

k = ureal('k',16,'Percentage',30);
delta = ultidyn('delta',[1 1],'SampleStateDim',4);
Wu = makeweight(0.3,10,20);
P = tf(16,[1 0.16 k]) * (1+Wu*delta);

Разработка контроллера

Мы используем контроллер, разработанный в примере «Улучшение устойчивости при сохранении характеристик разомкнутого контура». Используемая там модель объекта управления является номинальным значением неопределенной модели объекта управления, созданной выше. Для полноты работы повторяем команды, используемые для генерации контроллера.

K_PI = pid(1,0.8);
K_rolloff = tf(1,[1/20 1]);
Kprop = K_PI*K_rolloff;
[negK,~,Gamma] = ncfsyn(P.NominalValue,-Kprop);
K = -negK;

Закрытие цикла

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

P.u = 'uP';  P.y = 'yP';
K.u = 'uK';  K.y = 'yK';
S1 = sumblk('uP = yK + D');
S2 = sumblk('uK = -yP - N');
Wn.u = 'n'; Wn.y = 'N';
Wd.u = 'd'; Wd.y = 'D';
ClosedLoop = connect(P,K,S1,S2,Wn,Wd,{'d','n'},'yP');

Переменная ClosedLoop является неопределенной системой с двумя входами и одним выходом. Это зависит от двух неопределенных элементов: действительный параметр k и неопределенный линейный, инвариантный по времени динамический элемент delta.

ClosedLoop
ClosedLoop =

  Uncertain continuous-time state-space model with 1 outputs, 2 inputs, 11 states.
  The model uncertainty consists of the following blocks:
    delta: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences
    k: Uncertain real, nominal = 16, variability = [-30,30]%, 1 occurrences

Type "ClosedLoop.NominalValue" to see the nominal value, "get(ClosedLoop)" to see all properties, and "ClosedLoop.Uncertainty" to interact with the uncertain elements.

Устойчивый анализ устойчивости

Классические поля от allmargin показать хорошую робастность к неструктурированным изменениям коэффициента усиления/фазы в цикле.

allmargin(P.NominalValue*K)
ans = struct with fields:
     GainMargin: [6.3267 11.1183]
    GMFrequency: [1.6110 15.1526]
    PhaseMargin: [80.0229 -99.6598 63.7949]
    PMFrequency: [0.4471 3.1461 5.2318]
    DelayMargin: [3.1238 1.4443 0.2128]
    DMFrequency: [0.4471 3.1461 5.2318]
         Stable: 1

Остается ли система с обратной связью стабильной для всех значений k, delta в областях значений, указанной выше? Ответ на этот вопрос требует более сложного анализа с помощью robstab функция.

[stabmarg,wcu] = robstab(ClosedLoop);
stabmarg
stabmarg = struct with fields:
           LowerBound: 1.4679
           UpperBound: 1.4709
    CriticalFrequency: 5.8929

Переменная stabmarg дает верхнюю и нижнюю границы прочного запаса устойчивости, меру того, насколько неопределенность на k, delta цикл обратной связи может терпеть, прежде чем стать нестабильным. Например, запас 0,8 указывает, что всего 80% от заданного уровня неопределенности может привести к нестабильности. Здесь запас составляет около 1,5, что означает, что замкнутый цикл останется стабильным до 150% от заданной неопределенности.

Переменная wcu содержит комбинацию k и delta наиболее близко к их номинальным значениям, которые вызывают нестабильность.

wcu
wcu = struct with fields:
    delta: [1x1 ss]
        k: 23.0601

Мы можем заменить эти значения на ClosedLoop и проверьте, что эти значения приводят к нестабильности системы с обратной связью.

format short e
pole(usubs(ClosedLoop,wcu))

Обратите внимание, что естественная частота нестабильного полюса с обратной связью задается stabmarg.CriticalFrequency:

stabmarg.CriticalFrequency
ans = 
   5.8929e+00

Связь с Mu-Analysis

Структурированное сингулярное значение, или μ, - математический инструмент, используемый robstab для вычисления надежного запаса устойчивости. Если вам удобен структурированный анализ сингулярных значений, можно использовать mussv функция непосредственно для вычисления mu как функции частоты и воспроизведения результатов выше. Функция mussv является базовым механизмом для всех команд анализа робастности.

Как использовать mussv, мы сначала извлекаем (M,Delta) разложение неопределенной модели замкнутой системы ClosedLoop, где Delta - блок-диагональная матрица (нормированных) неопределенных элементов. 3-й выходной аргумент lftdata, BlkStruct, описывает блок-диагональную структуру Delta и может использоваться непосредственно по mussv

[M,Delta,BlkStruct] = lftdata(ClosedLoop);

Для анализа устойчивой устойчивости, только каналы M Используются сопоставленные с каналами неопределенности. На основе размера строки/столбца Delta, выберите соответствующие столбцы и строки M. Помните, что строки Delta соответствуют столбцам M, и наоборот. Следовательно, размерность столбца Delta используется для задания строк M:

szDelta = size(Delta);
M11 = M(1:szDelta(2),1:szDelta(1));

В самой простой форме Mu-Analysis выполняется на конечной сетке частот. Выберите вектор логарифмически разнесенных частотных точек и вычислите частотную характеристику M11 по этой частотной сетке.

omega = logspace(-1,2,50);
M11_g = frd(M11,omega);

Вычислите mu(M11) на этих частотах и постройте результирующие нижняя и верхняя границы:

mubnds = mussv(M11_g,BlkStruct,'s');

LinMagopt = bodeoptions;
LinMagopt.PhaseVisible = 'off'; LinMagopt.XLim = [1e-1 1e2]; LinMagopt.MagUnits = 'abs';
bodeplot(mubnds(1,1),mubnds(1,2),LinMagopt);
xlabel('Frequency (rad/sec)');
ylabel('Mu upper/lower bounds');
title('Mu plot of robust stability margins (inverted scale)');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent untitled1, untitled2.

Фигура 3: График Mu устойчивых запасов устойчивости (инвертированная шкала)

Устойчивый запас устойчивости является обратным структурированному сингулярному значению. Поэтому верхние границы от mussv стать нижними границами запаса устойчивости. Выполните эти преобразования и найдите дестабилизирующую частоту, где mu верхний граничный peaks (то есть, где запас устойчивости наименьший):

[pkl,wPeakLow] = getPeakGain(mubnds(1,2));
[pku] = getPeakGain(mubnds(1,1));
SMfromMU.LowerBound = 1/pku;
SMfromMU.UpperBound = 1/pkl;
SMfromMU.CriticalFrequency = wPeakLow;

Сравнение SMfromMU к границам stabmarg вычисляется с помощью robstab. Значения грубо согласуются с robstab уступая немного более слабым запасам. Это потому, что robstab использует более сложный подход, чем частотная сетка, и может точно вычислить пиковое значение mu по частоте.

stabmarg
stabmarg = struct with fields:
           LowerBound: 1.4679e+00
           UpperBound: 1.4709e+00
    CriticalFrequency: 5.8929e+00

SMfromMU
SMfromMU = struct with fields:
           LowerBound: 1.4747e+00
           UpperBound: 1.4747e+00
    CriticalFrequency: 5.9636e+00

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

Для номинальных значений неопределенных элементов k и deltaкоэффициент усиления в системе с обратной связью меньше 1:

getPeakGain(ClosedLoop.NominalValue)
ans = 
   9.8050e-01

Это говорит, что контроллер K соответствует целям подавления помех и нечувствительности к шуму. Но сохраняется ли эта номинальная эффективность перед лицом смоделированной неопределенности? На этот вопрос лучше всего ответить robgain.

opt = robOptions('Display','on');
[perfmarg,wcu] = robgain(ClosedLoop,1,opt);
Computing peak...  Percent completed: 100/100
The performance level 1 is not robust to the modeled uncertainty.
 -- The gain remains below 1 for up to 39.7% of the modeled uncertainty.
 -- There is a bad perturbation amounting to 39.8% of the modeled uncertainty.
 -- This perturbation causes a gain of 1 at the frequency 0.129 rad/seconds.

Ответ отрицательный: robgain найдено возмущение, составляющее только 40% от заданной неопределенности, которое приводит коэффициент усиления в закрытом цикле к 1.

getPeakGain(usubs(ClosedLoop,wcu),1e-6)
ans = 
   1.0000e+00

Это предполагает, что коэффициент усиления в системе с обратной связью превысит 1 для 100% от заданной неопределенности. Это подтверждается вычислением усиления в худшем случае:

wcg = wcgain(ClosedLoop)
wcg = struct with fields:
           LowerBound: 1.5719e+00
           UpperBound: 1.5751e+00
    CriticalFrequency: 5.9567e+00

Худший коэффициент усиления составляет около 1,6. Этот анализ показывает, что пока контроллер K соответствует целям подавления помех и нечувствительности к шуму для номинального объекта, не может поддерживать этот уровень эффективности для заданного уровня неопределенности объекта.

См. также

| | |

Похожие примеры

Подробнее о