pidtune

Алгоритм настройки ПИДа для линейной модели объекта управления

Синтаксис

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, который содержит информацию об устойчивости с обратной связью, выбранной частоте среза коэффициента усиления разомкнутого контура и фактическом запасе по фазе.

Входные параметры

sys

Одно вход, модель динамической системы одно выхода объекта для проектирования контроллера. sys может быть:

  • Любой тип модели динамической системы SISO, включая модели Numeric LTI и идентифицированные модели. Если sys настраиваемая или неопределенная модель, pidtune проектирует контроллер для текущего значения или номинальной стоимости sys.

  • Непрерывное - или модель дискретного времени.

  • Устойчивый, нестабильный, или интеграция. Объект с нестабильными полюсами, однако, не может быть stabilizable под управлением ПИДом.

  • Модель, которая включает любой тип задержки. Объект с долговременными задержками, однако, не может достигнуть соответствующей производительности под управлением ПИДом.

  • Массив моделей объекта управления. Если sys массив, pidtune проектирует отдельный контроллер для каждого объекта в массиве.

Если объект имеет нестабильные полюса и sys одно из следующего:

  • frd модель

  • ss модель с внутренними задержками, которые не могут быть преобразованы в задержки ввода-вывода

необходимо использовать pidtuneOptions задавать количество нестабильных полюсов на объекте, если таковые имеются.

type

Тип контроллера контроллера, чтобы спроектировать, заданный как вектор символов. Термин controller type относится, к которому условия присутствуют в действии контроллера. Например, ПИ-контроллер имеет только пропорциональное и интегральный термин, в то время как контроллер PIDF содержит пропорциональный, интегратор, и отфильтровал производные условия. type может принять значения, полученные в итоге ниже. Для более подробной информации об этих типах контроллера смотрите Типы ПИД-регулятора для Настройки

Контроллеры 1-DOF

  • 'P' — Пропорциональный только

  • 'I' — Интеграл только

  • 'PI' — Пропорциональный и интеграл

  • 'PD' — Пропорциональный и производный

  • 'PDF' — Пропорциональный и производный с фильтром первого порядка на производном термине

  • 'PID' — Пропорциональный, интеграл и производная

  • 'PIDF' — Пропорциональный, интеграл и производная с фильтром первого порядка на производном термине

Контроллеры 2-DOF

  • 'PI2' — Пропорциональный 2-DOF и интеграл

  • 'PD2' — 2-DOF, пропорциональный и производный

  • 'PDF2' — 2-DOF, пропорциональный и производный с фильтром первого порядка на производном термине

  • 'PID2' — Пропорциональный 2-DOF, интеграл и производная

  • 'PIDF2' — Пропорциональный 2-DOF, интеграл и производная с фильтром первого порядка на производном термине

Для получения дополнительной информации о ПИД-регуляторах 2-DOF обычно, смотрите ПИД-регуляторы с двумя степенями свободы.

Контроллеры 2-DOF с фиксированными весами заданного значения

  • 'I-PD' — ПИД с 2 степенями свободы с b = 0, c = 0

  • 'I-PDF' — С 2 степенями свободы PIDF с b = 0, c = 0

  • 'ID-P' — ПИД с 2 степенями свободы с b = 0, c = 1

  • 'IDF-P' — С 2 степенями свободы PIDF с b = 0, c = 1

  • 'PI-D' — ПИД с 2 степенями свободы с b = 1, c = 0

  • 'PI-DF' — С 2 степенями свободы PIDF с b = 1, c = 0

Для более подробной информации о фиксированном весе заданного значения ПИД-регуляторы 2-DOF смотрите Типы ПИД-регулятора для Настройки.

Форма контроллера

Когда вы используете type введите, pidtune проектирует контроллер параллельно (pid или pid2) форма. Используйте вход C0 вместо type если вы хотите спроектировать контроллер в стандарте (pidstd или pidstd2) форма.

Если sys модель дискретного времени с шагом расчета Ts, pidtune проектирует контроллер дискретного времени с тем же Ts. У контроллера есть ForwardEuler дискретная формула интегратора и для интегральных и для производных действий. Используйте вход C0 вместо type если вы хотите спроектировать контроллер, имеющий различную дискретную формулу интегратора.

Для получения дополнительной информации о формах ПИД-регулятора и формулах, см.:

C0

Свойства установки ПИД-регулятора спроектированного контроллера, заданного как pid, pidstd, pid2, или pidstd2 объект. Если вы обеспечиваете C0, pidtune:

  • Проектирует контроллер типа, представленного C0.

  • Возвращает pid контроллер, если C0 pid контроллер.

  • Возвращает pidstd контроллер, если C0 pidstd контроллер.

  • Возвращает pid2 2-DOF контроллер, если C0 pid2 контроллер.

  • Возвращает pidstd2 2-DOF контроллер, если C0 pidstd2 контроллер.

  • Возвращает контроллер с тем же Iformula и Dformula значения как C0, если sys система дискретного времени. Смотрите pid, pid2, pidstd, и pidstd2 страницы с описанием для получения дополнительной информации о Iformula и Dformula.

wc

Целевое значение для 0 частот среза усиления дБ настроенного ответа разомкнутого цикла. Задайте wc в модулях radians/TimeUnit, где TimeUnit единица измерения времени sys. Частота среза wc примерно устанавливает пропускную способность управления. Временем отклика с обратной связью является приблизительно 1/wc.

Увеличьте wc ускорять ответ. Уменьшите wc улучшить устойчивость. Когда вы не используете wc, pidtune автоматически выбирает значение, на основе динамики объекта, которая достигает баланса между ответом и устойчивостью.

opts

Набор опции, задающий дополнительные настраивающие опции для pidtune спроектируйте алгоритм, такой как целевой запас по фазе или спроектируйте особое внимание. Используйте pidtuneOptions создать opts.

Выходные аргументы

C

Контроллер спроектирован для sys. Если sys массив линейных моделей, pidtune проектирует контроллер для каждой линейной модели и возвращает массив ПИД-регуляторов.

Форма контроллера:

  • Если второй аргумент к pidtune typeC pid или pid2 контроллер.

  • Если второй аргумент к pidtune C0:

    • C pid контроллер, если C0 pid объект.

    • C pidstd контроллер, если C0 pidstd объект.

    • C pid2 контроллер, если C0 pid2 объект.

    • C pidstd2 контроллер, если C0 pidstd2 объект.

Тип контроллера:

  • Если второй аргумент к pidtune typeC обычно имеет заданный тип.

  • Если второй аргумент к pidtune C0C обычно имеет тот же тип как C0.

В любом случае, однако, где алгоритм может достигнуть соответствующей производительности и робастности с помощью контроллера более низкоуровневого, чем заданный с type или C0, pidtune возвращает C наличие меньшего количества действий, чем заданный. Например, C может быть ПИ-контроллер даже при том, что type 'PIDF'.

Временной интервал:

  • C имеет тот же временной интервал как sys.

  • Если sys модель дискретного времени, C имеет тот же шаг расчета как sys.

  • Если вы задаете C0C имеет тот же Iformula и Dformula как C0. Если никакой C0 задан, оба Iformula и Dformula Forward Euler. Смотрите pid, pid2, pidstd, и pidstd2 страницы с описанием для получения дополнительной информации о Iformula и Dformula.

Если вы задаете C0C также получает свойства модели, такие как InputName и OutputName от C0. Для получения дополнительной информации о свойствах модели, смотрите страницы с описанием для каждого типа модели динамической системы.

info

Структура данных, содержащая информацию о производительности и робастности настроенного цикла ПИДа. Поля info :

  • Stable — Булево значение, указывающее на устойчивость с обратной связью. Stable 1, если замкнутый цикл устойчив, и 0 в противном случае.

  • CrossoverFrequency — Первая частота среза на 0 дБ системы разомкнутого цикла C*sys, в rad/TimeUnit, где TimeUnit единицы измерения времени, заданные в TimeUnit свойство sys.

  • PhaseMargin — Запас по фазе настроенного цикла ПИДа, в градусах.

Если sys массив моделей объекта управления, info массив структур данных, содержащих информацию о каждом настроенном цикле ПИДа.

Примеры

Проект ПИД-регулятора в командной строке

В этом примере показано, как спроектировать ПИД-регулятор для объекта, данного:

sys=1(s+1)3.

Как первая передача, создайте модель объекта и спроектируйте простой ПИ-контроллер для него.

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 также обеспечивает более быстрое подавление помех.

ПИД-регулятор формы стандарта проектирования

Спроектируйте ПИД-регулятор в стандартной форме для объекта, заданного

sys=1(s+1)3.

Чтобы спроектировать контроллер в стандартной форме, используйте контроллер стандартной формы в качестве 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

Спроектируйте ПИД-регулятор 2-DOF для объекта, данного передаточной функцией:

G(s)=1s2+0.5s+0.1.

Используйте целевую пропускную способность 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® смотрите Алгоритм настройки ПИДа.

Альтернативы

Ссылки

Åström, K. J. и Hägglund, T. Усовершенствованное управление ПИДом, Ресерч-Трайэнгел-Парк, NC: инструментирование, системы и общество автоматизации, 2006.

Представленный в R2010b