pid

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

Синтаксис

C = pid(Kp,Ki,Kd,Tf)
C = pid(Kp,Ki,Kd,Tf,Ts)
C = pid(sys)
C = pid(Kp)
C = pid(Kp,Ki)
C = pid(Kp,Ki,Kd)
C = pid(...,Name,Value)
C = pid

Описание

C = pid(Kp,Ki,Kd,Tf) создает ПИД-регулятор в непрерывном времени с пропорциональным, интегральным и производным коэффициентами усиления Kp, Ki, и Kd и производную первого порядка фильтрации временной константы Tf:

C=Kp+Kis+KdsTfs+1.

Это представление в parallel form. Если все Kp, Ki, Kd, и Tf являются реальными, тогда получившиеся C является pid объект контроллера. Если один или несколько из этих коэффициентов настраиваются (realp или genmat), затем C - настраиваемое обобщенное пространство состояний (genss) объект модели.

C = pid(Kp,Ki,Kd,Tf,Ts) создает ПИД-регулятор в дискретном времени с шагом расчета Ts. Контроллер:

C=Kp+KiIF(z)+KdTf+DF(z).

IF (z) и DF (z) являются discrete integrator formulas для интегратора и производного фильтра. По умолчанию,

IF(z)=DF(z)=Tsz1.

Чтобы выбрать различные дискретные формулы интегратора, используйте IFormula и DFormula свойства. (Для получения дополнительной информации см. свойства» IFormula и DFormula). Если DFormula = 'ForwardEuler' (значение по умолчанию) и Tf ≠ 0, затем Ts и Tf должен удовлетворять   Tf > Ts/2. Это требование обеспечивает стабильный производный полюс фильтра.

C = pid(sys) преобразует динамическую систему sys в параллельную форму pid объект контроллера.

C = pid(Kp) создает пропорциональный контроллер (P) в непрерывном времени с Ki = 0, Kd = 0, и Tf  = 0.

C = pid(Kp,Ki) создает пропорциональный и интегральный (PI) контроллер с Kd = 0 и Tf  = 0.

C = pid(Kp,Ki,Kd) создает пропорциональный, интегральный и производный (ПИД) контроллер с Tf  = 0.

C = pid(...,Name,Value) создает контроллер или преобразует динамическую систему в pid объект контроллера с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар.

C = pid создает P- контроллера с Kp = 1.

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

Kp

Пропорциональная составляющая.

Kp могут быть:

  • Действительное и конечное значение.

  • Массив вещественных и конечных значений.

  • Настраиваемый параметр (realp) или обобщенная матрица (genmat).

  • Настраиваемая поверхность для настройки по расписанию усиления, созданная с помощью tunableSurface.

Когда Kp = 0, контроллер не имеет пропорционального действия.

По умолчанию: 1

Ki

Интегральная составляющая.

Ki могут быть:

  • Действительное и конечное значение.

  • Массив вещественных и конечных значений.

  • Настраиваемый параметр (realp) или обобщенная матрица (genmat).

  • Настраиваемая поверхность для настройки по расписанию усиления, созданная с помощью tunableSurface.

Когда Ki = 0, контроллер не имеет интегрального действия.

По умолчанию: 0

Kd

Производный коэффициент усиления.

Kd могут быть:

  • Действительное и конечное значение.

  • Массив вещественных и конечных значений.

  • Настраиваемый параметр (realp) или обобщенная матрица (genmat).

  • Настраиваемая поверхность для настройки по расписанию усиления, созданная с помощью tunableSurface.

Когда Kd = 0, контроллер не имеет производного действия.

По умолчанию: 0

Tf

Временная константа производного фильтра первого порядка.

Tf могут быть:

  • Действительное, конечное и неотрицательное значение.

  • Массив вещественных, конечных и неотрицательных значений.

  • Настраиваемый параметр (realp) или обобщенная матрица (genmat).

  • Настраиваемая поверхность для настройки по расписанию усиления, созданная с помощью tunableSurface.

Когда Tf = 0, контроллер не имеет фильтра для производного действия.

По умолчанию: 0

Ts

Шаг расчета.

Чтобы создать дискретное время pid контроллер, обеспечьте положительное действительное значение (  Ts > 0). pid не поддерживает контроллер дискретного времени с неопределенным шагом расчета (  Ts = -1).

Ts должно быть скалярным значением. В массиве из pid контроллеры, каждый контроллер должен иметь одинаковые Ts.

По умолчанию: 0 (непрерывное время)

sys

Динамическая система SISO для преобразования в параллельную pid форма.

sys должен представлять допустимый ПИД-регулятор, которая может быть записана параллельно с Tf  ≥ 0.

sys может также быть массивом динамических систем SISO.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Использование Name,Value синтаксис для установки формул численного интегрирования IFormula и DFormula дискретного времени pid контроллер или задать другие свойства объектов, такие как InputName и OutputName. Для получения информации о доступных свойствах pid объекты контроллера, см. Свойства.

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

C

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

  • Если все усиления Kp, Ki, Kd, и Tf иметь числовые значения, тогда C является pid объект контроллера. Когда усиления являются числовыми массивами, C является массивом из pid объекты контроллера. Тип контроллера (P, I, PI, PD, PDF, PID, PIDF) зависит от значений коэффициентов усиления. Для примера, когда Kd = 0, но Kp и Ki ненулевые, C является ПИ-контроллер.

  • Если одно или несколько усилений является настраиваемым параметром (realp), обобщенная матрица (genmat), или настраиваемая поверхность усиления (tunableSurface), затем C - обобщенная модель пространства состояний (genss).

Свойства

Kp, Ki, Kd

Коэффициент усиления ПИД-регулятора.

The Kp, Ki, и Kd свойства сохраняют пропорциональное, интегральное и производное усиления, соответственно. Kp, Ki, и Kd являются действительными и конечными.

Tf

Производная фильтрует постоянную времени.

The Tf свойство сохраняет производную постоянную времени фильтра pid объект контроллера. Tf является вещественным, конечным и неотрицательным.

IFormula

Дискретный интегратор формулы IF (z) для интегратора дискретного времениpid C контроллера:

C=Kp+KiIF(z)+KdTf+DF(z).

IFormula может принимать следующие значения:

  • 'ForwardEuler'IF (<reservedrangesplaceholder0>) =Tsz1.

    Эта формула лучше всего подходит для небольшого шага расчета, где предел Найквиста велик по сравнению с пропускной способностью контроллера. Для большего шага расчета, ForwardEuler формула может привести к нестабильности, даже при дискретизации системы, которая стабильна в непрерывное время.

  • 'BackwardEuler'IF (<reservedrangesplaceholder0>) =Tszz1.

    Преимущество BackwardEuler формулой является то, что дискретизация стабильной системы непрерывного времени с использованием этой формулы всегда приводит к стабильному результату дискретного времени.

  • 'Trapezoidal'IF (<reservedrangesplaceholder0>) =Ts2z+1z1.

    Преимущество Trapezoidal формулой является то, что дискретизация стабильной системы непрерывного времени с использованием этой формулы всегда приводит к стабильному результату дискретного времени. Из всего доступного интегрирования формул Trapezoidal формула приводит к ближайшему соответствию между свойствами частотного диапазона дискретизированной системы и соответствующей системы непрерывного времени.

Когда C является контроллером в непрерывном времени, IFormula является ''.

По умолчанию: 'ForwardEuler'

DFormula

Дискретный интегратор формулы DF (z) для производного фильтра дискретного времениpid C контроллера:

C=Kp+KiIF(z)+KdTf+DF(z).

DFormula может принимать следующие значения:

  • 'ForwardEuler'DF (<reservedrangesplaceholder0>) =Tsz1.

    Эта формула лучше всего подходит для небольшого шага расчета, где предел Найквиста велик по сравнению с пропускной способностью контроллера. Для большего шага расчета, ForwardEuler формула может привести к нестабильности, даже при дискретизации системы, которая стабильна в непрерывное время.

  • 'BackwardEuler'DF (<reservedrangesplaceholder0>) =Tszz1.

    Преимущество BackwardEuler формулой является то, что дискретизация стабильной системы непрерывного времени с использованием этой формулы всегда приводит к стабильному результату дискретного времени.

  • 'Trapezoidal'DF (<reservedrangesplaceholder0>) =Ts2z+1z1.

    Преимущество Trapezoidal формулой является то, что дискретизация стабильной системы непрерывного времени с использованием этой формулы всегда приводит к стабильному результату дискретного времени. Из всего доступного интегрирования формул Trapezoidal формула приводит к ближайшему соответствию между свойствами частотного диапазона дискретизированной системы и соответствующей системы непрерывного времени.

    The Trapezoidal значение для DFormula не доступен для pid контроллер без производного фильтра (Tf = 0).

Когда C является контроллером в непрерывном времени, DFormula является ''.

По умолчанию: 'ForwardEuler'

InputDelay

Задержка на системном входе. InputDelay всегда 0 для a pid объект контроллера.

OutputDelay

Задержка на выходе системы. OutputDelay всегда 0 для a pid объект контроллера.

Ts

Шаг расчета. Для моделей в непрерывном времени, Ts = 0. Для моделей в дискретном времени, Ts - положительная скалярная величина, представляющая период дискретизации. Это значение выражается в модуле, заданной как TimeUnit свойство модели. Модели ПИД-регулятора не поддерживают неопределенные шаги расчета (Ts = -1).

Изменение этого свойства не дискретизирует и не переопределяет модель. Использовать c2d и d2c для преобразования между представлениями непрерывного и дискретного времени. Использовать d2d для изменения шага расчета системы дискретного времени.

По умолчанию: 0 (непрерывное время)

TimeUnit

Модули измерения для временной переменной, шага расчета Ts, и любые задержки в модели, заданные как одно из следующих значений:

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

Изменение этого свойства не влияет на другие свойства и, следовательно, изменяет общее поведение системы. Использовать chgTimeUnit для преобразования между модулями времени без изменения поведения системы.

По умолчанию: 'seconds'

InputName

Вход канала, заданное как вектор символов. Используйте это свойство, чтобы назвать входной канал моделей контроллеров. Например, присвойте имя error на вход моделей контроллеров C следующим образом.

C.InputName = 'error';

Можно использовать сокращённое обозначение u для ссылки на InputName свойство. Для примера, C.u эквивалентно C.InputName.

Входные имена каналов имеют несколько применений, включая:

  • Идентификация каналов на отображении модели и графиках

  • Определение точек соединения при соединении моделей

По умолчанию: Пустой символьный вектор, ''

InputUnit

Входные модули канала, заданные как вектор символов. Используйте это свойство для отслеживания модулей входного сигнала. Например, присвойте модули измерения концентрации mol/m^3 на вход моделей контроллеров C следующим образом.

C.InputUnit = 'mol/m^3';

InputUnit не влияет на поведение системы.

По умолчанию: Пустой символьный вектор, ''

InputGroup

Входные группы каналов. Это свойство не нужно для моделей ПИД-регулятора.

По умолчанию: struct без полей

OutputName

Выход канала, заданное как вектор символов. Используйте это свойство, чтобы назвать выходной канал моделей контроллеров. Например, присвойте имя control к выходу моделей контроллеров C следующим образом.

C.OutputName = 'control';

Можно использовать сокращённое обозначение y для ссылки на OutputName свойство. Для примера, C.y эквивалентно C.OutputName.

Входные имена каналов имеют несколько применений, включая:

  • Идентификация каналов на отображении модели и графиках

  • Определение точек соединения при соединении моделей

По умолчанию: Пустой символьный вектор, ''

OutputUnit

Выход модулей канала, заданный как вектор символов. Используйте это свойство для отслеживания модулей выходного сигнала. Например, присвойте модуль измерения Volts к выходу моделей контроллеров C следующим образом.

C.OutputUnit = 'Volts';

OutputUnit не влияет на поведение системы.

По умолчанию: Пустой символьный вектор, ''

OutputGroup

Выходы каналов. Это свойство не нужно для моделей ПИД-регулятора.

По умолчанию: struct без полей

Name

Имя системы, заданное как вектор символов. Для примера, 'system_1'.

По умолчанию: ''

Notes

Любой текст, который вы хотите связать с системой, сохраненный как строка или массив ячеек из векторов символов. Свойство сохраняет любой тип данных, которые вы предоставляете. Для образца, если sys1 и sys2 являются динамические системы моделями, можно задать их Notes свойства следующим образом:

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

По умолчанию: [0×1 string]

UserData

Любой тип данных, которые вы хотите связать с системой, заданный как любой MATLAB® тип данных.

По умолчанию: []

SamplingGrid

Сетка дискретизации для массивов моделей, заданная как структура данных.

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

Установите имена полей структуры данных в имена переменных выборки. Установите значения полей к выборочным значениям переменных, сопоставленным с каждой моделью в массиве. Все переменные выборки должны быть числовыми и скалярными, а все массивы выборочных значений должны совпадать с размерностями массива моделей.

Например, предположим, что вы создадите массив линейных моделей 11 на 1, sysarr, путем создания моментальных снимков линейной изменяющейся во времени системы в определенные моменты времени t = 0:10. Следующий код хранит временные выборки с помощью линейных моделей.

 sysarr.SamplingGrid = struct('time',0:10)

Точно так же предположим, что вы создадите массив моделей 6 на 9, M, путем независимой выборки двух переменных, zeta и w. Следующий код присоединяет (zeta,w) значения в M.

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

Когда вы отображаете Mкаждая запись в массиве включает соответствующие zeta и w значения.

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

Для массивов моделей, сгенерированных линеаризацией Simulink® моделируйте в нескольких значениях параметров или рабочих точках, программное обеспечение заполняет SamplingGrid автоматически со значениями переменных, соответствующими каждой записи в массиве. Например, команды Simulink Control Design™ linearize (Simulink Control Design) и slLinearizer (Simulink Control Design) заполните SamplingGrid таким образом.

По умолчанию: []

Примеры

свернуть все

Создайте контроллер непрерывного времени с пропорциональными и производными усилениями и фильтр на производном члене. Для этого установите интегральную составляющую равным нулю. Установите другие коэффициенты усиления и постоянную времени фильтра на желаемые значения.

Kp = 1;
Ki = 0;   % No integrator
Kd = 3;
Tf = 0.5;
C = pid(Kp,Ki,Kd,Tf)
C =
 
               s    
  Kp + Kd * --------
             Tf*s+1 

  with Kp = 1, Kd = 3, Tf = 0.5
 
Continuous-time PDF controller in parallel form.

Это отображение показывает тип контроллера, формулу и значения параметров и проверяет, что у контроллера нет термина интегратора.

Создайте ПИ-контроллер в дискретном времени с формулой трапеций дискретизации.

Чтобы создать ПИ-контроллер в дискретном времени, установите значение Ts и формулу дискретизации с использованием Name,Value синтаксис.

C1 = pid(5,2.4,'Ts',0.1,'IFormula','Trapezoidal')    % Ts = 0.1s
C1 =
 
            Ts*(z+1)
  Kp + Ki * --------
            2*(z-1) 

  with Kp = 5, Ki = 2.4, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PI controller in parallel form.

Также можно создать тот же контроллер дискретного времени путем подачи Ts в качестве пятого входного параметра после всех четырех параметров ПИД, Kp, Ki, Kd, и Tf. Так как вам нужен только ПИ-контроллер, задайте Kd и Tf в нуль.

C2 = pid(5,2.4,0,0,0.1,'IFormula','Trapezoidal')
C2 =
 
            Ts*(z+1)
  Kp + Ki * --------
            2*(z-1) 

  with Kp = 5, Ki = 2.4, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PI controller in parallel form.

Это отображение показывает, что C1 и C2 те же самые.

Когда вы создаете ПИД-регулятор, задайте свойства динамической системы InputName и OutputName. Это полезно, для примера, когда вы соединяете ПИД-регулятор с другими моделями динамической системы, используя connect команда.

C = pid(1,2,3,'InputName','e','OutputName','u')
C =
 
             1          
  Kp + Ki * --- + Kd * s
             s          

  with Kp = 1, Ki = 2, Kd = 3
 
Continuous-time PID controller in parallel form.

В отображение не показаны входы и выходные имена для ПИД-регулятора, но можно изучить значения свойств. Например, проверьте входное имя контроллера.

C.InputName
ans = 1x1 cell array
    {'e'}

Создайте сетку ПИ-контроллеров 2 на 3 с пропорциональной составляющей в диапазоне от 1 до 2 в строках массива и интегральной составляющей в диапазоне от 5 до 9 в столбцах.

Чтобы создать массив ПИД-регуляторов, начните с массивов, представляющих усиления.

Kp = [1 1 1;2 2 2];
Ki = [5:2:9;5:2:9];

Когда вы передаете эти массивы в pid команда возвращает массив.

pi_array = pid(Kp,Ki,'Ts',0.1,'IFormula','BackwardEuler');
size(pi_array)
2x3 array of PID controller.
Each PID has 1 output and 1 input.

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

C = pid(1,5,0.1)           % PID controller
C =
 
             1          
  Kp + Ki * --- + Kd * s
             s          

  with Kp = 1, Ki = 5, Kd = 0.1
 
Continuous-time PID controller in parallel form.
Cf = pid(1,5,0.1,0.5)      % PID controller with filter
Cf =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 1, Ki = 5, Kd = 0.1, Tf = 0.5
 
Continuous-time PIDF controller in parallel form.
pid_array = stack(2,C,Cf); % stack along 2nd array dimension

Эти команды возвращают массив контроллеров 1 на 2.

size(pid_array)
1x2 array of PID controller.
Each PID has 1 output and 1 input.

Все ПИД-регуляторы в массиве должны иметь одинаковые шаги расчета, дискретные формулы интегратора и динамической системы такие свойства, как InputName и OutputName.

Преобразуйте стандартную форму pidstd контроллер в параллельную форму.

Стандартный ПИД выражает действия контроллера с точки зрения общей пропорциональной составляющей Kp, интегральные и производные по времени константы Ti и Td, и делитель фильтра N. Можно преобразовать любой контроллер стандартной формы в параллельный с помощью pid команда. Для примера рассмотрите следующий контроллер стандартной формы.

Kp = 2;
Ti = 3;
Td = 4;
N = 50;
C_std = pidstd(Kp,Ti,Td,N)
C_std =
 
             1      1              s      
  Kp * (1 + ---- * --- + Td * ------------)
             Ti     s          (Td/N)*s+1 

  with Kp = 2, Ti = 3, Td = 4, N = 50
 
Continuous-time PIDF controller in standard form

Преобразуйте этот контроллер в параллельную форму с помощью pid.

C_par = pid(C_std)
C_par =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 2, Ki = 0.667, Kd = 8, Tf = 0.08
 
Continuous-time PIDF controller in parallel form.

Преобразуйте динамическую систему в непрерывном времени, которая представляет ПИД-регулятору в параллельную pid форма.

Следующая динамическая система с интегратором и двумя нулями эквивалентна ПИД-регулятору.

H(s)=3(s+1)(s+2)s.

Создайте zpk модель H. Затем используйте pid команда получения H с точки зрения коэффициентов ПИД Kp, Ki, и Kd.

H = zpk([-1,-2],0,3);
C = pid(H)
C =
 
             1          
  Kp + Ki * --- + Kd * s
             s          

  with Kp = 9, Ki = 6, Kd = 3
 
Continuous-time PID controller in parallel form.

Преобразуйте динамическую систему в дискретном времени, которая представляет ПИД-регулятору с производным фильтром в параллельную pid форма.

Создайте модель zpk в дискретном времени, которая представляет контроллер PIDF (два нуля и два полюса, включая полюс интегратора в z = 1).

sys = zpk([-0.5,-0.6],[1 -0.2],3,'Ts',0.1);

Когда вы преобразуете sys для формы PID результат зависит от того, какие дискретные формулы интегратора вы задаете для преобразования. Например, используйте значение по умолчанию ForwardEuler, для интегратора и производной.

Cfe = pid(sys)
Cfe =
 
              Ts               1     
  Kp + Ki * ------ + Kd * -----------
              z-1         Tf+Ts/(z-1)

  with Kp = 2.75, Ki = 60, Kd = 0.0208, Tf = 0.0833, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

Теперь преобразуйте используя Trapezoidal формула.

Ctrap = pid(sys,'IFormula','Trapezoidal','DFormula','Trapezoidal')
Ctrap =
 
            Ts*(z+1)                 1         
  Kp + Ki * -------- + Kd * -------------------
            2*(z-1)         Tf+Ts/2*(z+1)/(z-1)

  with Kp = -0.25, Ki = 60, Kd = 0.0208, Tf = 0.0333, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

На отображениях показано различие в результирующих значениях коэффициентов и функциональной форме.

Для этой конкретной динамической системы вы не можете записать sys в параллельном ПИД форме с использованием BackwardEuler формула для производного фильтра. Это приведет к Tf < 0, что не разрешено. В этом случае pid возвращает ошибку.

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

Создайте контроллер в непрерывном времени и дискретизируйте его с помощью нуля метода удержания порядка c2d команда.

Ccon = pid(1,2,3,4);  % continuous-time PIDF controller
Cdis1 = c2d(Ccon,0.1,'zoh')
Cdis1 =
 
              Ts               1     
  Kp + Ki * ------ + Kd * -----------
              z-1         Tf+Ts/(z-1)

  with Kp = 1, Ki = 2, Kd = 3.04, Tf = 4.05, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

Это отображение показывает, что c2d вычисляет новые коэффициенты ПИД для контроллера дискретного времени.

Дискретные формулы интегратора дискретизированного контроллера зависят от c2d метод дискретизации, как описано в «Советах». Для zoh метод, оба IFormula и DFormula являются ForwardEuler.

Cdis1.IFormula
ans = 
'ForwardEuler'
Cdis1.DFormula
ans = 
'ForwardEuler'

Если вы хотите использовать другие формулы от возвращенных c2d, тогда можно непосредственно задать Ts, IFormula, и DFormula свойства контроллера до требуемых значений.

Cdis2 = Ccon;
Cdis2.Ts = 0.1; 
Cdis2.IFormula = 'BackwardEuler';
Cdis2.DFormula = 'BackwardEuler';

Однако эти команды не вычисляют новые коэффициенты ПИД для дискретизированного контроллера. Чтобы увидеть это, исследуйте Cdis2 и сравните коэффициенты с Ccon и Cdis1.

Cdis2
Cdis2 =
 
             Ts*z               1      
  Kp + Ki * ------ + Kd * -------------
              z-1         Tf+Ts*z/(z-1)

  with Kp = 1, Ki = 2, Kd = 3, Tf = 4, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

Совет

  • Использовать pid кому:

    • Создайте pid объект контроллера из известных коэффициентов ПИД и временной константы фильтра.

    • Преобразуйте a pidstd объект контроллера в стандартную форму pid объект контроллера.

    • Преобразуйте другие типы моделей динамической системы в a pid объект контроллера.

  • Чтобы спроектировать ПИД-регулятор для определенного объекта, используйте pidtune или pidTuner. Чтобы создать настраиваемый ПИД-регулятор как блок проекта системы управления, используйте tunablePID.

  • Создание массивов pid объекты контроллера по:

    • Определение значений массивов для Kp, Ki, Kd, и Tf

    • Определение массива динамических систем sys для преобразования в pid объекты контроллера

    • Используя stack для создания массивов из отдельных контроллеров или небольших массивов

    В массиве из pid контроллеры, каждый контроллер должен иметь одинаковый шаг расчета Ts и дискретные формулы интегратора IFormula и DFormula.

  • Чтобы создать или преобразовать в контроллер стандартной формы, используйте pidstd. Стандартная форма выражает действия контроллера с точки зрения общей пропорциональной составляющей Kp, интегрального и производного времени Ti и Td, и N делителя фильтра:

    C=Kp(1+1Ti1s+TdsTdNs+1).

  • Существует два способа дискретизировать непрерывное время pid контроллер:

    • Используйте c2d команда. c2d вычисляет новые значения параметров для дискретизированного контроллера. Дискретные формулы интегратора дискретизированного контроллера зависят от c2d метод дискретизации, который вы используете, как показано в следующей таблице.

      c2d Метод дискретизацииIFormulaDFormula
      'zoh'ForwardEulerForwardEuler
      'foh'TrapezoidalTrapezoidal
      'tustin'TrapezoidalTrapezoidal
      'impulse'ForwardEulerForwardEuler
      'matched'ForwardEulerForwardEuler

      Для получения дополнительной информации о c2d методы дискретизации, см. c2d страница с описанием. Для получения дополнительной информации о IFormula и DFormula, см. Свойства.

    • Если вам требуются различные дискретные формулы интегратора, можно дискретизировать контроллер, непосредственно установив Ts, IFormula, и DFormula к желаемым значениям. (См. Раздел «Дискретизация ПИД-регулятора в непрерывном времени».) Однако этот метод не вычисляет новые значения коэффициентов усиления и фильтрации для дискретизированного контроллера. Поэтому этот метод может привести к более плохому соответствию между непрерывным и дискретным временем pid контроллеры, чем использовать c2d.

Введенный в R2010b