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)

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

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

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

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

Когда вы используете '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.9966

В качестве альтернативы вместо того, чтобы использовать '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')

Входные параметры

свернуть все

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

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

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

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

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

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

Задайте частоты в модулях rad/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

Частота, на которой поле производительности является самым маленьким в rad/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 isnan.

Алгоритмы

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

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

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

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

Введенный в R2017b