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. The axes contains an object of type line. This object represents untitled1.

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

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

The 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, что делает её нестабильной. The 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. The axes 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.8280

Кроме того, вместо использования '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. The axes with title Stability Margin vs. Frequency contains 2 objects of type line. These objects represent 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 должна быть номинально стабильной.

Задайте частоты в единицах рада TimeUnit, где TimeUnit является TimeUnit свойство модели.

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

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

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

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

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

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

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

свернуть все

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

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

LowerBound

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

UpperBound

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

CriticalFrequency

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

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

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

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

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

Если номинальное значение 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. Когда вы задаете вектор частоты, эти частоты не гарантированно включают частоту, при которой запас устойчивости наименьший.

The '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.

Алгоритмы

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

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

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

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

Введенный в R2016b