Этот пример показывает как настройкам параметров в моделях, на которые ссылаются, с помощью инструмента 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')