pidstd2

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

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

Две степени свободы (2-DOF) ПИД-регуляторы включают взвешивание заданного значения на пропорциональных и производных условиях. ПИД-регулятор с 2 степенями свободы способен к быстрому подавлению помех без значительного увеличения перерегулирования в отслеживании заданного значения. ПИД-регуляторы 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)

Описание

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 является контроллером PI.

  • Если один или несколько коэффициентов являются настраиваемым параметром (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

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

Создайте дискретное время контроллер PI 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 задает контроллер PI без производного термина. Когда отображение показывает, значения 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 сетка контроллеров PI 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, так, чтобы все записи в массиве были контроллерами PI. Кроме того, все записи в массиве имеют 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 с точки зрения параметров ПИДа стандартной формы Kp, Ti, 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:

    • Задавая значения массивов для одного или нескольких коэффициентов Kp, Ti, Td, N, b и 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, который вы используете, как показано в следующей таблице.

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

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

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

Введенный в R2015b