В этом примере показано, как к настройкам параметров в моделях, на которые ссылаются, с помощью инструмента Response Optimization.
Модель показывает управление углового положения для двух двигателей. Откройте Модель Simulink.
open_system('sdoMultipleMotors')
Модели - ссылки используются в этих двух контроллерах, которые являются экземплярами той же модели. Откройте контроллер.
open_system('sdoRateLimitedController')
У каждого контроллера есть коэффициенты ПИД Kp
, Ki
, и Kd
, и скорость нарастания, Slew
. Slew
значение ограничивает уровень, на котором изменяется управляющий сигнал, так, чтобы токи, чертившие от источника питания, остались в пределах источника питания. Slew
значение характерно для обоих экземпляров контроллера. В отличие от этого коэффициенты ПИД должны отличаться для каждого экземпляра контроллера, поскольку двигатели, которыми управляют, имеют различные характеристики. Поэтому коэффициенты ПИД заданы в качестве аргументов модели в рабочем пространстве модели диспетчера. Значения коэффициента ПИД установлены на уровне sdoMultipleMotors
модель.
Сигнал ссылки управления является ступенчатым изменением в положении, которое происходит в 1 секунду. Угловое положение каждого двигателя должно следовать за ссылочным сигналом, но первый двигатель имеет меньший момент инерции и может более быстро ответить на изменения в ссылочном сигнале. Мы хотим, чтобы угловое положение первого двигателя удовлетворило следующим требованиям:
Время нарастания: 2 секунды
Время урегулирования: 7 секунд
Второй двигатель имеет больший момент инерции, таким образом, это не может ответить как быстро. Мы хотим, чтобы угловое положение второго двигателя удовлетворило следующим требованиям:
Время нарастания: 8 секунд
Время урегулирования: 10 секунд
Кроме того, производная каждого сигнала контроллера требуется, чтобы быть в диапазоне от-5 до 5, так, чтобы токи, чертившие от источника питания, остались в пределах источника питания.
Все эти требования заданы с помощью блоков в модели Simulink.
В меню анализа модели Simulink выберите Response Optimization. Нажмите Evaluate Requirements. С текущими настройками переменных контроллера не соблюдите то никакое требование переходного процесса, удовлетворен.
В Сетлисте Переменных Проекта выберите 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')