Алгоритм настройки ПИДа для линейной модели объекта управления
C = pidtune(sys,type)
C = pidtune(sys,C0)
C = pidtune(sys,type,wc)
C =
pidtune(sys,C0,wc)
C = pidtune(sys,...,opts)
[C,info]
= pidtune(...)
проектирует ПИД-регулятор типа C
= pidtune(sys
,type
)type
для объекта sys
. Если type
задает одну степень свободы (1-DOF) ПИД-регулятор, затем контроллер спроектирован для модульной обратной связи, как проиллюстрировано:
Если type
задает две степени свободы (2-DOF) ПИД-регулятор, затем pidtune
проектирует контроллер 2-DOF как в обратной связи этого рисунка:
pidtune
настраивает параметры ПИД-регулятора C
сбалансировать производительность (время отклика) и робастность (запасы устойчивости).
проектирует контроллер того же типа и формы как контроллер C
= pidtune(sys
,C0
)C0
. Если sys
и C0
модели дискретного времени, C
имеет те же дискретные формулы интегратора как C0
.
и C
= pidtune(sys
,type
,wc
)
задайте целевое значение C
=
pidtune(sys
,C0
,wc
)wc
для первых 0 частот среза усиления дБ ответа разомкнутого цикла.
использует дополнительные настраивающие опции, такие как целевой запас по фазе. Используйте C
= pidtune(sys
,...,opts
)pidtuneOptions
чтобы задать опцию устанавливает opts
.
[
возвращает структуру данных C
,info
]
= pidtune(...)info
, который содержит информацию об устойчивости с обратной связью, выбранной частоте среза коэффициента усиления разомкнутого контура и фактическом запасе по фазе.
|
Одно вход, модель динамической системы одно выхода объекта для проектирования контроллера.
Если объект имеет нестабильные полюса и
необходимо использовать |
|
Тип контроллера контроллера, чтобы спроектировать в виде вектора символов. Термин controller type относится, к которому условия присутствуют в действии контроллера. Например, ПИ-контроллер имеет только пропорциональное и интегральный термин, в то время как контроллер PIDF содержит пропорциональный, интегратор, и отфильтровал производные условия. Контроллеры 1-DOF
Контроллеры 2-DOF
Для получения дополнительной информации о ПИД-регуляторах 2-DOF обычно, смотрите ПИД-регуляторы с двумя степенями свободы. Контроллеры 2-DOF с фиксированными весами заданного значения
Для более подробной информации о фиксированном весе заданного значения ПИД-регуляторы 2-DOF смотрите Типы ПИД-регулятора для Настройки. Форма контроллераКогда вы используете Если Для получения дополнительной информации о формах ПИД-регулятора и формулах, см.:
|
|
Свойства установки ПИД-регулятора спроектированного контроллера в виде
|
|
Целевое значение для 0 частот среза усиления дБ настроенного ответа разомкнутого цикла. Задайте Увеличьте |
|
Набор опции, задающий дополнительные настраивающие опции для |
|
Контроллер спроектирован для Форма контроллера: Тип контроллера:
В любом случае, однако, где алгоритм может достигнуть соответствующей производительности и робастности с помощью контроллера более низкоуровневого, чем заданный с Временной интервал:
Если вы задаете |
|
Структура данных, содержащая информацию о производительности и робастности настроенного цикла ПИДа. Поля
Если |
В этом примере показано, как спроектировать ПИД-регулятор для объекта, данного:
Как первая передача, создайте модель объекта и спроектируйте простой ПИ-контроллер для него.
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
объект контроллера, который представляет ПИ-контроллер. Поля 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')
Это сокращение производительности заканчивается, потому что ПИ-контроллер не имеет достаточных степеней свободы, чтобы достигнуть хорошего запаса по фазе в частоте среза 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 также обеспечивает более быстрое подавление помех.
Спроектируйте ПИД-регулятор в стандартной форме для объекта, заданного
Чтобы спроектировать контроллер в стандартной форме, используйте контроллер стандартной формы в качестве C0
аргумент к pidtune
.
sys = zpk([],[-1 -1 -1],1); C0 = pidstd(1,1,1); C = pidtune(sys,C0)
C = 1 1 Kp * (1 + ---- * --- + Td * s) Ti s with Kp = 2.18, Ti = 2.36, Td = 0.591 Continuous-time PID controller in standard form
Спроектируйте ПИ-контроллер дискретного времени с помощью заданного метода, чтобы дискретизировать интегратор.
Если ваш объект находится в дискретное время, pidtune
автоматически возвращает контроллер дискретного времени, использующий значение по умолчанию метод интегрирования Форварда Эйлера. Чтобы задать различный метод интегрирования, используйте pid
или pidstd
создать контроллер дискретного времени, имеющий желаемый метод интегрирования.
sys = c2d(tf([1 1],[1 5 6]),0.1); C0 = pid(1,1,'Ts',0.1,'IFormula','BackwardEuler'); C = pidtune(sys,C0)
C = Ts*z Kp + Ki * ------ z-1 with Kp = -0.518, Ki = 10.4, Ts = 0.1 Sample time: 0.1 seconds Discrete-time PI controller in parallel form.
Используя C0
когда вход вызывает pidtune
спроектировать контроллер C
из той же формы введите, и метод дискретизации как C0
. Отображение показывает что интегральный термин C
использует Обратный Эйлеров метод интегрирования.
Задайте Трапециевидный интегратор и сравните получившийся контроллер.
C0_tr = pid(1,1,'Ts',0.1,'IFormula','Trapezoidal'); Ctr = pidtune(sys,C_tr)
Ctr = Ts*(z+1) Ki * -------- 2*(z-1) with Ki = 10.4, Ts = 0.1 Sample time: 0.1 seconds Discrete-time I-only controller.
Спроектируйте ПИД-регулятор 2-DOF для объекта, данного передаточной функцией:
Используйте целевую пропускную способность 1,5 рад/с.
wc = 1.5;
G = tf(1,[1 0.5 0.1]);
C2 = pidtune(G,'PID2',wc)
C2 = 1 u = Kp (b*r-y) + Ki --- (r-y) + Kd*s (c*r-y) s with Kp = 1.26, Ki = 0.255, Kd = 1.38, b = 0.665, c = 0 Continuous-time 2-DOF PID controller in parallel form.
Используя тип 'PID2'
причины pidtune
сгенерировать контроллер 2-DOF, представленный как pid2
объект. Отображение подтверждает этот результат. Отображение также показывает тот pidtune
мелодии все коэффициенты контроллера, включая веса заданного значения b
и c
, сбалансировать производительность и робастность.
По умолчанию, pidtune
с type
введите возвращает pid
контроллер в параллельной форме. Чтобы спроектировать контроллер в стандартной форме, используйте pidstd
контроллер как входной параметр C0
. Для получения дополнительной информации о параллельных и стандартных формах контроллера, смотрите pid
и pidstd
страницы с описанием.
Для интерактивного ПИДа, настраивающего Live Editor, смотрите Live Editor ПИД-регулятора Мелодии задача. Эта задача позволяет вам в интерактивном режиме спроектировать ПИД-регулятор и автоматически генерирует код MATLAB® для вашего live скрипта.
Для получения информации об алгоритме настройки ПИДа MathWorks® смотрите Алгоритм настройки ПИДа.
Для интерактивного ПИДа, настраивающего Live Editor, смотрите Live Editor ПИД-регулятора Мелодии задача. Эта задача позволяет вам в интерактивном режиме спроектировать ПИД-регулятор и автоматически генерирует код MATLAB для вашего live скрипта. Для примера см. Проект ПИД-регулятора в Live Editor
Для интерактивного ПИДа, настраивающего автономное приложение, используйте PID Tuner. См. Проект ПИД-регулятора для Быстрого Отслеживания уставки для примера разработки контроллера, использующего приложение.
Åström, K. J. и Hägglund, T. Усовершенствованное управление ПИДом, Ресерч-Трайэнгел-Парк, NC: инструментирование, системы и общество автоматизации, 2006.