exponenta event banner

pid

Создание PID-контроллера в параллельной форме, преобразование в 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 + KdTfs + 1.

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

C = pid(Kp,Ki,Kd,Tf,Ts) создает дискретный PID-контроллер с временем выборки Ts. Контроллер:

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

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

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

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

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

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

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

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

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

C

PID-контроллер, представленный как pid объект контроллера, массив pid объекты контроллера, a genss объект или genss массив.

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

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

Свойства

Kp, Ki, Kd

Усиление контроллера PID.

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

Tf

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

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

IFormula

Формула дискретного интегратора IF (z) для интегратора дискретного времениpid диспетчер C:

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

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

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

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

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

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

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

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

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

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

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

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

InputDelay

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

OutputDelay

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

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

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

Примеры

свернуть все

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

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.

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

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

Для создания дискретно-временного PI контроллера установите значение 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 в качестве пятого входного аргумента после всех четырех параметров PID, Kp, Ki, Kd, и Tf. Поскольку требуется только контроллер PI, установите 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 одинаковые.

При создании контроллера PID задайте динамические свойства системы. InputName и OutputName. Это полезно, например, при соединении контроллера PID с другими динамическими моделями систем с помощью 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.

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

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

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

Чтобы создать массив контроллеров PID, начните с массивов, представляющих выигрыш.

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

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.

Все контроллеры PID в массиве должны иметь одинаковое время выборки, дискретные формулы интегратора и динамические свойства системы, такие как InputName и OutputName.

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

Стандартная форма PID выражает действия контроллера в виде общего пропорционального усиления 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 форма.

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

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

Создать zpk модель Н. Затем использовать pid команда на получение H в терминах усиления PID 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 в параллельной форме PID с использованием 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 вычисляет новые коэффициенты усиления PID для контроллера дискретного времени.

Дискретные интеграторные формулы дискретизированного контроллера зависят от c2d метод дискретизации, как описано в Tips. Для 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';

Однако эти команды не вычисляют новые коэффициенты усиления PID для дискретизированного контроллера. Чтобы увидеть это, изучите 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 объект контроллера из известных коэффициентов усиления PID и постоянной времени фильтра.

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

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

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

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

    • Задание значений массива для Kp,Ki,Kd, и Tf

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

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

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

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

    C = Kp (1 + 1Ti1s + TdTdN + 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