В этом примере показов, как использовать блок Разомкнутого контура ПИД Autotuner для настройки ПИ-контроллера системы управления скорости вращения двигателя как в симуляции, так и в реальном времени.
Разомкнутый контур ПИД Autotuner позволяет вам настраивать одношаговый ПИД-регулятор в режиме реального времени. Он проводит эксперимент без разомкнутого контура, который вводит сигналы возмущения на объект и вычисляет коэффициенты ПИД на основе частотных характеристик объекта, оцененных вблизи желаемой полосы пропускания.
Блок Open-Loop PID Autotuner поддерживает два типичных сценария настройки ПИД в приложениях реального времени:
(1) Разверните блок на оборудовании и используйте его в автономном приложении реального времени, без присутствия Simulink.
(2) Разверните блок на оборудовании, но контролируйте и управляйте процессом настройки в режиме реального времени в Simulink, используя режим external mode. Режим external mode позволяет осуществлять связь между Диаграммой Simulink, работающим на хосте-компьютере, и сгенерированным кодом, выполняемым на оборудовании.
Этот пример фокусируется на втором сценарии, где блок Open-Loop PID Autotuner используется для настройки системы регулировки скорости вращения двигателя в реальном времени с использованием режима external mode.
Модель Simulink содержит блок PID, блок Open-Loop PID Autotuner и модель двигателя.
mdl = 'scdspeedctrlOnlinePIDTuning';
open_system(mdl);
ПИ-контроллер имеет начальные усиления P = 0,01 и I = 0,01, предоставляемые извне блоку ПИД через входные порты «P» и «I». Наличие внешних усилений P и I позволяет вам изменять их после того, как новые усиления будут вычислены блоком Open-Loop PID Autotuner позже.
Блок Open-Loop PID Autotuner вставляется между блоком PID и моделью engine. Сигнал запуска/остановки используется, чтобы начать и остановить эксперимент без разомкнутого контура. Когда ни один эксперимент не выполняется, блок Open-Loop PID Autotuner ведет себя как блок усиления единства, где сигнал "u" непосредственно переходит к "u + Когда эксперимент заканчивается, блок настраивает коэффициент коэффициентов ПИД и выводит их на порт «коэффициент усиления ПИДа».
Есть несколько вещей, о которых необходимо знать при использовании блока Open-Loop PID Autotuner против физического объекта в режиме реального времени:
Этот объект должен быть асимптотически стабильным, потому что в процессе настройки проводится разомкнутый контур эксперимент. Если у вашего объекта есть один интегратор, можно по-прежнему использовать блок, выбрав не оценивать коэффициент усиления объекта постоянного тока. Однако в обоих случаях необходимо внимательно следить за поведением объекта в процессе настройки и оперативно вмешиваться, если объект слишком близок к нежелательному рабочему условию.
Чтобы помочь более точно оценить частотные характеристики объекта в реальном времени, должно быть минимальное нарушение порядка нагрузки, возникающее в процессе настройки. Блок ожидает, что выход объекта управления будет ответом только на введенные сигналы возмущения, и нарушение порядка нагрузки искажает этот выход.
Включается "режим отслеживания" (входной порт TR) в блоке PID, который позволяет блоку PID отслеживать действительный вход объекта "u + Эта функция должна использоваться постоянно, чтобы обеспечить бесшумную передачу, когда цикл закрыт, и блок ПИД возобновляет управление после завершения процесса настройки.
После надлежащего соединения блока Автотюнера ПИД разомкнутого контура с моделью объекта управления и блока ПИД, откройте диалог блока и определите параметры настройки настройки и эксперимента.
В вкладке «Настройка» есть две основные настройки настройки:
Целевая полоса пропускания: Определяет, насколько быстро вы хотите, чтобы контроллер ответил. В этом примере выберите 2 рад/с, поскольку желаемое время нарастания составляет 1 сек.
Целевой запас по фазе: Определяет, насколько устойчивым вы хотите, чтобы контроллер был. В этом примере выберите значение по умолчанию 60 степеней, которое приводит к перерегулированию около 5% в целом.
На вкладке «Эксперимент» есть две основные настройки эксперимента:
Амплитуды синуса: Задает амплитуды введённых синусоид. В этом примере выберите 0,1 для всей четырёх синусоид, часть номинального входа объекта 9. В процессе настройки выход объекта изменяется между 1900 и 2100 об/мин, что составляет около +/-5% от номинального выхода объекта 2000 года. Цель состоит в том, чтобы сохранить работу объекта рядом с номинальной рабочей точкой, чтобы избежать возбуждения нелинейного поведения объекта.
Амплитуда шага: Задает амплитуду введенного шагового сигнала. В этом примере также выберите 0,1. Обратите внимание, что, если объект имеет один интегратор, вам нужно принять решение не оценивать коэффициент усиления постоянного тока, и в результате никакой шаговый сигнал не вводится на объект.
Если у вас есть модель объекта управления, созданная в Simulink, рекомендуется симулировать блок Open-Loop PID Autotuner относительно модели объекта управления в режиме normal mode перед использованием блока во режиме external mode для настройки в реальном времени. Симуляция поможет вам идентифицировать проблемы в соединении сигналов и настройках блоков, чтобы можно было их настроить перед генерацией кода.
sim(mdl);
В этом примере скорости вращения двигателя опорного сигнала переходит с 2000 до 3000 об/мин, а затем обратно к 2000 об/мин в первые 20 секунд. Исходные усиления P = 0,01 и I = 0,01 вызывают сильные колебания в переходном процессе и должны быть перестроены.
На 20 секунде объект работает в номинальной рабочей точке 2000 об/мин и запускается оперативная настройка ПИД. Длительность эксперимента составляет 50 секунд, потому что консервативное руководство предполагает, что для сходимости онлайн-оценки частотной характеристики требуется около 100 секунд/полоса пропускания.
Когда настройка ПИД прекращается на 70 секунде, новые усиления P = 0,0026 и I = 0,0065 немедленно доступны на выходе «усиления ПИДа» и отправляются на внешний порт P и I блока ПИД, перезаписывая исходные усиления. Обратите внимание, что при закрытии цикла отбойник почти отсутствует, и блок ПИД возобновляет управление в этот момент.
Скорость скорости вращения двигателя опорного сигнала от 2000 до 3000 об/мин, а затем снова до 2000 об/мин от 80 до 100 секунд. Новые усиления PI обеспечивают намного лучшую реакцию с обратной связью.
Чтобы настроить ПИ-контроллер на физический двигатель в режим external mode, необходимо заменить раздел «Engine Model» в модели Simulink оборудования интерфейсными блоками, которые обеспечивают измерение частоты вращения как «y» и отправить угол дросселя приводу как «u».
Вот пример схемы Simulink, настроенной для настройки в режиме external mode, предполагающей, что ваше ПИ-контроллер работает на плате Arduino DUE и взаимодействует с вашим физическим механизмом через последовательные порты.
Вот сводные данные изменений (в том порядке), внесенных в исходную модель Simulink, чтобы заставить ее работать во режиме external mode:
Иметь хост-компьютер, который работает под управлением Simulink и общается с платой Arduino DUE через USB-соединение.
Установите «Пакет поддержки Simulink для оборудования Arduino». Если оборудование отличается, необходимо установить другой пакет аппаратной поддержки.
В диалоговом окне «Параметры конфигурации» выберите тип решателя «Fixed-Step» на панели «Solver» и аппаратной платы «Arduino DUE» на панели «Аппаратная реализация».
Замените раздел модели двигателя в исходной модели двумя блоками последовательного интерфейса. В режиме реального времени блок Open-Loop PID Autotuner, работающий на плате Arduino, собирает выходы объекта из блока «Serial Receive» (от датчика) и отправляет сигналы эксперимента в двигатель через блок «Serial Transmit» (к приводу).
Для большей гибкости в операции в реальном времени запустите и остановите процесс настройки, переворачивая ручной переключатель «Tuning Switch» вместо того, чтобы основываться на часах симуляции. Точно так же обновляйте коэффициент усиления ПИ, переворачивая «Gain Switch» и изменяйте опорный сигнал, переворачивая «Ref Switch».
Выберите «Режим external mode» в модели Simulink и установите время симуляции на «бесконечное».
Запустите симуляцию. Во-первых, Simulink генерирует код для всей модели и загружает его на плату Arduino DUE. После запуска программы на плате можно контролировать вход и выход объекта из возможностей режиме реального времени. Когда объект достигает номинальной рабочей точки 2000 об/мин, используйте три ручных переключателя для настройки, обновления и проверки контроллера.
Опция «Уменьшить память и избежать переполнения задачи (режим external mode)» на вкладке « Блоке» может помочь развернуть сгенерированный код на оборудовании с ограниченными ресурсами памяти и/или очень быстрым шагом расчета.
Если на вашем оборудовании недостаточно памяти, используйте эту опцию при настройке во режиме external mode. С помощью этой опции Simulink только генерирует код для функциональности онлайн-оценки частотной характеристики. Поскольку ни один код не развернут для функциональности проекта ПИД, результатом является уменьшение использования памяти на оборудовании. В этом случае, после того, как оценка выполнена, коэффициенты ПИД вычисляются в Simulink на хост-компьютер и затем отправляются обратно в блок autotuner.
Вычисление коэффициента ПИД в конце процесса настройки требует гораздо большего расчета нагрузки, чем онлайн-оценка частотной характеристики. Если шаги расчета контроллера очень быстрый, некоторое оборудование могут не завершить вычисление в течение цикла выполнения. Поэтому наличие хоста-компьютера для выполнения вычисления коэффициента ПИД также позволяет вам настроить ПИД-регулятор с быстрого шага расчета на оборудовании с ограниченными вычислительными степенями.
bdclose(mdl)