TuningGoal.MinLoopGain class

Пакет: TuningGoal

Ограничение минимального усиления цикла для настройки системы управления

Описание

Используйте TuningGoal.MinLoopGain объект для обеспечения минимального коэффициента усиления цикла в конкретной полосе частот. Используйте эту цель настройки с командами настройки системы управления, такими как systune или looptune.

Эта цель настройки накладывает минимальный коэффициент усиления на частотную характеристику без разомкнутого контура (L) в заданном месте в вашей системе управления. Вы задаете минимальный коэффициент усиления без разомкнутого контура как функцию от частоты (минимальное gain profile). Для циклов обратной связи MIMO указанный профиль усиления интерпретируется как нижняя граница наименьшего сингулярного значения L.

Когда вы настраиваете систему управления, профиль минимального усиления преобразуется в ограничение минимального усиления на обратной функции чувствительности, inv (S) = (I + L).

Следующий рисунок показывает типичный заданный профиль минимального усиления (штриховая линия) и полученный настроенный коэффициент усиления цикла, L (синяя линия). Затененная область представляет значения профиля усиления, которые запрещены этой целью настройки. Рисунок показывает, что, когда L намного больше 1, наложение минимального усиления на inv (S) является хорошим прокси для минимального коэффициента усиления без разомкнутого контура.

TuningGoal.MinLoopGain и TuningGoal.MaxLoopGain задавать только ограничения с низким или высоким усилением в определенных полосах. Когда вы используете эти цели настройки, systune и looptune определите лучшую форму цикла рядом с перекрестием. Когда форма цикла около перекрестия проста или хорошо понятна (например, интегральное действие), можно использовать TuningGoal.LoopShape чтобы задать целевой цикл форму.

Конструкция

Req = TuningGoal.MinLoopGain(location,loopgain) создает цель настройки для увеличения усиления цикла обратной связи SISO или MIMO. Цель настройки задает, что разомкнутая частотная характеристика (L), измеренная в заданных местах, превышает минимальный профиль усиления, заданный как loopgain.

Можно задать профиль минимального усиления как плавную передаточную функцию или нарисовать кусочно- ошибку профиль с помощью frd модель или makeweight (Robust Control Toolbox). Принудительно применяются только значения усиления, больше 1.

Для циклов обратной связи MIMO указанный профиль усиления интерпретируется как нижняя граница наименьшего сингулярного значения L.

Req = TuningGoal.MinLoopGain(location,fmin,gmin) задает профиль минимального усиления формы loopgain = K/s (интегральное действие). Программное обеспечение выбирает K таким образом, чтобы значение усиления gmin на заданной частоте, fmin.

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

location

Положение, в котором ограничен максимальный коэффициент усиления без разомкнутого контура, заданное как вектор символов или массив ячеек из векторов символов, которые идентифицируют одно или несколько местоположений в системе управления для настройки. Какие места открытия цикла доступны, зависит от того, какую систему вы настраиваете:

  • Если вы настраиваете Simulink® модель системы управления, можно использовать любую точку линейного анализа, отмеченную в модели, или любую точку линейного анализа в slTuner (Simulink Control Design) интерфейс, сопоставленный с моделью Simulink. Использовать addPoint (Simulink Control Design), чтобы добавить точки анализа к slTuner интерфейс. Для примера, если slTuner интерфейс содержит точку анализа u, можно использовать 'u' для обращения к этой точке при создании целей настройки. Использовать getPoints (Simulink Control Design), чтобы получить список точек анализа, доступных в slTuner интерфейс с вашей моделью.

  • Если вы настраиваете обобщенное пространство состояний (genss) модель системы управления, можно использовать любую AnalysisPoint местоположение в системной модели управления. Например, следующий код создает цикл PI с точкой анализа на входе объекта управления 'u'.

    AP = AnalysisPoint('u');
    G = tf(1,[1 2]);
    C = tunablePID('C','pi');
    T = feedback(G*AP*C,1);
    

    При создании целей настройки можно использовать 'u' для обращения к точке анализа на входе объекта управления. Использовать getPoints чтобы получить список точек анализа, доступных в genss модель.

Если location является массивом ячеек с расположениями открытия цикла, тогда цель минимального усиления применяется к полученному циклу MIMO.

loopgain

Минимальное усиление разомкнутого контура как функция от частоты.

Можно задать loopgain как плавная передаточная функция SISO (tf, zpk, или ss модель). Также можно нарисовать кусочно-усилительный профиль с помощью frd модель или makeweight (Robust Control Toolbox). Для примера выполните следующее frd модель задает минимальный коэффициент усиления 100 (40 дБ) ниже 0,1 рад/с, скатываясь со скоростью -20 дБ/дес на более высоких частотах.

loopgain = frd([100 100 10],[0 1e-1 1]);

Когда вы используете frd модель для задания loopgain, программное обеспечение автоматически сопоставляет ваш заданный профиль усиления с zpk модель. Величина этой модели аппроксимирует желаемый профиль усиления. Использование viewGoal(Req) чтобы построить график величины этого zpk модель.

Принудительно применяются только значения усиления больше 1. Для контуров обратной связи с несколькими входами, несколькими выходами (MIMO), профиль усиления интерпретируется как нижняя граница наименьшего сингулярного значения L. Для получения дополнительной информации о сингулярных значениях см. sigma.

Если вы настраиваете в дискретном времени (то есть используя a genss модель или slTuner интерфейс с ненулевым Ts), можно задать loopgain как модель в дискретном времени с такими же Ts. Если вы задаете loopgain за непрерывное время программа настройки дискретизирует его. Установка усиления цикла в дискретном времени дает вам больше управления усилением цикла около частоты Найквиста.

fmin

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

Используйте этот аргумент, чтобы задать профиль минимального усиления формы loopgain = K/s (интегральное действие). Программное обеспечение выбирает K таким образом, чтобы значение усиления gmin на заданной частоте, fmin.

gmin

Значение минимального усиления, происходящего в fmin, заданный как скалярное абсолютное значение.

Используйте этот аргумент, чтобы задать профиль минимального усиления формы loopgain = K/s (интегральное действие). Программное обеспечение выбирает K таким образом, чтобы значение усиления gmin на заданной частоте, fmin.

Свойства

MinGain

Минимальный коэффициент усиления разомкнутого контура как функция от частоты, заданный как SISO zpk модель.

Программа автоматически отображает входной параметр loopgain на zpk модель. Величина этого zpk модель аппроксимирует желаемый профиль усиления. Кроме того, если вы используете fmin и gmin аргументы для задания профиля усиления, это свойство установлено в K/s. Программное обеспечение выбирает K таким образом, чтобы значение усиления gmin на заданной частоте, fmin.

Использование viewGoal(Req) для построения графика величины разомкнутого профиля минимального усиления.

Focus

Частота полосы в которой применяется цель настройки, задается как вектор-строка формы [min,max].

Установите Focus свойство для ограничения применения цели настройки к конкретной полосе частот. Выразите это значение в частотных модулях системной модели управления, которую вы настраиваете (рад/ TimeUnit). Например, предположим Req - цель настройки, которую вы хотите применить только между 1 и 100 рад/с. Чтобы ограничить цель настройки этой полосой, используйте следующую команду:

Req.Focus = [1,100];

По умолчанию: [0,Inf] на непрерывное время; [0,pi/Ts] для дискретного времени, где Ts является моделью шага расчета.

Stabilize

Требование устойчивости по динамике замкнутого контура, заданное как 1 (true) или 0 (false).

Когда Stabilize является trueэто требование стабилизирует заданный цикл обратной связи, а также предъявляет требования к усилению или форме контура. Задайте Stabilize на false если стабильность для заданного цикла не требуется или не может быть достигнута.

По умолчанию: 1 (true)

LoopScaling

Переключение для автоматического масштабирования сигналов цикла, заданное как 'on' или 'off'.

В мультицикл или системы управления MIMO каналы обратной связи автоматически перерассчитываются, чтобы выровнять off-диагональные условия в передаточной функции разомкнутого контура (условия циклического взаимодействия). Задайте LoopScaling на 'off' отключить такое масштабирование и сформировать немасштабированную разомкнутым контуром характеристику.

По умолчанию: 'on'

Location

Расположение, в котором ограничен минимальный коэффициент усиления цикла, задается как массив ячеек из векторов символов, которые идентифицируют одну или несколько точек анализа в системе управления, чтобы настроить. Для примера, если Location = {'u'}цель настройки оценивает разомкнутый контур ответ, измеренный в точке анализа 'u'. Если Location = {'u1','u2'}, цель настройки оценивает реакцию разомкнутого контура MIMO, измеренную в точках анализа 'u1' и 'u2'.

Значение Location свойство задается функцией location входной параметр при создании цели настройки.

Models

Модели, к которым применяется цель настройки, заданные как вектор индексов.

Используйте Models свойство при настройке массива системных моделей управления с systune, чтобы применить цель настройки для подмножества моделей в массиве. Например, предположим, что вы хотите применить цель настройки, Req, ко второй, третьей и четвертой моделям в массиве моделей перешли к systune. Чтобы ограничить применение цели настройки, используйте следующую команду:

Req.Models = 2:4;

Когда Models = NaN, цель настройки применяется ко всем моделям.

По умолчанию: NaN

Openings

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

Если вы используете цель настройки, чтобы настроить модель Simulink системы управления, то Openings может включать любую линейную точку анализа, отмеченную в модели, или любую линейную точку анализа в slTuner (Simulink Control Design) интерфейс, сопоставленный с моделью Simulink. Использовать addPoint (Simulink Control Design), чтобы добавить точки анализа и открытия цикла к slTuner интерфейс. Использовать getPoints (Simulink Control Design), чтобы получить список точек анализа, доступных в slTuner интерфейс с вашей моделью.

Если вы используете цель настройки, чтобы настроить обобщенное пространство состояний (genss) модель системы управления, затем Openings может включать в себя любой AnalysisPoint местоположение в системной модели управления. Использовать getPoints чтобы получить список точек анализа, доступных в genss модель.

Для примера, если Openings = {'u1','u2'}, затем цель настройки оценивается с циклами, открытыми в точках анализа u1 и u2.

По умолчанию: {}

Name

Имя цели настройки, заданное как вектор символов.

Для примера, если Req является целью настройки:

Req.Name = 'LoopReq';

По умолчанию: []

Примеры

свернуть все

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

Предположим, что вы настраиваете систему управления, которая имеет положение открытия цикла, идентифицированное PILoop. Укажите, что коэффициент усиления без разомкнутого контура, измеренный в этом месте, превышает минимальный коэффициент усиления на 10 (20 дБ) ниже 0,1 рад/с, скатываясь со скоростью -20 дБ/дес на более высоких частотах. Использование frd модель, чтобы нарисовать этот профиль усиления.

loopgain = frd([10 10 0.1],[0 1e-1 10]);
Req = TuningGoal.MinLoopGain('PILoop',loopgain);

Программное обеспечение преобразует loopgain в плавную функцию частоты, которая аппроксимирует кусочно-заданный профиль усиления. Отобразите цель настройки, используя viewGoal.

viewGoal(Req)

Figure contains an axes. The axes contains an object of type line. These objects represent Min loop gain, inv(S) bound.

Штриховая линия показывает указанный профиль усиления. Затененная область указывает, где нарушается цель настройки, за исключением того, что значения усиления менее 1 не применяются. Поэтому эта цель настройки задает только минимальный коэффициент усиления на частотах ниже 1 рад/с.

Можно использовать Req как вход в looptune или systune при настройке системы управления. Затем используйте viewGoal (Req,T) сравнить коэффициент усиления настроенного цикла с минимальным коэффициентом усиления, заданным в цели настройки, где T представляет настроенную систему управления.

Создайте цель настройки, которая задает профиль минимального усиления цикла вида L = K/s. Профиль усиления достигает значения -20 дБ (0,01) при 100 рад/с.

Req = TuningGoal.MinLoopGain('X',100,0.01);
viewGoal(Req)

Figure contains an axes. The axes contains an object of type line. These objects represent Min loop gain, inv(S) bound.

viewGoal подтверждает, что цель настройки задана правильно. Можно использовать эту цель настройки, чтобы настроить систему управления, которая имеет положение открытия цикла, идентифицированное как 'X'. Поскольку значения усиления цикла менее 1 игнорируются, эта цель настройки задает минимальный коэффициент усиления только ниже 1 рад/с, без ограничения на коэффициент усиления цикла на более высокой частоте.

Хотя заданный профиль усиления (штриховая линия) является чистым интегратором, по числовым причинам профиль усиления, применяемый во время настройки уровней off на очень низких частотах, как описано в Алгоритмах. Чтобы увидеть регуляризованный профиль усиления, разверните оси графика цель настройки.

xlim([10^-4,10^2])
ylim([-20,80])

Figure contains an axes. The axes contains an object of type line. These objects represent Min loop gain, inv(S) bound.

Затененная область отражает измененный профиль усиления.

Исследуйте минимальную цель настройки коэффициента усиления цикла против настраиваемого коэффициента усиления цикла. Цель настройки коэффициента усиления минимального цикла преобразуется в ограничение на усиление функции чувствительности в местоположении, заданном в цели настройки.

Чтобы увидеть эту зависимость между минимальным усилением цикла и функцией чувствительности, настройте следующую систему с обратной связью с точками анализа в X1 и X2. Система управления имеет настраиваемые ПИД-регуляторы C1 и C2.

Создайте модель системы управления.

G2 = zpk([],-2,3);
G1 = zpk([],[-1 -1 -1],10);
C20 = tunablePID('C2','pi');
C10 = tunablePID('C1','pid');
X1 = AnalysisPoint('X1');
X2 = AnalysisPoint('X2');
InnerLoop = feedback(X2*G2*C20,1);
CL0 = feedback(G1*InnerLoop*C10,X1);
CL0.InputName = 'r';
CL0.OutputName = 'y';

Задайте некоторые цели настройки, включая минимальный коэффициент усиления цикла. Настройте систему управления в соответствии с этими требованиями.

Rtrack = TuningGoal.Tracking('r','y',10,0.01);
Rreject = TuningGoal.Gain('X2','y',0.1);
Rgain = TuningGoal.MinLoopGain('X2',100,10000);
Rgain.Openings = 'X1';

opts = systuneOptions('RandomStart',2);
rng('default');  % for reproducibility
[CL,fSoft] = systune(CL0,[Rtrack,Rreject,Rgain]);
Final: Soft = 1.07, Hard = -Inf, Iterations = 115
       Some closed-loop poles are marginally stable (decay rate near 1e-07)

Исследуйте TuningGoal.MinLoopGain цель против соответствующего настроенного ответа.

viewGoal(Rgain,CL)

Figure contains an axes. The axes contains 3 objects of type line. These objects represent inv(S), Loop gain(s), Min loop gain, inv(S) bound.

График показывает достигнутый коэффициент усиления цикла для цикла при X2 (синяя линия). График также показывает обратную достигнутую функцию чувствительности, S, в местоположении X2 (зеленая линия). Функция обратной чувствительности в этом месте задается inv(S) = I+L. Здесь, L - передача цикла точка-точка разомкнутого контура, измеренная в X2.

Минимальная цель усиления цикла Rgain ограничивает inv(S), представленный на графике зеленой затененной областью. Ограничение на inv(S) может рассматриваться как ограничение минимального усиления на L который применяется, где коэффициент усиления L (или наименьшее сингулярное значение L, для циклов MIMO) больше 1.

Создайте требования, которые задают минимальный коэффициент усиления цикла 20 дБ (100) при 50 рад/с и максимальный коэффициент усиления цикла -20 дБ (0,01) при 1000 рад/с во внутреннем цикле следующей системы управления.

Создайте требования к максимальному и минимальному усилению цикла.

RMinGain = TuningGoal.MinLoopGain('X2',50,100);
RMaxGain = TuningGoal.MaxLoopGain('X2',1000,0.01);

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

RMinGain.Openings = 'X1';
RMaxGain.Openings = 'X1';

Настройка Req.Openings сообщает алгоритму настройки применить требования с циклом, открытым в указанном месте. Когда внешний контур открыт, требования применяются только к внутреннему циклу.

По умолчанию настройка с помощью TuningGoal.MinLoopGain или TuningGoal.MaxLoopGain предъявляет требование устойчивости, а также минимальное или максимальное усиление цикла. Практически, в некоторых системах управления невозможно достичь стабильного внутреннего цикла. В этом случае снимите требование устойчивости для внутреннего цикла путем установки Stabilize свойство к false.

RMinGain.Stabilize = false;
RMaxGain.Stabilize = false;

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

Совет

  • Эта цель настройки накладывает неявное ограничение устойчивости на функцию чувствительности с обратной связью, измеренную в Location, оцениваемый с циклами, открытыми в точках, идентифицированных в Openings. Динамика, на которую влияет это неявное ограничение, является stabilized dynamics для этой цели настройки. The MinDecay и MaxRadius опции systuneOptions управляйте границами этой неявно ограниченной динамики. Если оптимизация не соответствует границам по умолчанию или если границы по умолчанию конфликтуют с другими требованиями, используйте systuneOptions для изменения этих значений по умолчанию.

Алгоритмы

Когда вы настраиваете систему управления, используя TuningGoalпрограммное обеспечение преобразует цель настройки в нормированное скалярное значение f (x). Здесь x является вектором свободных (настраиваемых) параметров в системе управления. Затем программа настраивает значения параметров, чтобы минимизировать f (x) или привести f (x) ниже 1, если цель настройки является жестким ограничением.

Для TuningGoal.MinLoopGain, f (x) определяется:

f(x)=WS(D1SD).

Здесь D является диагональным масштабированием (для циклов MIMO). S является функцией чувствительности в Location. WS является функцией взвешивания частот, выведенной из минимального профиля усиления цикла, MinGain. Коэффициент усиления этой функции примерно совпадает с MaxGain для значений в диапазоне от -20 дБ до 60 дБ. По числовым причинам уровни взвешивающей функции выключаются вне этой области значений, если заданный профиль усиления не изменяет наклон вне этой области значений. Эта корректировка называется regularization. Потому что полюса WS близки к s = 0 или s = Inf может привести к плохому числовому обусловлению systune задача оптимизации, не рекомендуется задавать профили усиления с очень низкочастотной или очень высокочастотной динамикой.

Для получения WS используйте:

WS = getWeight(Req,Ts)

где Req является целью настройки, и Ts - шаг расчета, в который вы настраиваете (Ts = 0 на непрерывное время). Для получения дополнительной информации о регуляризации и ее эффектах смотрите Визуализация целей настройки.

Несмотря на то, что S является передаточной функцией с обратной связью, ведение f (x) < 1 эквивалентно применению нижней границы передаточной функции с разомкнутым контуром, L, в полосе, где коэффициент усиления L больше 1. Чтобы увидеть, почему, обратите внимание, что S = 1/( 1 + L). Для циклов SISO, когда | L |>> 1, | S | ≈ 1 / | L |. Поэтому применение требования минимального усиления без разомкнутого контура, |<reservedrangesplaceholder6>| > |<reservedrangesplaceholder5>|, примерно эквивалентно применению |<reservedrangesplaceholder4>| < 1. Для циклов MIMO применяются аналогичные аргументы с ||<reservedrangesplaceholder3>|| ≈ 1/ σ мин (L), где σ мин является наименьшим сингулярным значением.

Для примера, иллюстрирующего ограничение на S, смотрите Минимальное усиление цикла как Ограничение на Функцию Чувствительности.

Вопросы совместимости

расширить все

Поведение изменено в R2016a

Введенный в R2016a