Этот пример показывает, как разработать ПИД-регулятор для объекта, данного:
Как первая передача, создайте модель объекта и разработайте простой контроллер PI для него.
sys = zpk([],[-1 -1 -1],1);
[C_pi,info] = pidtune(sys,'PI')
C_pi = 1 Kp + Ki * --- s with Kp = 1.14, Ki = 0.454 Continuous-time PI controller in parallel form.
info = struct with fields:
Stable: 1
CrossoverFrequency: 0.5205
PhaseMargin: 60.0000
C_pi
является контроллером pid
объект, который представляет контроллер PI. Поля info
показывают, что настраивающийся алгоритм выбирает частоту перекрестного соединения разомкнутого цикла приблизительно 0,52 рад/с.
Исследуйте переходной процесс с обратной связью (отслеживание уставки) управляемой системы.
T_pi = feedback(C_pi*sys, 1); step(T_pi)
Чтобы улучшить время отклика, можно установить более высокую целевую перекрестную частоту, чем результат, который pidtune
автоматически выбирает, 0.52. Увеличьте перекрестную частоту до 1,0.
[C_pi_fast,info] = pidtune(sys,'PI',1.0)
C_pi_fast = 1 Kp + Ki * --- s with Kp = 2.83, Ki = 0.0495 Continuous-time PI controller in parallel form.
info = struct with fields:
Stable: 1
CrossoverFrequency: 1
PhaseMargin: 43.9973
Новый контроллер достигает более высокой перекрестной частоты, но за счет сокращенной прибыли фазы.
Сравните переходной процесс с обратной связью с этими двумя контроллерами.
T_pi_fast = feedback(C_pi_fast*sys,1); step(T_pi,T_pi_fast) axis([0 30 0 1.4]) legend('PI','PI,fast')
Это сокращение производительности заканчивается, потому что у контроллера PI нет достаточных степеней свободы, чтобы достигнуть хорошего поля фазы на перекрестной частоте 1,0 рад/с. Добавление производного действия улучшает ответ.
Разработайте контроллер PIDF для Gc
с целевой перекрестной частотой 1,0 рад/с.
[C_pidf_fast,info] = pidtune(sys,'PIDF',1.0)
C_pidf_fast = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = 2.72, Ki = 0.985, Kd = 1.72, Tf = 0.00875 Continuous-time PIDF controller in parallel form.
info = struct with fields:
Stable: 1
CrossoverFrequency: 1
PhaseMargin: 60.0000
Поля информации показывают, что производное действие в контроллере позволяет настраивающемуся алгоритму разрабатывать более агрессивный контроллер, который достигает целевой перекрестной частоты с хорошим полем фазы.
Сравните переходной процесс с обратной связью и подавление помех для быстрого PI и контроллеров PIDF.
T_pidf_fast = feedback(C_pidf_fast*sys,1); step(T_pi_fast, T_pidf_fast); axis([0 30 0 1.4]); legend('PI,fast','PIDF,fast');
Можно сравнить вход (загрузка) подавление помех управляемой системы с быстрым PI и контроллерами PIDF. Для этого постройте ответ передаточной функции с обратной связью от входа объекта до объекта вывод.
S_pi_fast = feedback(sys,C_pi_fast); S_pidf_fast = feedback(sys,C_pidf_fast); step(S_pi_fast,S_pidf_fast); axis([0 50 0 0.4]); legend('PI,fast','PIDF,fast');
Этот график показывает, что контроллер PIDF также обеспечивает более быстрое подавление помех.