exponenta event banner

pidstd

Создание контроллера PID в стандартной форме, преобразование в контроллер PID стандартной формы

Синтаксис

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 + TdTdN + 1).

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

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

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

IF (z) = DF (z) = Tsz − 1.

Для выбора различных формул дискретного интегратора используйте 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) создает пропорциональный, интегральный и производный (PID) контроллер с 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 является PI-контроллером. Войти 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 (z) = Tsz 1.

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

  • 'BackwardEuler' - IF (z) = Цз 1.

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

  • 'Trapezoidal' - IF (z) = Ts2z + 1z − 1.

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

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

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

DFormula

Формула дискретного интегратора DF (z) для производного фильтра дискретного времениpidstd диспетчер C:

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

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

  • 'ForwardEuler' - DF (z) = Tsz 1.

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

  • 'BackwardEuler' - DF (z) = Цз 1.

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

  • 'Trapezoidal' - DF (z) = Ts2z + 1z − 1.

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

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

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

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

InputDelay

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

OutputDelay

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

Ts

Время выборки. Для моделей непрерывного времени Ts = 0. Для дискретно-временных моделей Ts - положительный скаляр, представляющий период выборки. Это значение выражается в единицах, указанных TimeUnit свойство модели. Модели контроллеров PID не поддерживают неопределенное время выборки (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

Группы входных каналов. Это свойство не требуется для моделей контроллеров PID.

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

OutputName

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

C.OutputName = 'control';

Можно использовать сокращенную нотацию y см. OutputName собственность. Например, C.y эквивалентно C.OutputName.

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

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

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

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

OutputUnit

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

C.OutputUnit = 'Volts';

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

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

OutputGroup

Группы выходных каналов. Это свойство не требуется для моделей контроллеров PID.

По умолчанию: 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

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

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

Чтобы создать контроллер дискретного времени, установите значение 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 в качестве пятого аргумента после всех четырех параметров PID Kp, Ti, Td, и N.

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

Создание PID-контроллера и установка свойств системы

Создание PID-контроллера и установка динамических свойств системы InputName и OutputName.

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

Создание сетки стандартных контроллеров МТС

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

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

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 Контроллер в стандартную форму

Параллельная форма 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

представляет контроллер PID. Использовать pidstd для получения H (s) в терминах параметров PID стандартной формы 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 в стандартной форме PID с использованием 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 метод дискретизации, как описано в Tips. Использование другого 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 объект контроллера из известного коэффициента усиления PID, интеграла и производной и делителя фильтра или для преобразования динамической системной модели в pidstd объект.

  • Для настройки PID-контроллера для конкретной установки используйте pidtune или pidTuner.

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

    • Задание значений массива для Kp,Ti,Td, и N

    • Задание массива динамических систем sys преобразование в стандартную форму PID

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

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

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

    C = Kp + Kis + KdTfs + 1.

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

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

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

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

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

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