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

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

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

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

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

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

  • A frd модель

  • A 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-DOF ПИД с b = 0, c = 0

  • 'I-PDF' - 2-DOF PIDF с b = 0, c = 0

  • 'ID-P' - 2-DOF ПИД с b = 0, c = 1

  • 'IDF-P' - 2-DOF PIDF с b = 0, c = 1

  • 'PI-D' - 2-DOF ПИД с b = 1, c = 0

  • 'PI-DF' - 2-DOF PIDF с b = 1, c = 0

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

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

Когда вы используете 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 контроллер.

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

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

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

wc

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

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

opts

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

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

C

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

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

  • Если второй аргумент для pidtune является type, C является pid или pid2 контроллер.

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы задаете C0, C также получает такие свойства модели, как 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)

Figure contains an axes. The axes contains an object of type line. This object represents 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')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent 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');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent 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');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent 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 автоматически возвращает контроллер в дискретном времени с использованием метода интегрирования 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 ПИД-регулятор

Проектируйте 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 вход возвращает 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.

Введенный в R2010b