Алгоритм настройки ПИДа для линейной модели объекта управления
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 ПИД-регуляторах с фиксированной уставкой смотрите ПИД-регулятор Types for Tuning. Форма контроллераКогда вы используете Если Для получения дополнительной информации о ПИД-регуляторе формах и формулах смотрите:
|
|
Свойства настройки ПИД-регулятора проектируемого контроллера, заданные как
|
|
Целевое значение для частоты среза коэффициента усиления 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
автоматически возвращает контроллер в дискретном времени с использованием метода интегрирования Forward Euler по умолчанию. Чтобы задать другой метод интегрирования, используйте 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
вход возвращает a pid
контроллер в параллельной форме. Чтобы спроектировать контроллер в стандартной форме, используйте pidstd
контроллер как входной параметр C0
. Для получения дополнительной информации о параллельных и стандартных формах контроллеров смотрите pid
и pidstd
страницы с описанием.
Интерактивную настройку ПИД в Live Editor см. в задаче Tune ПИД-регулятора Live Editor. Эта задача позволяет вам в интерактивном режиме проектировать ПИД-регулятор и автоматически генерирует MATLAB® код для вашего live скрипта.
Для получения информации о MathWorks® Алгоритм настройки ПИДа, см. Алгоритм настройки ПИДа.
Интерактивную настройку ПИД в Live Editor см. в задаче Tune ПИД-регулятора Live Editor. Эта задача позволяет вам в интерактивном режиме проектировать ПИД-регулятор и автоматически генерирует код MATLAB для вашего live скрипта. Для получения примера смотрите ПИД-регулятор Проекта в Live Editor
Для интерактивной настройки ПИД в автономном приложении используйте PID Tuner. Смотрите ПИД-регулятор Design для Fast Reference Tracking для примера разработки контроллера с помощью приложения.
Oström, K. J. and Hägglund, T. Advanced PID Control, Research Triangle Park, NC: Инструментирование, Systems, and Automation Society, 2006.