Этот пример показывает, как использовать Simulink ® Design Optimization™ для отслеживания уставки и оптимизации отклика с неопределенностями в модели объекта управления. Модель объекта управления состоит из передаточной функции объекта управления и включает блок Насыщения и блок пределов. Для просмотра результатов выполните следующие шаги.
Откройте pidtrack_demo
моделировать с помощью команды ниже и запустить симуляцию. Эта симуляция создаёт неоптимизированную переходную характеристику и исходные данные для оптимизации.
open_system('pidtrack_demo')
Дважды кликните Scope
блок для просмотра неоптимизированной переходной характеристики.
Дважды кликните Step Response Specifications
блок для просмотра ограничений на реакцию объекта управления, включая время нарастания, время урегулирования и максимальное перерегулирование.
Дважды кликните Reference Tracking Specifications
блок для просмотра опорного сигнала, которую контроллер должен отслеживать.
Можно запустить Response Optimizer с помощью меню Приложения на панели инструментов Simulink или sdotool
команда в MATLAB. Можно запустить предварительно сконфигурированную задачу оптимизации в Response Optimizer, сначала открывая модель и дважды кликнув по оранжевому блоку в нижней части модели. В Response Optimizer нажмите кнопку Plot Model Response, чтобы симулировать модель и показать, насколько хорошо исходная конструкция удовлетворяет требованиям проекта.
Сплошные линии на графиках указывают на реакцию объекта без учета неопределенностей, а штриховые линии указывают на неопределенные реакции.
Запускаем оптимизацию нажатием кнопки Optimize из Response Optimizer.
Параметрами настройки являются усиления ПИД-регулятора Kp
, Ki
, и Kd
. Параметры объекта a1
и a2
известны только в пределах 10% (неопределенность).
Оптимизация стремится минимизировать разрыв между фактической и идеальной характеристиками для номинальных значений (сплошные линии) и значений min/max (пунктирные линии) a1
и a2
.
Графики обновляются, чтобы указать, что требования проекта теперь удовлетворены.
% Close the model bdclose('pidtrack_demo')