exponenta event banner

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

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

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

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

open_system('sdoMultipleMotors')

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

open_system('sdoRateLimitedController')

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

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

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

  • Время подъема: 2 секунды

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

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

  • Время подъема: 8 секунд

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

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

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

Открыть оптимизатор ответов

В модели Simulink на вкладке Apps (Приложения) щелкните Response Optimizer (Оптимизатор ответа) в разделе Control Systems (Системы управления), чтобы запустить приложение Response Optimizer app. При текущих настройках переменных контроллера убедитесь, что ни одно из требований к ответу на шаг не удовлетворено.

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

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

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

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

Оптимизация конструкции

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

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

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

Связанные темы