TuningGoal. Класс MinLoopGain

Пакет: 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) создает настраивающуюся цель по повышению усиления обратной связи MIMO или SISO. Настраивающаяся цель указывает, что частотная характеристика разомкнутого цикла (L), измеренный в заданных местоположениях, превышает минимальный профиль усиления, заданный loopgain.

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

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

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

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

location

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

  • Если вы настраиваете модель Simulink® системы управления, можно использовать любую линейную аналитическую точку, отмеченную в модели или любую линейную аналитическую точку в интерфейсе slTuner, сопоставленном с моделью Simulink. Используйте addPoint, чтобы добавить, что анализ указывает на интерфейс slTuner. Например, если интерфейс slTuner содержит аналитическую точку u, можно использовать 'u', чтобы относиться к той точке при создании настраивающихся целей. Используйте getPoints, чтобы получить список аналитических точек, доступных в интерфейсе 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. Например, следующая модель 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.

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

fmin

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

Используйте этот аргумент, чтобы задать минимальный профиль усиления формы 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 ограничить осуществление настраивающейся цели к конкретному диапазону частот. Выразите это значение в единицах частоты модели системы управления, которую вы настраиваете (rad/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, каналы обратной связи автоматически повторно масштабируются, чтобы компенсировать недиагональные условия в передаточной функции разомкнутого цикла (периоды взаимодействия цикла). Установите 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. Используйте addPoint, чтобы добавить аналитические точки и открытия цикла к интерфейсу slTuner. Используйте getPoints, чтобы получить список аналитических точек, доступных в интерфейсе 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)

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

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

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

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

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

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

Чтобы видеть это отношение между минимальным усилением цикла и функцией чувствительности, настройте следующую систему с обратной связью с аналитическими точками в 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 = 2.75, Hard = -Inf, Iterations = 79

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

viewGoal(Rgain,CL)

График показывает достигнутое усиление цикла для цикла в 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) на уровне 1 000 рад/с на внутреннем цикле следующей системы управления.

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

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 для этой настраивающей цели. 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 |. Поэтому осуществление требования усиления минимума разомкнутого цикла, |L |> |WS |, примерно эквивалентно осуществлению |WsS | <1. Для циклов MIMO подобное обоснование применяется, с || S || ≈ 1/σmin (L), где min σ является самым маленьким сингулярным значением.

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

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

развернуть все

Поведение изменяется в R2016a

Введенный в R2016a