В этом примере показано, как использовать блок Open-Loop PID Autotuner, чтобы настроить ПИ-контроллер системы управления скорости вращения двигателя и во времени симуляции и в реальное время.
Блок Open-Loop PID 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 и я = 0.01, предоставленный внешне блоку PID через импорт "P" и "I". При наличии внешнего P и я получаю, позволяет вам изменять их после того, как новые усиления вычисляются блоком Open-Loop PID Autotuner позже.
Блок Open-Loop PID Autotuner вставляется между блоком PID и моделью механизма. Запустить/остановить сигнал используется, чтобы запустить и остановить эксперимент разомкнутого цикла. Когда никакой эксперимент не запускается, блок Open-Loop PID Autotuner ведет себя как блок усиления единицы, куда сигнал "u" непосредственно передает "u +Δu". Когда эксперимент заканчивает, коэффициенты ПИД мелодий блока и выводит их в "изодромных с предварением усилениях" порт.
Существует несколько вещей, о которых необходимо знать при использовании блока Open-Loop PID Autotuner против физического объекта в режиме реального времени:
Объект должен быть асимптотически устойчивым, потому что эксперимент разомкнутого цикла проводится во время настраивающего процесса. Если ваш объект имеет один интегратор, можно все еще использовать блок путем желания не оценить объект dc усиление. В обоих случаях, однако, необходимо тесно контролировать поведение объекта во время настраивающего процесса и вмешаться быстро, если объект становится слишком близким к нежелательным условиям работы.
Чтобы помочь оценить частотные характеристики объекта более точно в режиме реального времени, должно быть воздействие минимальной нагрузки, происходящее во время настраивающего процесса. Блок ожидает объект, о котором выход, чтобы быть ответом на введенное возмущение сигнализирует только, и воздействие загрузки искажает этот выход.
"Режим отслеживания" (импорт TR) в блоке PID включен, который позволяет блоку PID отследить действительный вход объекта "u +Δu" во время настраивающего процесса. Эта функция должна быть использована все время, чтобы обеспечить передачу bumpless, когда круг замкнут и управление резюме блока PID после того, как настраивающий процесс завершается.
После соответствующего соединения блока Open-Loop PID Autotuner с моделью объекта управления и блока PID, откройте диалоговое окно блока и задайте настройки настройки и эксперимента.
Во вкладке "Tuning" существует две основных настраивающих настройки:
Целевая пропускная способность: Определяет, как быстро вы хотите, чтобы контроллер ответил. В этом примере выберите 2 рад/секунда, потому что желаемое время нарастания составляет 1 секунду.
Целевой запас по фазе: Определяет, как устойчивый вы хотите, чтобы контроллер был. В этом примере выберите значение по умолчанию 60 градусов, которое приводит приблизительно к 5%-му перерегулированию в целом.
Во вкладке "Experiment" существует две основных настройки эксперимента:
Амплитуды синуса: Задает амплитуды введенных синусоид. В этом примере выберите 0.1 для всех четырех синусоид, части номинального входа объекта 9. Во время настраивающего процесса объект вывел, варьируется между 1900 и 2 100 об/мин, который является о +/-5% номинального объекта выход 2 000. Цель состоит в том, чтобы сохранить работу объекта около номинальной рабочей точки, чтобы избежать захватывающего нелинейного поведения объекта.
Амплитуда шага: Задает амплитуду введенного сигнала шага. В этом примере выберите 0.1 также. Обратите внимание на то, что, если объект имеет один интегратор, необходимо принять решение не оценить усиление dc, и в результате никакой сигнал шага не введен к объекту.
Если вам создали модель объекта управления в Simulink, рекомендуется симулировать блок Open-Loop PID Autotuner против модели объекта управления в режиме normal mode перед использованием блока в режиме external mode для оперативной настройки. Симуляция поможет вам идентифицировать проблемы в связи сигнала и настройках блока так, чтобы можно было настроить их прежде, чем сгенерировать код.
sim(mdl);
В этом примере сигнал ссылки скорости вращения двигателя идет от 2 000 до 3 000 об/мин и затем обратно к 2 000 об/мин за первые 20 секунд. Исходные усиления P = 0.01 и я = 0,01 причины сильное колебание в переходном процессе и потребности, которая будет повторно настроена.
В 20 секунд объект запускается в номинальной рабочей точке 2 000 об/мин, и онлайновая настройка ПИДа запускается. Длительность эксперимента составляет 50 секунд, потому что консервативная инструкция предполагает, что "приблизительно 100/пропускной способности" требуются секунды для онлайновой оценки частотной характеристики, чтобы сходиться.
Когда настройка ПИДа останавливается в 70 секунд, новые усиления P = 0.0026, и я = 0.0065 сразу доступен в "изодромных с предварением усилениях" выходной порт и отправленный во внешний P, и я портирую блока PID, перезаписывая исходные усиления. Обратите внимание на то, что нет почти никакого удара в переходном процессе, когда круг замкнут и управление резюме блока PID в тот момент.
Сигнал ссылки скорости вращения двигателя идет от 2 000 до 3 000 об/мин и затем обратно к 2 000 об/мин снова между 80 и 100 секундами. Новые усиления PI обеспечивают намного лучший ответ с обратной связью.
Чтобы настроить ПИ-контроллер против физического механизма в режиме external mode, необходимо заменить раздел "Engine Model" в модели Simulink с блоками аппаратного интерфейса, которые обеспечивают измерение об/мин как "y" и отправляют угол дросселя в привод как "u".
Вот является пример схемой Simulink, сконфигурированной, чтобы настроить режим external mode, принимая, что ваш ПИ-контроллер работает на плате DUE Arduino и связывается с вашим физическим механизмом через последовательные порты.
Вот сводные данные изменений (в том порядке) сделаны к исходной модели Simulink для того, чтобы заставить его работать в режиме external mode:
Имейте хост - компьютер, который запускает Simulink и связывается с платой DUE Arduino через USB-соединение.
Установите "Пакет Поддержки Simulink для Оборудования Arduino". Необходимо установить различный пакет аппаратной поддержки, если оборудование отличается.
В диалоговом окне "Параметров конфигурации" выберите тип решателя "Fixed-Step" в панели "Решателя" и "аппаратную плату" DUE Arduino в панели "Аппаратной реализации".
Замените раздел модели механизма в исходной модели с двумя блоками последовательного интерфейса. В режиме реального времени блок Open-Loop PID Autotuner, работающий на плате Arduino, собирает объект выход из блока "Serial Receive" (от датчика) и отправляет сигналы эксперимента в механизм через блок "Serial Transmit" (на привод).
Для большей гибкости в режиме реального времени операция, запустите и остановите настраивающий процесс путем зеркального отражения руководства, "Настраивающего Переключатель" вместо на основе часов симуляции. Точно так же обновите усиления PI путем зеркального отражения "Переключателя Усиления" и измените ссылочный сигнал путем зеркального отражения "Касательно Переключателя".
Выберите "External Mode" в модели Simulink и установите время симуляции на "бесконечный".
Запустите симуляцию. Во-первых, Simulink генерирует код для целой модели, и загрузите его на плату DUE Arduino. После того, как программа начинает работать на плате, можно контролировать ввод и вывод объекта от осциллографа в режиме реального времени. Когда объект достигнет номинальной рабочей точки 2 000 об/мин, используйте три ручных переключателя, чтобы настроить, обновить и подтвердить контроллер.
"Уменьшают память и избегают, чтобы превышенная задача (только режим external mode)" опция во вкладке "Block" могла помочь развернуть сгенерированный код на оборудовании с ресурсами ограниченной памяти и/или очень быстрым шагом расчета.
Если ваше оборудование имеет низкую память на борту, используйте эту опцию при настраивании режима external mode. При использовании этой опции Simulink только генерирует код для онлайновой функциональности оценки частотной характеристики. Поскольку никакой код не развертывается для функциональности проекта ПИДа, результатом является уменьшаемое использование памяти на оборудовании. В этом случае, после того, как оценка сделана, коэффициенты ПИД вычислены в Simulink на хосте - компьютере и затем переданы обратно в блок автотюнера.
Вычисление коэффициента ПИД в конце настраивающего процесса требует намного большего количества загрузки расчета, чем онлайновая оценка частотной характеристики. Если шаг расчета контроллера очень быстр, некоторое оборудование не может смочь закончить вычисление в цикле выполнения. Поэтому наличие хоста - компьютера, чтобы выполнить вычисление коэффициента ПИД также позволяет вам настроить ПИД-регулятор с быстрым шагом расчета на оборудовании с ограниченной вычислительной мощностью.
bdclose(mdl)