pidstd

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

Синтаксис

C = pidstd(Kp,Ti,Td,N)
C = pidstd(Kp,Ti,Td,N,Ts)
C = pidstd(sys)
C = pidstd(Kp)
C = pidstd(Kp,Ti)
C = pidstd(Kp,Ti,Td)
C = pidstd(...,Name,Value)
C = pidstd

Описание

C = pidstd(Kp,Ti,Td,N) создает объект контроллера PIDF (PID с производным фильтром первого порядка) в стандартной форме. Контроллер имеет пропорциональную составляющую усиления Kp, интегральный и производное время Ti и Td, и производный фильтр-делитель первого порядка N:

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

C = pidstd(Kp,Ti,Td,N,Ts) создает контроллер дискретного времени со шаг расчета Ts. Контроллер в дискретном времени:

C=Kp(1+1TiIF(z)+TdTdN+DF(z)).

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

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

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

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

C = pidstd(Kp) создает пропорциональный контроллер (P) в непрерывном времени с Ti = Inf, Td = 0, и N = Inf.

C = pidstd(Kp,Ti) создает пропорциональный и интегральный (PI) контроллер с Td = 0 и N = Inf.

C = pidstd(Kp,Ti,Td) создает пропорциональный, интегральный и производный (ПИД) контроллер с N = Inf.

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

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

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

Kp

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

Kp могут быть:

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

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

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

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

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

Ti

Время интегратора.

Ti могут быть:

  • Реальное и положительное значение.

  • Массив вещественных и положительных значений.

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

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

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

Td

Производное время.

Td могут быть:

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

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

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

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

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

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

N

Производный делитель фильтра.

N могут быть:

  • Реальное и положительное значение.

  • Массив вещественных и положительных значений.

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

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

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

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

Ts

Шаг расчета.

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

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

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

sys

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

sys должен представлять допустимый контроллер, который может быть записан в стандартной форме с Ti > 0, Td ≥ 0 и N > 0.

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

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

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

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

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

C

pidstd объект, представляющий одно-входный одно-выходной ПИД-регулятор в стандартной форме.

Тип контроллера (P, PI, PD, PDF, PID, PIDF) зависит от значений Kp, Ti, Td, и N. Для примера, когда Td = Inf и Kp и Ti являются конечными и ненулевыми, C является ПИ-контроллер. Введите getType(C) для получения типа контроллера.

Когда вводится Kp, Ti, Td, и N или вход sys являются массивами, C является массивом из pidstd объекты.

Свойства

Kp

Пропорциональная составляющая. Kp должно быть вещественным и конечным.

Ti

Интегральное время. Ti должно быть вещественным, конечным и больше или равным нулю.

Td

Производное время. Td должно быть вещественным, конечным и больше или равным нулю.

N

Производный делитель фильтра. N должен быть вещественным и больше или равен нулю.

IFormula

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

C=Kp(1+1TiIF(z)+TdTdN+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) для производного фильтра дискретного времениpidstd C контроллера:

C=Kp(1+1TiIF(z)+TdTdN+DF(z)).

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

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

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

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

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

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

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

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

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

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

InputDelay

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

OutputDelay

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

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 таким образом.

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

Примеры

Создайте стандартную форму PDF Контроллера

Создайте непрерывное время стандартную форму PDF контроллера с пропорциональной составляющей 1, производным временем 3 и делителем фильтра 6.

C = pidstd(1,Inf,3,6);
C =
 
                      s      
  Kp * (1 + Td * ------------)
                  (Td/N)*s+1 

  with Kp = 1, Td = 3, N = 6
 
Continuous-time PDF controller in standard form

На отображении показан тип контроллера, формула и значения коэффициентов.

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

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

C = pidstd(1,0.5,'Ts',0.1,'IFormula','Trapezoidal') % Ts = 0.1s

Эта команда создает результат:

Discrete-time PI controller in standard form:
 
           1     Ts*(z+1)
Kp * (1 + ---- * --------)
           Ti    2*(z-1) 
 
with Kp = 1, Ti = 0.5, Ts = 0.1

Также можно создать тот же контроллер дискретного времени путем подачи Ts в качестве пятого аргумента после всех четырех параметров ПИД Kp, Ti, Td, и N.

C = pidstd(5,2.4,0,Inf,0.1,'IFormula','Trapezoidal');

Создание ПИД-регулятор и задание свойств системы

Создайте ПИД-регулятор и установите динамические системные свойства InputName и OutputName.

C = pidstd(1,0.5,3,'InputName','e','OutputName','u');

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

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

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

Kp = [1 1 1;2 2 2];
Ti = [5:2:9;5:2:9];
pi_array = pidstd(Kp,Ti,'Ts',0.1,'IFormula','BackwardEuler');

Эти команды генерируют массив 2 на 3 дискретного времени pidstd объекты. Все pidstd объекты в массиве должны иметь одинаковые шаги расчета, дискретные формулы интегратора и динамической системы свойства (такие как InputName и OutputName).

Кроме того, можно использовать stack команда для построения массивов pidstd объекты.

C = pidstd(1,5,0.1)        % PID controller
Cf = pidstd(1,5,0.1,0.5)   % PID controller with filter
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.

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

Параллельная ПИД выражает действия контроллера в терминах пропорционального, интегрального и производного коэффициентов усиления Kp, Ki и Kd, и временной постоянной Tf фильтра. Можно преобразовать контроллер параллельной формы parsys к стандартной форме используя pidstd, при условии, что:

  • parsys не является чистым контроллером интегратора (I).

  • Коэффициент усиления Kp, Ki, и Kd от parsys у всех одинаковый знак.

parsys = pid(2,3,4,5);  % Standard-form controller
stdsys = pidstd(parsys) 

Эти команды генерируют контроллер параллельной формы:

Continuous-time PIDF controller in standard form:
 
           1      1              s      
Kp * (1 + ---- * --- + Td * ------------)
           Ti     s          (Td/N)*s+1 
 
with Kp = 2, Ti = 0.66667, Td = 2, N = 0.4

Создать pidstd Контроллер от динамической системы непрерывного времени

Динамическая система

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

представляет собой ПИД-регулятор. Использовать pidstd для получения H (s) в терминах параметров ПИД стандартной формы Kp, Ti и Td.

H = zpk([-1,-2],0,3);
C = pidstd(H)

Эти команды дают результат:

Continuous-time PID controller in standard form:
 
           1      1          
Kp * (1 + ---- * --- + Td * s)
           Ti     s          
 
with Kp = 9, Ti = 1.5, Td = 0.33333

Создать pidstd Контроллер из динамической системы дискретного времени

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

% PIDF controller expressed in zpk form
sys = zpk([-0.5,-0.6],[1 -0.2],3,'Ts',0.1);

Получающееся pidstd объект зависит от дискретной формулы интегратора, для которой вы задаете IFormula и DFormula.

Для примера, если вы используете ForwardEuler по умолчанию для обеих формул:

C = pidstd(sys)

вы получаете результат:

Discrete-time PIDF controller in standard form:
 
           1       Ts                 1       
Kp * (1 + ---- * ------ + Td * ---------------)
           Ti      z-1         (Td/N)+Ts/(z-1)
 
with Kp = 2.75, Ti = 0.045833, Td = 0.0075758, N = 0.090909, Ts = 0.1

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

Точно так же нельзя писать sys в стандартной форме с использованием Trapezoidal формула для обоих интеграторов. Это приведет к негативным Ti и Td, что также возвращает ошибку.

Дискретизация непрерывного времени pidstd Контроллер

Во-первых, дискретизируйте контроллер, используя 'zoh' метод c2d.

Cc = pidstd(1,2,3,4);  % continuous-time pidf controller
Cd1 = c2d(Cc,0.1,'zoh')
Discrete-time PIDF controller in standard form:
 
           1       Ts                 1       
Kp * (1 + ---- * ------ + Td * ---------------)
           Ti      z-1         (Td/N)+Ts/(z-1)
 
with Kp = 1, Ti = 2, Td = 3.2044, N = 4, Ts = 0.1

Получившийся контроллер в дискретном времени использует ForwardEuler (Ts/( z -1)) для обоих IFormula и DFormula.

Дискретные формулы интегратора дискретизированного контроллера зависят от c2d метод дискретизации, как описано в «Советах». Как использовать другое IFormula и DFormula, непосредственно установите Ts, IFormula, и DFormula к желаемым значениям:

Cd2 = Cc;
Cd2.Ts = 0.1; 
Cd2.IFormula = 'BackwardEuler';
Cd2.DFormula = 'BackwardEuler';

Эти команды не вычисляют новые значения параметров для дискретизированного контроллера. Чтобы увидеть это, введите:

Cd2

для получения результата:

Discrete-time PIDF controller in standard form:
 
           1      Ts*z                 1        
Kp * (1 + ---- * ------ + Td * -----------------)
           Ti      z-1         (Td/N)+Ts*z/(z-1)
 
with Kp = 1, Ti = 2, Td = 3, N = 4, Ts = 0.1

Совет

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

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

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

    • Определение значений массивов для Kp, Ti, Td, и N

    • Определение массива динамических систем sys для преобразования в стандартную форму ПИД

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

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

  • Чтобы создать или преобразовать в контроллер параллельной формы, используйте pid. Параллельная форма выражает действия контроллера в терминах пропорциональных, интегральных и производных Kp, Ki и Kd и временной константы фильтра Tf:

    C=Kp+Kis+KdsTfs+1.

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

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

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

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

    • Если вам требуются различные дискретные формулы интегратора, можно дискретизировать контроллер, непосредственно установив Ts, IFormula, и DFormula к желаемым значениям. (Для получения дополнительной информации смотрите Discretize Continuous-Time Pidstd Controller.) Однако этот метод не вычисляет новые значения коэффициентов усиления и фильтрации для дискретизированного контроллера. Поэтому этот метод может привести к более плохому соответствию между непрерывным временем и дискретным временем pidstd контроллеры, чем использовать c2d.

Введенный в R2010b