Проектируйте параметры оптимизации настройки в ссылочных моделях (GUI)

В этом примере показано, как настроить параметры в ссылочных моделях, используя Response Optimizer.

Модель управления двигателем

Модель показывает управление угловым положением для двух двигателей. Откройте модель Simulink.

open_system('sdoMultipleMotors')

Модели-ссылки используются для двух контроллеров, которые являются образцами одной модели. Откройте контроллер.

open_system('sdoRateLimitedController')

Каждый контроллер имеет коэффициенты ПИД Kp, Ki, и Kd, и скорость нарастания, Slew. The Slew значение ограничивает скорость, с которой изменяется сигнал управления, так что токи, вытянутые из источника степени, остаются в пределах источника степени. The Slew значение является общим для обоих образцов контроллера. Напротив, коэффициенты ПИД должен быть различным для каждого образца контроллера, поскольку управляемые двигатели имеют различные характеристики. Поэтому коэффициенты ПИД заданы как аргументы модели в рабочем пространстве модели контроллера. Значения коэффициента ПИД устанавливаются на уровне sdoMultipleMotors модель.

Задача проекта

Управляющий опорный сигнал является шагом изменения положения, которое происходит через 1 секунду. Угловое положение каждого мотора должно следовать за опорным сигналом, но первый двигатель имеет меньший момент инерции и может быстрее реагировать на изменения в опорном сигнале. Мы хотим, чтобы угловое положение первого мотора удовлетворяло следующим требованиям:

  • Время нарастания: 2 секунд

  • Время урегулирования: 7 секунд

Второй двигатель имеет больший момент инерции, поэтому он не может реагировать так быстро. Мы хотим, чтобы угловое положение второго мотора удовлетворяло следующим требованиям:

  • Время нарастания: 8 секунд

  • Время урегулирования: 10 секунд

Кроме того, производная каждого сигнала контроллера должна быть в области значений от -5 до 5, так что токи, вытянутые из источника степени, остаются в пределах источника степени.

Все эти требования заданы с помощью блоков в модели Simulink.

Откройте Response Optimizer

В модели Simulink на вкладке Приложений щелкните Оптимизатор отклика в разделе Системы управления, чтобы запустить приложение Оптимизатор отклика С текущими настройками переменных контроллера заметьте, что ни одно из переходной характеристики требований не удовлетворено.

Задайте конструктивные переменные

В списке Проекта Переменных Set выберите New. Диалоговое окно показывает настраиваемые переменные. The Slew переменная указана как sdoRateLimitedController:Slew, что указывает на то, что переменная установлена на уровне sdoRateLimitedController модель. Двоеточие является разделителем между моделью и переменной. The Slew переменная имеет то же значение для всех образцов моделей контроллеров. Напротив, производный коэффициент усиления для первого контроллера указан как sdoMultipleMotors/Control_1:Kd, что указывает на то, что переменная установлена на уровне sdoMultipleMotors модель, где она появляется в Control_1 блок. Прямая косая черта является разделителем для блокпутей Simulink.

Выберите общую Slew переменная, а также Kd, Ki, и Kp параметры для каждой модели. Добавьте эти переменные в набор конструктивных переменных. Задайте минимальное значение для Slew переменная как 0.

Нажмите OK. Новая переменная, DesignVars, появляется в браузере Response Optimizer. Создайте график конструктивных переменных, чтобы увидеть, как они развиваются во время оптимизации. В группе «Данные для построения графика» выберите DesignVars. Щелкните Добавить график (Add Plot) и добавьте график итерации. Вы можете использовать вкладку Вид (View), чтобы расположить графики так, чтобы они все были видны.

Оптимизируйте проект

Чтобы оптимизировать проект, нажмите кнопку «Оптимизировать». Графики обновляются во время оптимизации. Когда оптимизация завершена, обратите внимание, что все требования проекта удовлетворены. Эти переходные характеристики находятся в пределах предписанных границ, как и производные выходного сигнала контроллера.

Закройте модели.

bdclose('sdoMultipleMotors')
bdclose('sdoRateLimitedController')

Похожие темы