В этом примере показано, как спроектировать ПИ-контроллер с помощью частотной характеристики, оцененной из модели Simulink. Это - альтернативный рабочий процесс проекта ПИДа, когда линеаризовавшая модель объекта управления недопустима для проекта ПИДа (например, когда модель объекта управления имеет нулевое усиление).
Откройте модель управления двигателем и займите некоторое время, чтобы исследовать ее.
mdl = 'scdenginectrlpidblock';
open_system(mdl)
Цикл ПИДа включает ПИ-контроллер в параллельную форму, которая управляет углом дросселя, чтобы управлять скоростью вращения двигателя. ПИ-контроллер имеет усиления по умолчанию, который заставляет систему замкнутого цикла колебаться. Мы хотим спроектировать контроллер, использующий PID Tuner, который запускается от диалогового окна блока PID.
open_system([mdl '/Engine Speed (rpm)'])
sim(mdl)
Закройте осциллограф.
close_system([mdl '/Engine Speed (rpm)'])
В этом примере объект, замеченный блоком PID, от угла дросселя до скорости вращения двигателя. Точки ввода и вывода линеаризации уже заданы в блоке PID выход и измерение скорости вращения двигателя соответственно. Линеаризация в начальной рабочей точке дает модель объекта управления с нулевым усилением.
Чтобы проверить нулевую линеаризацию, сначала получите точки ввода и вывода линеаризации из модели.
io = getlinio(mdl);
Затем линеаризуйте объект в его начальной рабочей точке.
linsys = linearize(mdl,io)
linsys = D = Throttle Ang EngineSpeed 0 Static gain.
Причина получения нулевого усиления состоит в том, что существует триггируемая подсистема (Сжатие) в пути к линеаризации, и аналитическая линеаризация блока блоком не поддерживает основанные на событии подсистемы. Поскольку PID Tuner использует тот же подход, чтобы получить линейную модель объекта управления, PID Tuner также получает модель объекта управления с нулевым усилением и отклоняет его во время процесса запуска.
Чтобы запустить PID Tuner, откройте диалоговое окно блока PID и нажмите Tune. Информационное диалоговое окно открывает и указывает, что модель объекта управления, линеаризовавшая в начальной рабочей точке, имеет нулевое усиление и не может использоваться, чтобы спроектировать ПИД-регулятор.
Альтернативный способ получить линейную модель объекта управления состоит в том, чтобы непосредственно оценить данные о частотной характеристике из модели Simulink, создать frd
система в рабочем пространстве MATLAB и импорт это назад к PID Tuner, чтобы продолжить проект ПИДа.
sinestream входной сигнал является самым надежным входным сигналом для оценки точной частотной характеристики модели Simulink с помощью frestimate
функция. Для получения дополнительной информации о том, как использовать frestimate
, смотрите, что Оценка Частотной характеристики Использует Основанные на симуляции Методы (Simulink Control Design).
В этом примере создайте поток синуса, который развертывает частоту от 0,1 до 10 рад/секунда с амплитудой 1e-3. Можно смотреть результаты оценки с помощью диаграммы Боде.
Создайте сигнал sinestream.
in = frest.Sinestream('Frequency',logspace(-1,1,50),'Amplitude',1e-3);
Оцените частотную характеристику. Этот процесс может занять несколько минут.
sys = frestimate(mdl,io,in);
Отобразите предполагаемую частотную характеристику.
bode(sys)
sys
frd
система, которая представляет частотную характеристику объекта в начальной рабочей точке. Чтобы использовать его в PID Tuner, мы должны импортировать его после того, как PID Tuner будет запущен. Нажмите Plant и выберите Import. Частота дискретизации импортированного frd
объект должен совпадать с частотой дискретизации блока PID Controller.
Нажмите систему Importing an LTI, и в списке, выберите sys. Затем нажмите "OK", чтобы импортировать frd
система в PID Tuner. Автоматизированное проектирование возвращает стабилизировавшийся контроллер. Нажмите Add Plot и выберите Open-Loop Bode plot. График показывает разумный запас по амплитуде и фазе. Нажмите Show Parameters, чтобы видеть значения запаса по амплитуде и фазе. Графики отклика области времени не доступны для frd
модели объекта управления.
Чтобы обновить блок P PID и я получаю, нажмите Update Block.
Симуляция в Simulink показывает, что новый ПИ-контроллер обеспечивает хорошую эффективность при управлении нелинейной моделью.
Закройте модель.
bdclose(mdl)
linearize
(Simulink Control Design) | frestimate
(Simulink Control Design)