exponenta event banner

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

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

'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}) используйте алгоритм, который находит наименьший запас по частоте. Этот алгоритм не опирается на частотную сетку и не подвергается неблагоприятному влиянию разрывов структурированного сингулярного значения. Дополнительные сведения см. в разделе Получение надежных оценок пределов надежности.

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

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

Представлен в R2016b