looptune

Настройте обратную связь MIMO в Simulink с помощью интерфейса slTuner

Синтаксис

[st,gam,info] = looptune(st0,controls,measurements,wc)
[st,gam,info] = looptune(st0,controls,measurements,wc,req1,...,reqN)
[st,gam,info] = looptune(___,opt)

Описание

пример

[st,gam,info] = looptune(st0,controls,measurements,wc) настраивает свободные параметры системы управления моделью Simulink®, сопоставленной с интерфейсом slTuner, st0, чтобы достигнуть следующих целей:

  • Пропускная способность — Усиление перекрестно соединяет для каждого цикла падения интервала частоты wc

  • Производительность — Интегральное действие на частотах ниже wc

  • Робастность — Соответствующие запасы устойчивости и спад усиления на частотах выше wc

controls и measurements задают выходные сигналы контроллера и сигналы измерения, которые подвергаются целям, соответственно. st является обновленным интерфейсом slTuner, gam указывает на меру успеха в удовлетворении целей, и info сообщает подробности относительно запущенной оптимизации.

Настройка выполняется в шаге расчета, заданном свойством Ts st0. Для настройки деталей алгоритма см. Алгоритмы.

[st,gam,info] = looptune(st0,controls,measurements,wc,req1,...,reqN) настраивает обратную связь, чтобы удовлетворить дополнительным целям, заданным в одном или нескольких настраивающихся целевых объектах, req. Не используйте wc, чтобы пропустить цель формирования цикла по умолчанию, сопоставленную с wc. Обратите внимание на то, что цели запаса устойчивости остаются в силе.

[st,gam,info] = looptune(___,opt) задает дальнейшие опции, включая целевые запасы по амплитуде и фазе, количество выполнений и опции вычисления для настраивающегося алгоритма. Используйте looptuneOptions, чтобы создать opt.

Если вы задаете несколько выполнений с помощью свойства RandomStarts opt, looptune выполняет только как много выполнений, требуемых достигнуть значения целевого уровня 1. Обратите внимание на то, что все настраивающие цели должны быть нормированы так, чтобы максимальное значение 1 среднего значения, что всем целям проекта удовлетворяют.

Примеры

свернуть все

Настройте ПИД-регулятор в модели rct_engine_speed, чтобы достигнуть заданной пропускной способности.

Откройте модель Simulink.

mdl = 'rct_engine_speed';
open_system(mdl);

Создайте интерфейс slTuner для модели.

st0 = slTuner(mdl,'PID Controller');

Добавьте PID Controller вывод, u, как аналитическая точка к st0.

addPoint(st0,'u');

На основе характеристик первого порядка перекрестная частота должна превысить 1 рад/с для ответа с обратной связью, чтобы обосноваться меньше чем за 5 секунд. Так, настройте цикл ПИДа с помощью 1 рад/с в качестве целевой перекрестной частоты на 0 дБ.

wc = 1;
st = looptune(st0,'u','Speed',wc);
Final: Peak gain = 0.979, Iterations = 4
Achieved target gain value TargetGain=1.

В вызове looptune 'u' задает управляющий сигнал, и 'Speed' задает измеренный сигнал.

Сравните настроенный и начальный ответ.

stepplot(getIOTransfer(st0,'Ref','Speed'),getIOTransfer(st,'Ref','Speed'));
legend('Initial','Speed');

Просмотрите настроенное значение блока.

showTunable(st)
Block 1: rct_engine_speed/PID Controller =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 0.000619, Ki = 0.00303, Kd = 0.000168, Tf = 0.01
 
Name: PID_Controller
Continuous-time PIDF controller in parallel form.

Чтобы записать настроенные значения обратно к модели Simulink, используйте writeBlockValue.

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

свернуть все

Интерфейс для настройки систем управления, смоделированных в Simulink, заданном как интерфейс slTuner.

Controller имя вывода, заданное как одно из следующего:

  • Вектор символов — Имя аналитической точки st0.

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

    Например, 'u'.

  • Массив ячеек из символьных векторов Несколько аналитических имен точки.

    Например, {'u','y'}.

Имя сигнала измерения, заданное как одно из следующего:

  • Вектор символов — Имя аналитической точки st0.

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

    Например, 'u'.

  • Массив ячеек вектора символов — Несколько аналитических имен точки.

    Например, {'u','y'}.

Целевая перекрестная область, заданная как одно из следующего:

  • [wcmin,wcmax]looptune пытается настроить все циклы в системе управления так, чтобы коэффициент усиления разомкнутого контура пересек 0 дБ в целевой перекрестной области.

  • Положительная скалярная величина — Задает целевую перекрестную область как [wc/10^0.1,wc*10^0.1] или wc + десятилетия/-0.1.

Задайте wc в модулях рабочего времени, то есть, единицах измерения времени модели.

Разработайте цели, заданные, когда один или несколько TuningGoal возражают.

Для полного списка целей проекта можно задать, видеть Настраивающиеся Цели (Control System Toolbox).

Настройка опций алгоритма, заданных как набор опций, созданный с помощью looptuneOptions.

Доступные параметры включают:

  • Количество дополнительной оптимизации, чтобы запустить запуск со случайных начальных значений свободных параметров

  • Допуск к завершению оптимизации

  • Отметьте для использования параллельной обработки

  • Спецификация целевого запаса по амплитуде и фазе

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

свернуть все

Настроенный интерфейс, возвращенный как интерфейс slTuner.

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

Значение   gam <= 1 указывает, что все цели удовлетворены. Значение   gam >> 1 указывает на отказ удовлетворить по крайней мере одно требование. Используйте loopview, чтобы визуализировать настроенный результат и идентифицировать неудовлетворенное требование.

Для лучших результатов используйте опцию RandomStart в looptuneOptions, чтобы получить несколько выполнений минимизации. Установка RandomStart к целочисленному N > 0 заставляют looptune запускать оптимизацию N дополнительные времена, начало от значений параметров, которые это выбирает случайным образом. Можно исследовать gam на каждое выполнение, чтобы помочь идентифицировать результат оптимизации, который удовлетворяет целям проекта.

Подробная информация о каждой запущенной оптимизации, возвратилась как структура со следующими полями:

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

Масштабированный объект дан Do\G*Di.

Разработайте цели, используемые для настройки, возвращенные как вектор объектов требования TuningGoal.

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

Содержимым Runs является info вывод вызова systune, выполняемого looptune. Для получения информации о полях Runs см. описание выходного аргумента info на странице с описанием systune.

Больше о

свернуть все

Настроенные блоки

Tuned blocks, используемый интерфейсом slTuner, идентифицирует блоки в модели Simulink, параметры которой должны быть настроены, чтобы удовлетворить настраивающиеся цели. Можно настроить большинство блоков Simulink, которые представляют линейные элементы, такие как усиления, передаточные функции или модели в пространстве состояний. (Для полного списка блоков, которые поддерживают настройку, смотрите, Как Настроенные блоки Simulink Параметризованы). Можно также настроить более комплексные блоки, такие как SubSystem или Блоки s-function путем определения эквивалентной настраиваемой линейной модели (Control System Toolbox).

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

Необходимо задать настроенные блоки (например, C1 и C2), когда вы создаете интерфейс slTuner.

st = slTuner('scdcascade',{'C1','C2'})

Можно изменить список настроенных блоков с помощью addBlock и removeBlock.

Взаимодействовать с настроенным использованием блоков:

  • getBlockParam, getBlockValue и getTunedValue, чтобы получить доступ к настроенной параметризации блока и их текущим значениям.

  • setBlockParam, setBlockValue и setTunedValue, чтобы изменить настроенную параметризацию блока и их значения.

  • writeBlockValue, чтобы обновить блоки в модели Simulink с текущими значениями настроенной параметризации блока.

Алгоритмы

looptune автоматически преобразовывает целевую пропускную способность, цели производительности и дополнительные цели проекта в функции взвешивания, которые выражают цели как задачу оптимизации H∞. looptune затем использует systune, чтобы оптимизировать настраиваемые параметры, чтобы минимизировать норму H∞.

Для получения информации об алгоритмах оптимизации см. [1].

looptune вычисляет норму H∞ с помощью алгоритма [2] и сохранение структуры eigensolvers от библиотеки SLICOT. Для получения дополнительной информации о библиотеке SLICOT, см. http://slicot.org.

Ссылки

[1] П. Апкэриэн и Д. Нолл, "Несглаженный Синтез H-бесконечности". Транзакции IEEE на Автоматическом управлении, Издании 51, Номере 1, 2006, стр 71–86.

[2] Bruisma, Н.Э. и М. Стейнбач, "Алгоритм FAST, чтобы Вычислить -норму H Матрицы Передаточной функции", Системные Буквы Управления, 14 (1990), стр 287-293.

Расширенные возможности

Введенный в R2014a