В этом примере показано, как использовать блок автоматической настройки PID с разомкнутым контуром для настройки PI-контроллера системы управления частотой вращения двигателя как в режиме моделирования, так и в режиме реального времени.
Блок автозапуска PID с разомкнутым контуром позволяет настраивать контроллер PID с одним контуром в реальном времени. Он выполняет эксперимент с разомкнутым контуром, который вводит сигналы возмущения в установку и вычисляет коэффициенты усиления PID на основе частотных характеристик установки, оцененных вблизи требуемой полосы пропускания.
Блок автоматической настройки PID с разомкнутым контуром поддерживает два типичных сценария настройки PID в приложениях реального времени:
(1) Развертывание блока на оборудовании и его использование в автономном приложении реального времени без присутствия Simulink.
(2) Развертывание блока на оборудовании, но мониторинг и управление процессом настройки в реальном времени в Simulink с использованием внешнего режима. Внешний режим позволяет осуществлять связь между блок-схемой Simulink, выполняемой на хост-компьютере, и генерируемым кодом, выполняемым на оборудовании.
В этом примере основное внимание уделяется второму сценарию, в котором блок автоотюнера PID с разомкнутым контуром используется для настройки системы управления частотой вращения двигателя в режиме реального времени с использованием внешнего режима.
Модель Simulink содержит блок PID, блок автоотюнера PID с разомкнутым контуром и модель двигателя.
mdl = 'scdspeedctrlOnlinePIDTuning';
open_system(mdl);

PI-контроллер имеет начальный коэффициент усиления P = 0,01 и I = 0,01, подаваемый извне в блок PID через входы «P» и «I». Наличие внешних коэффициентов усиления P и I позволяет изменять их после того, как новые коэффициенты усиления вычисляются блоком автоотюнера PID с открытым контуром позже.
Блок автозапуска PID с разомкнутым контуром вставляется между блоком PID и моделью двигателя. Сигнал запуска/останова используется для запуска и остановки эксперимента с разомкнутым контуром. Когда эксперимент не выполняется, блок автоотюнера PID с разомкнутым контуром ведет себя как блок единичного усиления, где сигнал «u» непосредственно переходит в «u + Δu». Когда эксперимент завершается, блок настраивает коэффициенты усиления PID и выводит их на порт «pid venies».
При использовании блока автоотюнера PID с разомкнутым контуром для физического предприятия в режиме реального времени необходимо знать следующее:
Растение должно быть асимптотически стабильным, поскольку в процессе настройки проводится эксперимент с разомкнутым контуром. Если у вашего завода есть единый интегратор, вы по-прежнему можете использовать блок, выбрав, чтобы не оценивать усиление установки dc. Однако в обоих случаях необходимо внимательно следить за поведением установки во время процесса настройки и оперативно вмешиваться, если установка находится слишком близко к нежелательному рабочему состоянию.
Для более точной оценки частотных характеристик установки в режиме реального времени должно существовать минимальное возмущение нагрузки, возникающее в процессе настройки. Блок ожидает, что выход установки будет ответом только на вводимые сигналы возмущения, и возмущение нагрузки искажает этот выход.
Включается «режим отслеживания» (вход TR) в блоке PID, который позволяет блоку PID отслеживать действительный вход установки «u + Δu» во время процесса настройки. Эта функция должна использоваться постоянно для обеспечения безударной передачи, когда цикл замкнут и блок PID возобновляет управление после завершения процесса настройки.
После правильного соединения блока автоотюнера PID с разомкнутым контуром с моделью завода и блоком PID откройте диалоговое окно блока и задайте параметры настройки и эксперимента.
На вкладке «Настройка» имеются две основные настройки настройки:

Целевая полоса пропускания: Определяет скорость ответа контроллера. В этом примере выберите 2 рад/сек, поскольку требуемое время нарастания составляет 1 сек.
Целевое поле фазы: Определяет, насколько надежным должен быть контроллер. В этом примере выберите значение по умолчанию, равное 60 градусам, что обычно приводит к превышению приблизительно на 5%.
На вкладке «Эксперимент» имеются две основные настройки эксперимента:

Синусоидальные амплитуды: определяет амплитуды инжектируемых синусоидальных волн. В этом примере выберите 0,1 для всех четырех синусоидальных волн, часть номинального входного значения 9. В процессе настройки производительность установки варьируется от 1900 до 2100 об/мин, что составляет около +/- 5% от номинальной производительности установки 2000 года. Целью является поддержание работы установки вблизи номинальной рабочей точки, чтобы избежать захватывающего нелинейного поведения установки.
Амплитуда шага: определяет амплитуду введенного сигнала шага. В этом примере также выберите 0.1. Заметим, что, если у установки есть единый интегратор, нужно выбирать не оценивать коэффициент усиления постоянного тока, и в результате в установку не подается ступенчатый сигнал.
При наличии модели завода, построенной в Simulink, перед использованием блока во внешнем режиме для настройки в реальном времени рекомендуется смоделировать блок автоотюнера PID с разомкнутым контуром по отношению к модели завода в обычном режиме. Моделирование поможет выявить проблемы с подключением сигнала и настройками блокировки, чтобы можно было настроить их перед созданием кода.
sim(mdl);

В этом примере опорный сигнал частоты вращения двигателя переходит от 2000 до 3000 об/мин, а затем обратно к 2000 об/мин в первые 20 секунд. Исходные коэффициенты усиления P = 0,01 и I = 0,01 вызывают сильное колебание в переходном процессе и нуждаются в повторной настройке.
Через 20 секунд установка работает при номинальной рабочей точке 2000 об/мин и начинается оперативная настройка PID. Продолжительность эксперимента составляет 50 секунд, потому что консервативные рекомендации предполагают, что для оценки частотного отклика в режиме онлайн требуется около 100 секунд на полосу пропускания.
Когда настройка PID останавливается на 70 секундах, новые коэффициенты усиления P = 0,0026 и I = 0,0065 немедленно становятся доступными на выходе «pid gens» и отправляются на внешний порт P и I блока PID, перезаписывая исходные коэффициенты усиления. Следует отметить, что при замыкании контура и возобновлении управления блоком ПИД в этот момент практически отсутствует дуга в переходном процессе.
Опорный сигнал частоты вращения двигателя проходит от 2000 до 3000 об/мин и затем снова возвращается к 2000 об/мин между 80 и 100 секундами. Новый прирост PI обеспечивает гораздо лучшую реакцию с замкнутым контуром.
Для настройки ПИ-контроллера на физический двигатель во внешнем режиме необходимо заменить раздел «Модель двигателя» в модели Simulink аппаратными интерфейсными блоками, обеспечивающими измерение оборотов в виде «y» и послать угол дросселя на исполнительный механизм в виде «u».
Ниже приведен пример схемы Simulink, настроенной для настройки во внешнем режиме, при условии, что ваш PI-контроллер работает на плате Arduino DUE и взаимодействует с вашим физическим двигателем через последовательные порты.

Ниже приводится краткое описание изменений (в этом порядке), внесенных в исходную модель Simulink для того, чтобы она работала во внешнем режиме:
Иметь хост-компьютер, работающий под управлением Simulink и связывающийся с платой Arduino DUE через USB-соединение.
Установите «Пакет поддержки Simulink для оборудования Arduino». Если оборудование отличается, необходимо установить другой пакет поддержки оборудования.
В диалоговом окне «Configuration Parameters» выберите тип решателя «Fixed-Step» на панели «Solver» и аппаратную плату «Arduino DUE» на панели «Hardware Implementation».
Замените раздел модели двигателя в исходной модели двумя последовательными интерфейсными блоками. В режиме реального времени блок автозапуска PID с разомкнутым контуром, работающий на плате Arduino, собирает выходные данные установки от блока «Serial Receive» (от датчика) и передает сигналы эксперимента на двигатель через блок «Serial Transmit» (на исполнительный механизм).
Для большей гибкости работы в режиме реального времени запустите и остановите процесс настройки, изменив значение параметра «Tuning Switch» вручную, а не на основе часов моделирования. Аналогично, обновите коэффициенты усиления PI, перевернув «переключатель усиления», и измените опорный сигнал, перевернув «переключатель привязки».
Выберите «Внешний режим» в модели Simulink и установите время моделирования на «бесконечное».
Запустить моделирование. Сначала Simulink генерирует код для всей модели и загружает его на плату Arduino DUE. После запуска программы на плате можно контролировать ввод и вывод данных установки из области в реальном времени. При достижении заводом номинальной рабочей точки 2000 об/мин используйте три ручных переключателя для настройки, обновления и проверки контроллера.
Опция «Уменьшить объем памяти и избежать переполнения задач (только для внешнего режима)» на вкладке «Блокировать» может помочь развернуть сгенерированный код на оборудовании с ограниченными ресурсами памяти и/или очень быстрым временем выборки.

Если на вашем оборудовании недостаточно памяти, используйте эту опцию при настройке во внешнем режиме. С помощью этой опции Simulink генерирует код только для функции оценки частотной характеристики в режиме реального времени. Поскольку для функций проектирования PID не развернут код, в результате уменьшается использование памяти на оборудовании. В этом случае после выполнения оценки коэффициенты усиления PID вычисляются в Simulink на хост-компьютере и затем отправляются обратно в блок autotuner.
Вычисление коэффициента усиления PID в конце процесса настройки требует гораздо большей вычислительной нагрузки, чем оценка частотного отклика в режиме онлайн. Если время выборки контроллера очень быстрое, некоторые аппаратные средства могут оказаться не в состоянии завершить вычисление в течение цикла выполнения. Следовательно, выполнение главным компьютером вычисления коэффициента усиления PID также позволяет настроить PID-контроллер с быстрым временем выборки на аппаратном обеспечении с ограниченной вычислительной мощностью.
bdclose(mdl)
Автоматический запуск PID с разомкнутым контуром