robgain

Устойчивая производительность неопределенной системы

Синтаксис

[perfmarg,wcu] = robgain(usys,gamma)
[perfmarg,wcu] = robgain(usys,gamma,w)
[perfmarg,wcu] = robgain(___,opts)
[perfmarg,wcu,info] = 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.8564

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

Вывод wcu является структурой, которая содержит соответствующие возмущения к k и delta. Проверьте, что значения в 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.9967

Также вместо того, чтобы использовать '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.

Используйте normalized2actual, чтобы преобразовать нормированное значение неуверенности, выраженное в поле производительности фактическим отклонениям от номинальной стоимости.

Если номинальная стоимость 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}) используют алгоритм, который находит самое маленькое поле через частоту. Этот алгоритм не полагается на частоту gridding и не оказан негативное влияние разрывами структурированного сингулярного значения μ. Смотрите Получение Надежных Оценок Полей Робастности для получения дополнительной информации.

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

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

Введенный в R2017b