looptune

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

Описание

пример

[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');

Добавьте выходы ПИД-регулятора, 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.00062, Ki = 0.00303, Kd = 0.000168, Tf = 0.01
 
Name: PID_Controller
Continuous-time PIDF controller in parallel form.

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

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

свернуть все

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

Контроллер выход, заданное как одно из следующих:

  • Вектор символов - имя точки 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 объекты.

Полный список заданных целей проекта см. в разделе Цели настройки.

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

Используйте такие команды настройки, как 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] и сохраняющих структуру собственных преобразователей из библиотеки SLICOT. Дополнительные сведения о библиотеке SLICOT см. в разделе http://slicot.org.

Ссылки

[1] P. Apkarian and D. Noll, «Nonsmooth H-infinity Synthesis». Транзакции IEEE по автоматическому управлению, том 51, номер 1, 2006, стр. 71-86.

[2] Bruisma, N.A. and M. Steinbuch, «A Fast Algorithm to Compute the H∞-Norm of a Передаточная Функция Matrix», System Control Letters, 14 (1990), pp. 287-293.

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

Введенный в R2014a