pidstd2

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

Синтаксис

C2 = pidstd2(Kp,Ti,Td,N,b,c)
C2 = pidstd2(Kp,Ti,Td,N,b,c,Ts)
C2 = pidstd2(sys)
C2 = pid2(___,Name,Value)

Описание

pid2 объекты контроллера представляют две степени свободы (2-DOF) ПИД-регуляторы в параллельной форме. Используйте pid2 любой, чтобы создать pid2 объект контроллера от известных коэффициентов или преобразовывать модель динамической системы в pid2 объект.

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

C2 = pidstd2(Kp,Ti,Td,N,b,c) создает непрерывное время ПИД-регулятор 2-DOF с пропорциональным усилением Kp, интегратор и производные постоянные времени Ti, и Td, и производная фильтрует делитель N. У контроллера также есть заданное значение, взвешивающее b на пропорциональном термине и заданном значении, взвешивающем c на производном термине. Отношением между контроллером 2-DOF выход (u) и его два входных параметров (r и y) дают:

u=Kp[(bry)+1Tis(ry)+TdsTdNs+1(cry)].

Это представление находится в standard form. Если все коэффициенты с действительным знаком, то получившийся C2 pidstd2 объект контроллера. Если один или несколько из этих коэффициентов является настраиваемым (realp или genmat), затем C2 настраиваемое обобщенное пространство состояний (genss) объект модели.

C2 = pidstd2(Kp,Ti,Td,N,b,c,Ts) создает дискретное время ПИД-регулятор 2-DOF с шагом расчета Ts. Отношением между выходом диспетчера и входными параметрами дают:

u=Kp[(bry)+1TiIF(z)(ry)+TdTdN+DF(z)(cry)].

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

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

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

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

C2 = pid2(___,Name,Value) задает дополнительные свойства как разделенные запятой пары Name,Value аргументы.

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

Kp

Пропорциональное усиление.

Kp может быть:

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

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

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

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

Значение по умолчанию: 1

Ti

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

Ti может быть:

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

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

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

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

Когда Ti = Inf, у контроллера нет интегрального действия.

Значение по умолчанию: Inf

Td

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

Td может быть:

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

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

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

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

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

Значение по умолчанию: 0

N

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

N может быть:

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

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

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

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

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

Значение по умолчанию: Inf

b

Взвешивание заданного значения на пропорциональном термине.

b может быть:

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

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

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

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

Когда b = 0, изменения в заданном значении не питаются непосредственно в пропорциональный термин.

Значение по умолчанию: 1

c

Взвешивание заданного значения на производном термине.

c может быть:

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

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

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

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

Когда c = 0, изменения в заданном значении не питаются непосредственно в производный термин.

Значение по умолчанию: 1

Ts

'SampleTime' .

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

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

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

sys

Динамическая система SISO, чтобы преобразовать в стандартный pidstd2 форма.

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

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

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

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

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

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

C2

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

  • Если все коэффициенты имеют скалярные числовые значения, то C2 pidstd2 объект контроллера.

  • Если один или несколько коэффициентов являются числовым массивом, C2 массив pidstd2 диспетчер возражает. Тип контроллера (такой как PI, ПИД или PDF) зависит от значений усилений. Например, когда Td = 0, но Kp и Ti являются ненулевыми и конечными, C2 ПИ-контроллер.

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

Свойства

b, c

Веса заданного значения на пропорциональных и производных условиях, соответственно. b и c значения действительны, конечны, и положительны. Когда вы создаете ПИД-регулятор 2-DOF с помощью pidstd2 команда, начальные значения этих свойств установлены b, и c входные параметры, соответственно.

Kp

Пропорциональное усиление.

Значение Kp действительно и конечен. Когда вы создаете ПИД-регулятор 2-DOF с помощью pidstd2 команда, начальное значение этого свойства установлено Kp входной параметр.

Ti

Время интегратора. Ti действительно и положителен. Когда вы создаете ПИД-регулятор 2-DOF с помощью pidstd2 команда, начальное значение этого свойства установлено Ti входной параметр. Когда Ti = Inf, у контроллера нет интегрального действия.

Td

Производное время. Td является действительным, конечным, и неотрицательным. Когда вы создаете ПИД-регулятор 2-DOF с помощью pidstd2 команда, начальное значение этого свойства установлено Td входной параметр. Когда Td = 0, у контроллера нет производного действия.

N

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

IFormula

Дискретная формула интегратора IF (z) для интегратора дискретного времени pidstd2 контроллер C2. Отношение между входными параметрами и выходом C2 дают:

u=Kp[(bry)+1TiIF(z)(ry)+TdTdN+DF(z)(cry)].

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

  • 'ForwardEuler'IF (z) = Tsz1.

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

  • 'BackwardEuler'IF (z) = Tszz1.

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

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

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

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

Значение по умолчанию: 'ForwardEuler'

DFormula

Дискретная формула интегратора DF (z) для производного фильтра дискретного времени pidstd2 контроллер C2. Отношение между входными параметрами и выходом C2 дают:

u=Kp[(bry)+1TiIF(z)(ry)+TdTdN+DF(z)(cry)].

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

  • 'ForwardEuler'DF (z) = Tsz1.

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

  • 'BackwardEuler'DF (z) = Tszz1.

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

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

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

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

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

Значение по умолчанию: 'ForwardEuler'

InputDelay

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

OutputDelay

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

Ts

'SampleTime' . Для моделей непрерывного времени, 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

Введите название канала, заданное как вектор символов или 2 1 массив ячеек из символьных векторов. Используйте это свойство назвать входные каналы моделей контроллеров. Например, присвойте имена setpoint и measurement к входным параметрам модели C ПИД-регулятора 2-DOF можно следующим образом.

C.InputName = {'setpoint';'measurement'};

В качестве альтернативы используйте автоматическое векторное расширение, чтобы присвоить оба входных имени. Например:

C.InputName = 'C-input';

Входные имена автоматически расширяются до {'C-input(1)';'C-input(2)'}.

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

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

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

  • Определение точек контакта, когда взаимосвязанные модели

Значение по умолчанию: {'';''}

InputUnit

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

C.InputUnit = {'Volts';'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 и slLinearizer заполните SamplingGrid таким образом.

Значение по умолчанию: []

Примеры

свернуть все

Создайте непрерывное время контроллер 2-DOF PDF в стандартной форме. Для этого установите интегральную постоянную времени на Inf. Установите другие усиления и делитель фильтра к требуемым значениям.

Kp = 1;
Ti = Inf;    % No integrator
Td = 3;      
N = 6;
b = 0.5;    % setpoint weight on proportional term
c = 0.5;    % setpoint weight on derivative term
C2 = pidstd2(Kp,Ti,Td,N,b,c)
C2 =
 
                              s      
  u = Kp * [(b*r-y) + Td * ------------ * (c*r-y)]
                          (Td/N)*s+1 

  with Kp = 1, Td = 3, N = 6, b = 0.5, c = 0.5
 
Continuous-time 2-DOF PDF controller in standard form

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

Создайте дискретное время ПИ-контроллер 2-DOF в стандартной форме, с помощью трапециевидной формулы дискретизации. Задайте формулу с помощью Name,Value синтаксис.

Kp = 1;
Ti = 2.4;
Td = 0;    
N = Inf; 
b = 0.5;   
c = 0;      
Ts = 0.1;
C2 = pidstd2(Kp,Ti,Td,N,b,c,Ts,'IFormula','Trapezoidal')
C2 =
 
                       1     Ts*(z+1)
  u = Kp * [(b*r-y) + ---- * -------- * (r-y)]
                       Ti    2*(z-1) 

  with Kp = 1, Ti = 2.4, b = 0.5, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time 2-DOF PI controller in standard form

Установка Td = 0 задает ПИ-контроллер без производного термина. Когда отображение показывает, значения N и c не используются в этом контроллере. Отображение также показывает, что трапециевидная формула используется в интеграторе.

Создайте ПИД-регулятор 2-DOF в стандартной форме и установите свойства InputName динамической системы и OutputName. Именование входных параметров и выхода полезно, например, когда вы соединяете ПИД-регулятор с другими моделями динамической системы с помощью connect команда.

C2 = pidstd2(1,2,3,10,1,1,'InputName',{'r','y'},'OutputName','u')
C2 =
 
                       1      1                      s      
  u = Kp * [(b*r-y) + ---- * --- * (r-y) + Td * ------------ * (c*r-y)]
                       Ti     s                  (Td/N)*s+1 

  with Kp = 1, Ti = 2, Td = 3, N = 10, b = 1, c = 1
 
Continuous-time 2-DOF PIDF controller in standard form

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

C2.InputName
ans = 2x1 cell array
    {'r'}
    {'y'}

Создайте 2 3 сетка ПИ-контроллеров 2-DOF в стандартной форме. Пропорциональное усиление лежит в диапазоне от 1–2 через строки массивов и диапазоны постоянной времени интегратора от 5–9 через столбцы.

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

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

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

pi_array = pidstd2(Kp,Ti,0,Inf,0.5,0,'Ts',0.1,'IFormula','BackwardEuler');
size(pi_array)
2x3 array of 2-DOF PID controller.
Each PID has 1 output and 2 inputs.

Если вы вводите скалярные значения для некоторых коэффициентов, pidstd2 автоматически расширяет их и присваивает то же значение всем записям в массиве. Например, в этом примере, Td = 0, так, чтобы все записи в массиве были ПИ-контроллерами. Кроме того, все записи в массиве имеют b = 0.5.

Доступ к записям в массиве с помощью индексации массива. Для массивов динамической системы первые две размерности являются размерностями ввода-вывода модели, и остальные измерения являются измерениями массива. Поэтому следующая команда извлекает (2,3) запись в массиве.

pi23 = pi_array(:,:,2,3)
pi23 =
 
                       1      Ts*z 
  u = Kp * [(b*r-y) + ---- * ------ * (r-y)]
                       Ti      z-1 

  with Kp = 2, Ti = 9, b = 0.5, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time 2-DOF PI controller in standard form

Можно также создать массив ПИД-регуляторов с помощью stack команда.

C2 = pidstd2(1,5,0.1,Inf,0.5,0.5);         % PID controller
C2f = pidstd2(1,5,0.1,0.5,0.5,0.5);        % PID controller with filter
pid_array = stack(2,C2,C2f);               % stack along 2nd array dimension

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

size(pid_array)
1x2 array of 2-DOF PID controller.
Each PID has 1 output and 2 inputs.

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

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

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

  • pid2 контроллер может быть выражен в допустимой стандартной форме.

  • Усиления Kp, Ki, и Kd из pid2 контроллер у всех есть тот же знак.

Например, рассмотрите следующий контроллер параллельной формы.

Kp = 2;
Ki = 3;
Kd = 4;
Tf = 2;
b = 0.1;
c = 0.5;
C2_par = pid2(Kp,Ki,Kd,Tf,b,c)
C2_par =
 
                       1                s    
  u = Kp (b*r-y) + Ki --- (r-y) + Kd -------- (c*r-y)
                       s              Tf*s+1 

  with Kp = 2, Ki = 3, Kd = 4, Tf = 2, b = 0.1, c = 0.5
 
Continuous-time 2-DOF PIDF controller in parallel form.

Преобразуйте этот контроллер, чтобы быть параллельными форме с помощью pidstd2.

C2_std = pidstd2(C2_par)
C2_std =
 
                       1      1                      s      
  u = Kp * [(b*r-y) + ---- * --- * (r-y) + Td * ------------ * (c*r-y)]
                       Ti     s                  (Td/N)*s+1 

  with Kp = 2, Ti = 0.667, Td = 2, N = 1, b = 0.1, c = 0.5
 
Continuous-time 2-DOF PIDF controller in standard form

Отображение подтверждает форму нового стандарта. График отклика подтверждает, что две формы эквивалентны.

bodeplot(C2_par,'b-',C2_std,'r--')
legend('Parallel','Standard','Location','Southeast')

Преобразуйте 2D вход, динамическая система непрерывного времени с одним выходом, которая представляет ПИД-регулятор 2-DOF стандартной форме pidstd2 контроллер.

Следующие матрицы пространства состояний представляют ПИД-регулятор 2-DOF.

A = [0,0;0,-8.181];
B = [1,-1;-0.1109,8.181];
C = [0.2301,10.66];
D = [0.8905,-11.79];
sys = ss(A,B,C,D);

Перепишите sys в терминах параметров ПИДа стандартной формы Kpti , Td, и N, и веса заданного значения b и c.

C2 = pidstd2(sys)
C2 =
 
                       1      1                      s      
  u = Kp * [(b*r-y) + ---- * --- * (r-y) + Td * ------------ * (c*r-y)]
                       Ti     s                  (Td/N)*s+1 

  with Kp = 1.13, Ti = 4.91, Td = 1.15, N = 9.43, b = 0.66, c = 0.0136
 
Continuous-time 2-DOF PIDF controller in standard form

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

Следующие матрицы пространства состояний представляют дискретное время ПИД-регулятор 2-DOF с шагом расчета 0,05 с.

A = [1,0;0,0.6643];
B = [0.05,-0.05; -0.004553,0.3357];
C = [0.2301,10.66];
D = [0.8905,-11.79];
Ts = 0.05;
sys = ss(A,B,C,D,Ts);

Когда вы преобразуете sys к форме ПИДа 2-DOF зависит результат, на которых дискретных формулах интегратора вы задаете для преобразования. Например, используйте значение по умолчанию, ForwardEuler, и для интегратора и для производной.

C2fe = pidstd2(sys)
C2fe =
 
                       1       Ts                         1       
  u = Kp * [(b*r-y) + ---- * ------ * (r-y) + Td * --------------- * (c*r-y)]
                       Ti      z-1                 (Td/N)+Ts/(z-1)

  with Kp = 1.13, Ti = 4.91, Td = 1.41, N = 9.43, b = 0.66, c = 0.0136, Ts = 0.05
 
Sample time: 0.05 seconds
Discrete-time 2-DOF PIDF controller in standard form

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

C2trap = pidstd2(sys,'IFormula','Trapezoidal','DFormula','Trapezoidal')
C2trap =
 
                       1     Ts*(z+1)                           1           
  u = Kp * [(b*r-y) + ---- * -------- * (r-y) + Td * ----------------------- * (c*r-y)]
                       Ti    2*(z-1)                 (Td/N)+Ts/2*(z+1)/(z-1)

  with Kp = 1.12, Ti = 4.89, Td = 1.41, N = 11.4, b = 0.658, c = 0.0136, Ts = 0.05
 
Sample time: 0.05 seconds
Discrete-time 2-DOF PIDF controller in standard form

Отображения показывают различие в получившихся содействующих значениях и функциональной форме.

Для некоторых динамических систем, пытаясь использовать Trapezoidal или BackwardEuler формулы интегратора дают к недопустимым результатам, таким как отрицательный Ti, Td, или N значения. В таких случаях, pidstd2 возвращает ошибку.

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

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

C2con = pidstd2(10,5,3,0.5,1,1);  % continuous-time 2-DOF PIDF controller
C2dis1 = c2d(C2con,0.1,'zoh')
C2dis1 =
 
                       1       Ts                         1       
  u = Kp * [(b*r-y) + ---- * ------ * (r-y) + Td * --------------- * (c*r-y)]
                       Ti      z-1                 (Td/N)+Ts/(z-1)

  with Kp = 10, Ti = 5, Td = 3.03, N = 0.5, b = 1, c = 1, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time 2-DOF PIDF controller in standard form

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

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

C2dis1.IFormula
ans = 
'ForwardEuler'
C2dis1.DFormula
ans = 
'ForwardEuler'

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

C2dis2 = C2con;
C2dis2.Ts = 0.1; 
C2dis2.IFormula = 'BackwardEuler';
C2dis2.DFormula = 'BackwardEuler';

Однако эти команды не вычисляют новые коэффициенты для дискретизированного контроллера. Чтобы видеть это, исследуйте C2dis2 и сравните коэффициенты с C2con и C2dis1.

C2dis2
C2dis2 =
 
                       1      Ts*z                         1        
  u = Kp * [(b*r-y) + ---- * ------ * (r-y) + Td * ----------------- * (c*r-y)]
                       Ti      z-1                 (Td/N)+Ts*z/(z-1)

  with Kp = 10, Ti = 5, Td = 3, N = 0.5, b = 1, c = 1, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time 2-DOF PIDF controller in standard form

Советы

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

  • Повредить контроллер 2-DOF в два компонента элемента управления SISO, такие как контроллер обратной связи и контроллер feedforward, getComponents использования.

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

    • Определение значений массивов для одного или нескольких коэффициентов Kpti , TdNB, и c.

    • Определение массива динамических систем sys преобразовывать в pid2 диспетчер возражает.

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

    • Передача массива моделей объекта управления к pidtune.

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

  • Чтобы создать или преобразовать в контроллер параллельной формы, используйте pid2. Параллельная форма выражает действия контроллера в терминах пропорционального, интеграла, и производная получает Kp, Ki и Kd и постоянную времени фильтра Tf. Например, отношением между входными параметрами и выходом параллельной формы непрерывного времени ПИД-регулятор 2-DOF дают:

    u=Kp(bry)+Kis(ry)+KdsTfs+1(cry).

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

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

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

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

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

Введенный в R2015b