В этом примере показано, как использовать Toolbox™ надежного управления для анализа и количественной оценки надежности систем управления с обратной связью. Он также дает представление о связи с анализом mu и mussv функция.
На фиг.1 показана блок-схема системы с замкнутым контуром. Модель P установки является неопределенной, и выход установки должен регулироваться, чтобы оставаться небольшим при наличии возмущений и шума измерения .

Рис. 1: Система с замкнутым контуром для анализа надежности
Отклонение возмущений и нечувствительность к шуму количественно определяются целью производительности
) -1Wn) ‖ ∞
где и - функции взвешивания, отражающие частотное содержание и n. Здесь является большим на низких частотах и является большим на высоких частотах.
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')

Неопределенная модель установки P представляет собой слегка затухающую систему второго порядка с параметрической неопределенностью в коэффициентах знаменателя и значимой частотно-зависимой немодулированной динамикой за 6 рад/с. Математическая модель выглядит следующим образом:
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
Структурированное сингулярное значение, или , является математическим инструментом, используемым robstab для расчета запаса устойчивости. Если анализ структурированных сингулярных значений удобен, можно использовать mussv непосредственно вычислять mu как функцию частоты и воспроизводить результаты, приведенные выше. Функция mussv является основным механизмом для всех команд анализа надежности.
Использовать mussv, мы сначала извлекаем (M,Delta) декомпозиция неопределенной модели с замкнутым контуром ClosedLoop, где Delta является блок-диагональной матрицей (нормализованных) неопределённых элементов. Третий выходной аргумент 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-анализ выполняется на конечной сетке частот. Выберите вектор логарифмически разнесенных частотных точек и оцените частотную характеристику 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)');

Рис. 3: Мю-график устойчивых полей устойчивости (перевернутая шкала)
Запас устойчивости является взаимностью структурированного сингулярного значения. Поэтому верхние границы от mussv становятся нижними границами на границе устойчивости. Выполните эти преобразования и найдите дестабилизирующую частоту, где пики верхней границы mu (то есть где предел устойчивости наименьший):
[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 отвечает целям по отклонению возмущений и нечувствительности к шуму для номинальной установки, не может поддерживать этот уровень производительности для заданного уровня неопределенности установки.
mussv | robgain | robstab | wcgain