exponenta event banner

robgain

Надежная работа неопределенной системы

Описание

пример

[perfmarg,wcu] = robgain(usys,gamma) вычисляет запас надежности для неопределенной системы и уровень производительности gamma. Производительность usys измеряется его пиковым усилением или пиковым сингулярным значением (см. Анализ надежности и наихудшего случая). Запас производительности зависит от уровня неопределенности, указанного в usys. Запас больше 1 означает, что коэффициент усиления usys остается ниже gamma для всех значений неопределенности, смоделированной в usys. Запас меньше 1 означает, что на некоторой частоте коэффициент усиления usys превышает gamma для некоторых значений неопределенных элементов в пределах их заданных диапазонов. Например, поле 0,5 подразумевает следующее:

  • Выигрыш usys остается ниже gamma при условии, что неопределенные значения элементов находятся в пределах 0,5 нормированных единиц их номинальных значений.

  • Существует возмущение размером 0,5 нормированных единиц, которое приводит пиковый коэффициент усиления к уровню gamma.

Структура perfmarg содержит верхнюю и нижнюю границы фактического запаса производительности и критическую частоту, при которой верхний предел запаса является наименьшим. Структура wcu содержит неопределенные значения элементов, которые приводят пиковый коэффициент усиления к уровню gamma.

пример

[perfmarg,wcu] = robgain(usys,gamma,w) оценивает надежный запас производительности для частот, указанных w.

  • Если w - массив ячеек формы, {wmin,wmax}, то robgain ограничивает вычисление запаса производительности интервалом между wmin и wmax.

  • Если w является вектором частот, то robgain вычисляет запас производительности только на указанных частотах.

пример

[perfmarg,wcu] = robgain(___,opts) задает дополнительные параметры для вычисления. Использовать robOptions создать opts. Этот синтаксис можно использовать с любой из предыдущих комбинаций входных аргументов.

[perfmarg,wcu,info] = robgain(___) возвращает структуру с дополнительной информацией о полях производительности и возмущениях, которые приводят коэффициент усиления к gamma. Посмотрите info для получения подробной информации об этой структуре. Этот синтаксис можно использовать с любой из предыдущих комбинаций входных аргументов.

Примеры

свернуть все

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

k = ureal('k',10,'Percent',40);
delta = ultidyn('delta',[1 1]); 
G = tf(18,[1 1.8 k]) * (1 + 0.5*delta);

Создайте модель контроллера и создайте функцию чувствительности с замкнутым контуром, S. Чувствительность измеряет реакцию замкнутого контура на выходе установки на возмущение на входе установки.

C = pid(2.3,3,0.38,0.001);
S = feedback(1,G*C);
bodemag(S,S.NominalValue)

Figure contains an axes. The axes contains 22 objects of type line. These objects represent S, untitled1.

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

[perfmarg,wcu] = robgain(S,1.5);
perfmarg
perfmarg = struct with fields:
           LowerBound: 0.7821
           UpperBound: 0.7837
    CriticalFrequency: 7.8565

LowerBound и UpperBound поля perfmarg показывают, что предел надежности составляет около 0,78. Этот результат означает, что существует возмущение только около 78% неопределенности, указанной в S, с пиковым усилением, превышающим 1,5.

Вы можете использовать uscale изучить, что означает нормализованная неопределенность 78% с точки зрения фактических диапазонов неопределенности. Масштабировать все неопределенные элементы в S создание модели системы с замкнутым контуром с максимальным уровнем неопределенности, соответствующим требованиям к производительности.

factor = perfmarg.LowerBound;
S_scaled = uscale(S,factor)
S_scaled =

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

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

На дисплее показано, как неопределенные элементы в S_scaled изменились: пиковый коэффициент усиления ultidyn элемент delta уменьшается с 1 до 0,78, и диапазон изменения неопределенного вещественного параметра k снижается с ± 40% до ± 31,3 %.

Продукция wcu - структура, которая содержит возмущения для k и delta которые соответствуют целевому максимуму производительности 1,5. Убедитесь, что значения в wcu причина Smax для достижения уровня усиления 1,5 путем их замены на S.

Smax = usubs(S,wcu);
getPeakGain(Smax,1e-6)
ans = 1.5001

Проверьте негодность системы с этими значениями.

step(S.NominalValue,Smax)
legend('Nominal','Peak Gain = 1.5')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Nominal, Peak Gain = 1.5.

CriticalFrequency поле perfmarg содержит частоту, при которой пиковый коэффициент усиления достигает 1,5.

Проверьте относительную чувствительность запаса надежности к неопределенным элементам системы. Рассмотрим модель системы управления, содержащей неопределенные элементы.

k = ureal('k',10,'Percent',50);
delta = ultidyn('delta',[1 1]); 
G = tf(18,[1 1.8 k]) * (1 + 0.15*delta);
C = pid(2.3,3,0.38,0.001);
S = feedback(1,G*C);

Создание набора параметров для robgain что позволяет выполнить расчет чувствительности.

opts = robOptions('Sensitivity','On');

Рассчитайте запас надежности системы по отношению к пиковому коэффициенту усиления 1,5, указав info вывод для доступа к дополнительной информации о вычислении.

[perfmarg,wcu,info] = robgain(S,1.5,opts);

Осмотрите Sensitivity поле info.

info.Sensitivity
ans = struct with fields:
    delta: 75
        k: 28

Значения в этом поле указывают, насколько изменение нормализованного возмущения на каждом элементе влияет на запас производительности. Например, чувствительность для k составляет 28. Это значение означает, что данное изменение dk в нормированном диапазоне неопределенностей k вызывает изменение примерно на 28% от этого, или 0.28*dk, в марже производительности. Маржа в этом случае более чувствительна к delta, для которого маржа изменяется примерно на 75% от изменения нормированного диапазона неопределенности.

Рассмотрим модель системы управления, содержащей неопределенные элементы.

k = ureal('k',10,'Percent',40);
delta = ultidyn('delta',[1 1]); 
G = tf(18,[1 1.8 k]) * (1 + 0.5*delta);
C = pid(2.3,3,0.38,0.001);
S = feedback(1,G*C);

По умолчанию robgain вычисляет только самый слабый запас производительности по всем частотам. Чтобы увидеть, как поле изменяется в зависимости от частоты, используйте 'VaryFrequency' вариант robOptions. Например, вычислите предел производительности системы для уровня производительности 1,5 в частотных точках от 0,1 до 100 рад/с.

opts = robOptions('VaryFrequency','on');
[perfmarg,wcu,info] = robgain(S,1.5,{0.1,100},opts);
info
info = struct with fields:
                Model: 1
            Frequency: [32x1 double]
               Bounds: [32x2 double]
    WorstPerturbation: [32x1 struct]
          Sensitivity: [1x1 struct]

robgain возвращает вектор частот в info выходные данные, в Frequencies поле. info.Bounds содержит верхнюю и нижнюю границы на границе производительности на каждой частоте. Эти значения используются для построения графика частотной зависимости запаса производительности.

semilogx(info.Frequency,info.Bounds)
title('Performance Margin vs. Frequency')
ylabel('Margin')
xlabel('Frequency')
legend('Lower bound','Upper bound')

Figure contains an axes. The axes with title Performance Margin vs. Frequency contains 2 objects of type line. These objects represent Lower bound, Upper bound.

При использовании 'VaryFrequency' опция, robgain автоматически выбирает точки частоты. Выбираемые им частоты гарантированно включают частоту, при которой запас является наименьшим (в пределах заданного диапазона). Просмотрите возвращенные значения частоты для подтверждения того, что они включают критическую частоту.

info.Frequency
ans = 32×1

    0.1000
    0.1266
    0.1604
    0.2031
    0.2572
    0.3257
    0.4125
    0.5223
    0.6615
    0.8377
      ⋮

perfmarg.CriticalFrequency
ans = 7.9965

Кроме того, вместо использования 'VaryFrequency', вы можете указать конкретные частоты, на которых вычислять надежные маржи производительности. info.Bounds содержит поля на всех указанных частотах. Однако эти результаты не гарантируют включение самого слабого запаса, который может падать между указанными частотными точками.

w = logspace(-1,2,20); 
[perfmarg,wcu,info] = robgain(S,1.5,w);
semilogx(w,info.Bounds)
title('Performance Margin vs. Frequency')
ylabel('Margin')
xlabel('Frequency')
legend('Lower bound','Upper bound')

Figure contains an axes. The axes with title Performance Margin vs. Frequency contains 2 objects of type line. These objects represent Lower bound, Upper bound.

Входные аргументы

свернуть все

Динамическая система с неопределенностью, указанная как uss, ufrd, genss, или genfrd модель, которая содержит неопределенные элементы. Для genss или genfrd модели, robgain использует текущее значение любых настраиваемых блоков и сворачивает их в известную (не неопределенную) часть модели.

usys также может быть массивом неопределенных моделей. В этом случае robgain возвращает наименьшее поле для всех моделей в массиве, и info вывод содержит индекс соответствующей модели.

Уровень производительности, заданный как положительный скаляр. Уровень производительности - это пиковое усиление системы или, для систем MIMO, пиковое сингулярное значение (H∞ норма). Как правило, чем ниже это значение, тем выше производительность системы. robgain вычисляет величину неопределенности, которую может выдержать система, сохраняя пиковый коэффициент усиления ниже этого уровня. Дополнительные сведения об этом показателе производительности см. в разделе Надежность и анализ наихудших случаев.

Частоты, на которых вычисляются надежные пределы производительности, указанные как массив ячеек {wmin,wmax} или как вектор частотных значений.

  • Если w - массив ячеек формы, {wmin,wmax}, то функция вычисляет поля на частотах в диапазоне между wmin и wmax.

  • Если w является вектором частот, то функция вычисляет поля на каждой заданной частоте. Например, использовать logspace для формирования вектора строки с логарифмически разнесенными значениями частоты.

Указать частоты в единицах рад/TimeUnit, где TimeUnit является TimeUnit свойство модели.

Опции для вычисления надежных полей производительности, заданных как объект, создаваемый с помощью robOptions. Доступные параметры включают в себя параметры, которые позволяют:

  • Извлеките зависящие от частоты маржи производительности.

  • Проверьте чувствительность полей к каждому неопределенному элементу.

  • Улучшение результатов расчета маржи производительности путем установки определенных параметров для андерлаинга mussv расчет. В частности, установка опции 'MussvOptions' кому 'mN' может уменьшить зазор между нижней границей и верхней границей. N - количество перезапусков.

Дополнительные сведения обо всех доступных параметрах см. в разделе robOptions.

Пример: robOptions('Sensitivity','on','MussvOptions','m3')

Выходные аргументы

свернуть все

Надежный запас производительности и критическая частота, возвращаемые в виде структуры, содержащей следующие поля:

ОбластьОписание

LowerBound

Нижняя граница фактического запаса надежности модели по отношению к gamma, возвращается как скалярное значение. Точный запас гарантированно не меньше LowerBound. Другими словами, для всех смоделированных неопределенностей с нормированной величиной до LowerBound, система гарантированно имеет пиковый коэффициент усиления ниже gamma.

UpperBound

Верхняя граница фактического запаса надежности, возвращаемого как скалярное значение. Точный запас гарантированно не превышает UpperBound. Другими словами, существуют некоторые неопределенные значения элементов, связанные с этой величиной, которые управляют пиковым усилением выше gamma. robgain возвращает один такой экземпляр в wcu.

CriticalFrequency

Частота, при которой предел производительности является наименьшим, в рад/TimeUnit, где TimeUnit является TimeUnit имущество usys.

Запас больше 1 означает, что коэффициент усиления usys остается ниже gamma для всех значений неопределенности, смоделированной в usys. Запас меньше 1 означает, что на некоторой частоте коэффициент усиления usys превышает gamma для некоторых значений неопределенных элементов в пределах их заданных диапазонов. Например, поле 0,5 подразумевает следующее:

  • Выигрыш usys остается ниже gamma при условии, что неопределенные значения элементов находятся в пределах 0,5 нормированных единиц их номинальных значений.

  • Существует возмущение размером 0,5 нормированных единиц, которое управляет пиковым коэффициентом усиления выше gamma.

Использовать uscale для масштабирования величины неопределенности в usys по пределу производительности для изучения фактических диапазонов неопределенности, которые дают целевую производительность.

Если номинальное значение usys имеет пиковый коэффициент усиления больше, чем gamma, предел производительности равен 0.

Если usys - массив неопределенных моделей, perfmarg содержит наименьшее поле для всех моделей в массиве. В этом случае info вывод содержит индекс соответствующей модели в ее Model поле.

Наименьшие возмущения неопределенных элементов, которые управляют пиковым коэффициентом усиления usys на уровень gamma, возвращается как структура, поля которой являются именами неопределенных элементов usys. Каждое поле содержит фактическое значение соответствующего неопределенного элемента. Например, если usys включает неопределенную матрицу M и неопределенная динамика SISO delta, то wcu.M является числовой матрицей и wcu.delta является моделью пространства состояний SISO.

Использовать usubs(usys,wcu) заменить эти значения неопределенными элементами в usys и получают соответствующую динамическую систему. Эта система имеет пиковый коэффициент усиления gamma.Use actual2normalized для преобразования этих фактических значений неопределенности в нормированные единицы, в которых выражен запас производительности.

Для ureal параметры в usys диапазон которого не центрирован вокруг номинального значения, robgain вносит следующие коррективы для целей своего анализа:

  • Когда наихудшее возмущение (наименьшее возмущение, достигающее целевого коэффициента усиления) находится вне диапазона достоверности фактического-нормированного преобразования (см. getLimits), то robgain устанавливает соответствующую запись wcu до ближайшего допустимого значения. Другими словами, если actpert - наихудшее возмущение в фактических единицах, robgain наборы wcu до ближайшего значения внутри интервала ActLims возвращено getLimits.

  • Когда нет возмущений, вызывающих превышение системой целевого коэффициента усиления, то robgain устанавливает соответствующую запись wcu к номинальному значению ureal параметр.

Дополнительная информация о полях производительности, возвращаемая в виде структуры со следующими полями:

ОбластьОписание

Model

Индекс модели, имеющей самый слабый запас производительности, когда usys представляет собой массив моделей.

Frequency

Точки частоты, в которых robgain возвращает надежное поле производительности, возвращаемое в виде вектора.

  • Если 'VaryFrequency' вариант robOptions является 'off', то info.Frequency критическая частота, частота, на которой происходит самый маленький край. Если наименьшая нижняя граница и наименьшая верхняя граница на границе рабочих характеристик находятся на разных частотах, то info.Frequency - вектор, содержащий эти две частоты.

  • Если 'VaryFrequency' вариант robOptions является 'on', то info.Frequency содержит частоты, выбранные robgain. Эти частоты гарантированно включают в себя частоту, при которой предел рабочих характеристик является наименьшим.

  • Если задан вектор частот w при котором вычислять маржу производительности, info.Frequency = w. При указании частотного вектора эти частоты не обязательно включают частоту, при которой запас является наименьшим.

'VaryFrequency' параметр имеет значение только для uss и genss модели. robgain игнорирует опцию для ufrd и genfrd модели.

Bounds

Нижняя и верхняя границы фактического запаса надежности модели, возвращаемого в виде массива. info.Bounds(:,1) содержит нижнюю границу на каждой соответствующей частоте в info.Frequency, и info.Bounds(:,2) содержит соответствующие верхние границы.

WorstPerturbation

Наименьшие возмущения в каждой точке частоты в info.Frequency, возвращен в виде массива структуры. Поля info.WorstPerturbation являются именами неопределенных элементов в usys. Каждое поле содержит значение соответствующего элемента, который управляет пиковым коэффициентом усиления выше gamma на каждой частоте. Например, если usys включает неопределенный параметр p и неопределенная динамика SISO delta, то info.WorstPerturbation.p - совокупность числовых значений и info.WorstPerturbation.delta - совокупность моделей состояния и пространства SISO.

Sensitivity

Чувствительность запаса производительности к каждому неопределенному элементу, возвращаемому как структура, когда 'Sensitivity' вариант robOptions является 'on'. Поля info.Sensitivity являются именами неопределенных элементов в usys. Каждое поле содержит процент, который измеряет, насколько неопределенность в соответствующем элементе влияет на маржу производительности. Например, если info.Sensitivity.p равно 50, то данное дробное изменение в диапазоне неопределенностей p вызывает вдвое меньше дробных изменений в марже производительности.

Если 'Sensitivity' вариант robOptions выключен (установка по умолчанию), затем info.Sensitivity является NaN.

Алгоритмы

Вычисление запаса прочности на определенной частоте эквивалентно вычислению структурированного сингулярного значения, λ, для некоторой подходящей блочной структуры (λ-анализ).

Для uss и genss модели, robgain(usys) и robgain(usys,{wmin,wmax}) используйте алгоритм, который находит наименьший запас по частоте. Этот алгоритм не опирается на частотную сетку и не подвергается неблагоприятному влиянию разрывов структурированного сингулярного значения. Дополнительные сведения см. в разделе Получение надежных оценок пределов надежности.

Для ufrd и genfrd модели, robgain вычисляет нижнюю и верхнюю границы в каждой точке частоты. Это вычисление не дает никакой гарантии между частотными точками и может быть неточным, если имеются разрывы или резкие пики в мкм. Синтаксис robgain(uss,w), где w является вектором частотных точек, является таким же, как robgain(ufrd(uss,w)) и также полагается на частотную сетку для вычисления запаса.

В целом, алгоритм для моделей состояния-пространства быстрее и безопаснее, чем подход с частотной сеткой. В некоторых случаях, однако, алгоритм «состояние-пространство» требует многих мкм вычислений. В этих случаях задание частотной сетки в качестве вектора w может быть быстрее при условии, что запас прочности изменяется плавно с частотой. Такое плавное изменение характерно для систем с динамической неопределенностью.

Представлен в R2016b