exponenta event banner

pidtune

Алгоритм настройки PID для линейной модели установки

Синтаксис

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) конструирует PID-контроллер типа type для завода sys. Если type задает PID-контроллер с одной степенью свободы (1-DOF), затем контроллер предназначен для контура обратной связи блока, как показано:

Если type задает контроллер PID с двумя степенями свободы (2-DOF), затем pidtune конструирует контроллер 2-DOF, как в контуре обратной связи этой иллюстрации:

pidtune настраивает параметры PID-контроллера 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

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

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 контроллеров PID в целом см. в разделе Двухстепенные контроллеры PID.

2-DOF Контроллеры с фиксированными весами уставки

  • 'I-PD' - 2-DOF PID с b = 0, c = 0

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

  • 'ID-P' - 2-DOF PID с b = 0, c = 1

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

  • 'PI-D' - 2-DOF PID с b = 1, c = 0

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

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

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

При использовании 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 конструирует контроллер для каждой линейной модели и возвращает массив контроллеров PID.

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

  • Если второй аргумент для 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 может быть PI-контроллером, даже если 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

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

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

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

  • PhaseMargin - Запас фазы настроенного контура PID, в градусах.

Если sys - массив моделей растений, info - массив структур данных, содержащий информацию о каждом настроенном цикле PID.

Примеры

Проектирование контроллера МТС в командной строке

В этом примере показано, как спроектировать PID-контроллер для установки, указанный в:

sys = 1 (s + 1) 3.

В качестве первого прохода создайте модель установки и сконструируйте для нее простой 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)

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.

Это снижение производительности приводит к тому, что контроллер 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');

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

Укажите метод дискретизации интегратора

Разработка дискретно-временного PI-контроллера с использованием определенного метода для дискретизации интегратора.

Если установка находится в дискретном времени, 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 использует метод интеграции Backward Euler.

Укажите трапециевидный интегратор и сравните полученный контроллер.

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 PID-контроллер

Спроектируйте 2-DOF PID-контроллер для установки с помощью передаточной функции:

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 справочные страницы.

  • Для получения информации о интерактивной настройке PID в интерактивном редакторе см. задачу Настройка контроллера PID в интерактивном редакторе. Эта задача позволяет в интерактивном режиме проектировать контроллер PID и автоматически генерировать код MATLAB ® для сценария в реальном времени.

Алгоритмы

Сведения об алгоритме настройки PID MathWorks ® см. в разделе Алгоритм настройки PID.

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

Ссылки

Oström, K. J. и Hägglund, T. Advanced PID Control, Research Triangle Park, NC: Instrumentation, Systems, and Automation Society, 2006.

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