robstab

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

Синтаксис

[stabmarg,wcu] = robstab(usys)
[stabmarg,wcu] = robstab(usys,w)
[stabmarg,wcu] = robstab(___,opts)
[stabmarg,wcu,info] = robstab(___)

Описание

пример

[stabmarg,wcu] = robstab(usys) вычисляет устойчивый запас устойчивости для неопределенной системы. Этот запас устойчивости относительно уровня неуверенности, заданного в usys. Устойчивый запас устойчивости, больше, чем 1 среднее значение, что система стабильна для всех значений ее смоделированной неуверенности. Устойчивый запас устойчивости меньше чем 1 среднее значение, что система становится нестабильной для некоторых значений неопределенных элементов в их заданных областях значений. Например, поле 0,5 подразумевает следующее:

  • usys остается стабильным, пока неопределенные значения элемента остаются в 0,5 нормированных единицах их номинальной стоимости.

  • Существует возмущение дестабилизации размера 0,5 нормированных единицы.

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

пример

[stabmarg,wcu] = robstab(usys,w) ограничивает устойчивое вычисление запаса устойчивости частотами, заданными w.

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

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

пример

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

пример

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

Примеры

свернуть все

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

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);
CL = feedback(G*C,1);

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

step(CL.NominalValue)

Исследуйте устойчивую устойчивость системы с обратной связью.

[stabmarg,wcu] = robstab(CL);
stabmarg
stabmarg = struct with fields:
           LowerBound: 1.5960
           UpperBound: 1.5993
    CriticalFrequency: 4.8627

Поля LowerBound и UpperBound stabmarg показывают, что устойчивый запас устойчивости системы с обратной связью - приблизительно 1,6. Этот результат означает, что система может противостоять приблизительно на 60% большей неуверенности, чем задано в неопределенных элементах, не идя нестабильный.

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

CLunst = usubs(CL,wcu);
pole(CLunst)
ans = 8×1 complex
102 ×

  -9.9314 + 0.0000i
  -0.1027 + 0.1009i
  -0.1027 - 0.1009i
  -0.0000 + 0.0486i
  -0.0000 - 0.0486i
  -0.0115 + 0.0000i
  -0.0216 + 0.0000i
  -0.0403 + 0.0000i

Получившаяся система имеет незатухающую пару комплексных полюсов с собственной частотой 4.89, который представляет его нестабильный. Поле CriticalFrequency stabmarg содержит то же значение, которое является частотой, на которой CL является самым близким к нестабильности.

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

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

Создайте набор опций для robstab, который включает вычисление чувствительности.

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

Вычислите устойчивый запас устойчивости, задав info вывод, чтобы получить доступ к дополнительной информации о вычислении.

[stabmarg,wcu,info] = robstab(CL,opts);

Исследуйте поле Sensitivity info.

info.Sensitivity
ans = struct with fields:
    delta: 80
        k: 20

Значения в этом поле указывают, насколько изменение на нормированном возмущении на каждом элементе влияет на запас устойчивости. Например, чувствительность для k равняется 21. Это значение означает, что данное изменение dk в нормированной области значений неуверенности k вызывает изменение приблизительно 21%-го процента этого или 0.21*dk, в запасе устойчивости. Поле в этом случае намного более чувствительно к delta, для которого поле изменяется приблизительно 81% изменения в нормированной области значений неуверенности.

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

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);
CL = feedback(G*C,1);

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

opts = robOptions('VaryFrequency','on');
[stabmarg,wcu,info] = robstab(CL,{0.1,10},opts);
info
info = struct with fields:
                Model: 1
            Frequency: [19x1 double]
               Bounds: [19x2 double]
    WorstPerturbation: [19x1 struct]
          Sensitivity: [1x1 struct]

robstab возвращает вектор частот в info вывод в поле Frequencies. info.Bounds содержит верхние и нижние границы на запасе устойчивости на каждой частоте. Используйте эти значения, чтобы построить зависимость частоты запаса устойчивости.

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

Когда вы используете опцию 'VaryFrequency', robstab выбирает точки частоты автоматически. Частоты это, выборы, как гарантируют, будут включать частоту, на которой запас устойчивости является самым слабым (в заданной области значений). Отобразите возвращенные значения частоты, чтобы подтвердить, что они включают критическую частоту.

info.Frequency
ans = 19×1

    0.1000
    0.1061
    0.1425
    0.1914
    0.2572
    0.3455
    0.4642
    0.6236
    0.8377
    1.1253
      ⋮

stabmarg.CriticalFrequency
ans = 4.8268

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

w = logspace(-1,1,25); 
[stabmarg,wcu,info] = robstab(CL,w);
semilogx(w,info.Bounds)
title('Stability Margin vs. Frequency')
ylabel('Margin')
xlabel('Frequency')
legend('Lower bound','Upper bound')

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

свернуть все

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

Для моделей частотной характеристики, ufrd или genfrd, robstab принимает, что система номинально стабильна.

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

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

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

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

    Для моделей uss и genss, когда w является вектором, robstab(usys,w) эквивалентен robstab(ufrd(usys,w)). Поэтому usys должен быть номинально стабильным.

Задайте частоты в модулях rad/TimeUnit, где TimeUnit является свойством TimeUnit модели.

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

  • Извлеките зависимые частотой запасы устойчивости.

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

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

Для получения дополнительной информации обо всех доступных параметрах, смотрите robOptions.

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

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

свернуть все

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

Поле Описание

LowerBound

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

UpperBound

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

CriticalFrequency

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

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

  • usys остается стабильным, пока неопределенные значения элемента остаются в 0,5 нормированных единицах их номинальной стоимости.

  • Существует возмущение дестабилизации размера 0,5 нормированных единицы.

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

Если номинальная стоимость usys нестабильна, запас устойчивости 0. Если usys является моделью ufrd или genfrd, robstab принимает, что это номинально стабильно.

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

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

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

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

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

  • Когда нет никакого возмущения дестабилизации, затем robstab устанавливает соответствующую запись wcu к номинальной стоимости параметра ureal.

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

Поле Описание

Model

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

Frequency

Частота указывает, в котором robstab возвращает устойчивый запас устойчивости, возвращенный как вектор.

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

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

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

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

Bounds

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

WorstPerturbation

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

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

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

Введенный в R2017b