pidstd

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

Синтаксис

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

Описание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kp

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

Kp может быть:

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

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

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

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

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

Ti

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

Ti может быть:

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

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

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

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

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

Td

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

Td может быть:

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

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

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

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

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

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

N

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

N может быть:

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

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

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

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

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

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

Ts

'SampleTime' .

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

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

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

C

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

Тип контроллера (P, PI, PD, PDF, ПИД, 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) = Tsz1.

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

  • 'BackwardEuler'IF (z) = Tszz1.

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

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

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

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

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

DFormula

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

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

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

  • 'ForwardEuler'DF (z) = Tsz1.

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

  • 'BackwardEuler'DF (z) = Tszz1.

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

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

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

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

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

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

InputDelay

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

OutputDelay

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

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

Введите название канала, заданное как вектор символов. Используйте это свойство назвать входной канал моделей контроллеров. Например, присвойте имя error входу моделей контроллеров C можно следующим образом.

C.InputName = 'error';

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

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

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

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

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

InputUnit

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

C.InputUnit = 'mol/m^3';

InputUnit не имеет никакого эффекта на поведение системы.

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

InputGroup

Введите группы канала. Это свойство не нужно для моделей ПИД-регулятора.

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

OutputName

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

C.OutputName = 'control';

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

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

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

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

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

OutputUnit

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

C.OutputUnit = 'Volts';

OutputUnit не имеет никакого эффекта на поведение системы.

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

OutputGroup

Выведите группы канала. Это свойство не нужно для моделей ПИД-регулятора.

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

Name

Имя системы, заданное как вектор символов. Например, 'system_1'.

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

Notes

Любой текст, который вы хотите сопоставить с системой, сохраненной как строка или массив ячеек из символьных векторов. Свойство хранит, какой бы ни тип данных вы обеспечиваете. Например, если sys1 и sys2 являются моделями динамической системы, можно установить их свойства Notes можно следующим образом:

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

Значение по умолчанию: [0×1 string]

UserData

Любой тип данных вы хотите сопоставить с системой, заданной как любой тип данных MATLAB®.

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

SamplingGrid

Выборка сетки для образцовых массивов, заданных как структура данных.

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

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

Например, предположите, что вы создаете 11 1 массив линейных моделей, sysarr, путем взятия снимков состояния линейной изменяющейся во времени системы во времена t = 0:10. Следующий код хранит выборки времени линейными моделями.

 sysarr.SamplingGrid = struct('time',0:10)

Точно так же предположите, что вы создаете 6 9 образцовый массив, M, путем независимой выборки двух переменных, zeta и w. Следующий код присоединяет значения (zeta,w) к M.

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

Когда вы отображаете M, каждая запись в массиве включает соответствующий zeta и значения w.

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

Для образцовых массивов, сгенерированных путем линеаризации модели Simulink® в нескольких значениях параметров или рабочих точках, программное обеспечение заполняет SamplingGrid автоматически со значениями переменных, которые соответствуют каждой записи в массиве. Например, команды Simulink Control Design™ linearize и slLinearizer заполняют 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 в качестве пятого аргумента после всех четырех параметров ПИДа Kp, Ti, Td и N.

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

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

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

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

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

Создайте 2 3 сетка контроллеров 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 в стандартную форму

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

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

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

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

Эти команды производят контроллер параллельной формы:

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

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

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

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

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

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

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

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

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

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

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

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

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

C = pidstd(sys)

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

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

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

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

Дискретизируйте непрерывно-кратный контроллер pidstd

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

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

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

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

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

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

Cd2

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

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

Советы

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

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

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

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

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

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

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

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

    C=Kp+Kis+KdsTfs+1.

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

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

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

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

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

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