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)

Figure contains an axes object. The axes object contains an object of type line. This object represents untitled1.

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

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

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

Можно использовать uscale масштабировать системную неопределенность запасом устойчивости, исследовать отклик системы на полный спектр безопасной неопределенности. Масштабируйте неопределенность в CL устойчивым запасом устойчивости, чтобы создать систему с максимальной терпимой суммой неопределенности.

CLmaxunc = uscale(CL,stabmarg.UpperBound);
CLmaxunc.Uncertainty.delta
ans = 
  Uncertain LTI dynamics "delta" with 1 outputs, 1 inputs, and gain less than 1.6.

CLmaxunc.Uncertainty.k
ans = 
  Uncertain real parameter "k" with nominal value 10 and variability [-64,64]%.

Неопределенные элементы в CLmaxunc имейте области значений приблизительно 1,6 раза область значений исходной смоделированной неопределенности в CL.

Выход 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')

Figure contains an axes object. The axes object with title Stability Margin vs. Frequency contains 2 objects of type line. These objects represent 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.8269

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

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

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

свернуть все

Динамическая система с неопределенностью в виде a 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 нормированных единицы.

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

Если номинальная стоимость usys нестабильно, запас устойчивости 0. Если usys isa 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 isnan.

Алгоритмы

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

Для 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