Спроектируйте настраивающие параметры оптимизации в моделях, на которые ссылаются (графический интерфейс пользователя)

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

Модель блока управления приводом

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

open_system('sdoMultipleMotors')

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

open_system('sdoRateLimitedController')

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

Проблема проектирования

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

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

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

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

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

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

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

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

Откройте Response Optimization Tool

В модели Simulink от вкладки Apps нажмите Response Optimizer под Системами управления, чтобы запустить инструмент Response Optimization. С текущими настройками переменных контроллера не соблюдите то никакое требование переходного процесса, удовлетворен.

Задайте переменные проекта

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

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

Нажать ОК. Новая переменная, DesignVars, появляется в Response Optimization Tool Workspace. Создайте график переменных проекта, чтобы видеть, как они развиваются во время оптимизации. Под Данными, чтобы Построить, выберите DesignVars. Нажмите Add Plot и добавьте график итерации. Можно использовать вкладку View, чтобы расположить графики, таким образом, они все видимы.

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

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

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

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

Похожие темы