Создайте ПИД-регулятор в стандартной форме, преобразуйте в ПИД-регулятор стандартной формы
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
создает непрерывно-разовый PIDF (ПИД с производным фильтром первого порядка) объект контроллера в стандартной форме. У контроллера есть пропорциональное усиление C
= pidstd(Kp
,Ti
,Td
,N
)Kp
, интегральные и производные времена Ti
и Td
и производный делитель фильтра первого порядка N
:
создает контроллер дискретного времени с шагом расчета C
= pidstd(Kp
,Ti
,Td
,N
,Ts
)Ts
. Контроллер дискретного времени:
IF (z) и DF (z) является discrete integrator formulas для интегратора и производного фильтра. По умолчанию,
Чтобы выбрать различные дискретные формулы интегратора, используйте входные параметры DFormula
и IFormula
. (См. Свойства для получения дополнительной информации о IFormula
и DFormula
). Если DFormula
= 'ForwardEuler'
(значение по умолчанию) и N
≠ Inf
, то Ts
, Td
и N
должны удовлетворить Td/N > Ts/2
. Это требование гарантирует стабильный производный полюс фильтра.
преобразовывает динамическую систему C
= pidstd(sys
)sys
в стандартную форму контроллер pidstd
объект.
создает непрерывно-кратный пропорциональный (P) контроллер с C
= pidstd(Kp
)Ti
= Inf
, Td
= 0, и N
= Inf
.
создает пропорциональное и интеграл (PI) контроллер с C
= pidstd(Kp
,Ti
)Td
= 0 и N
= Inf
.
создает пропорциональное, интеграл и производную (ПИД) контроллер с C
= pidstd(Kp
,Ti
,Td
)N
= Inf
.
создает контроллер или преобразовывает динамическую систему в контроллер C
= pidstd(...,Name,Value
)pidstd
объект с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value
.
|
Пропорциональное усиление.
Значение по умолчанию: 1 |
|
Время интегратора.
Значение по умолчанию: |
|
Производное время.
Когда Значение по умолчанию: 0 |
|
Производный делитель фильтра.
Когда Значение по умолчанию: |
|
'SampleTime' . Чтобы создать дискретное время контроллер
Значение по умолчанию: 0 (непрерывное время) |
|
Динамическая система SISO, чтобы преобразовать в стандартную форму
|
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
Используйте синтаксис Name,Value
, чтобы установить формулы численного интегрирования IFormula
и DFormula
дискретного времени контроллер pidstd
, или установить другие свойства объектов, такие как InputName
и OutputName
. Для получения информации о доступных свойствах контроллера pidstd
объекты смотрите Свойства.
|
Объект Тип контроллера (P, PI, PD, PDF, ПИД, PIDF) зависит от значений Когда входные параметры |
|
Пропорциональное усиление. |
|
Интегральное время. |
|
Производное время. |
|
Производный делитель фильтра. |
|
Дискретная формула интегратора IF (z) для интегратора дискретного времени контроллер
Когда Значение по умолчанию: |
|
Дискретная формула интегратора DF (z) для производного фильтра дискретного времени контроллер
Когда Значение по умолчанию: |
|
Задержка в системе вводится. |
|
Задержка в системе Вывод. |
|
'SampleTime' . Для непрерывно-разовых моделей, Изменение этого свойства не дискретизирует или передискретизирует модель. Используйте Значение по умолчанию: |
|
Модули для переменной времени, шаг расчета
Изменение этого свойства не имеет никакого эффекта на другие свойства, и поэтому изменяет полное поведение системы. Используйте Значение по умолчанию: |
|
Введите название канала, заданное как вектор символов. Используйте это свойство назвать входной канал моделей контроллеров. Например, присвойте имя C.InputName = 'error'; Можно использовать краткое обозначение Входные названия канала имеют несколько использования, включая:
Значение по умолчанию: Пустой символьный вектор, |
|
Введите модули канала, заданные как вектор символов. Используйте это свойство отследить модули входного сигнала. Например, присвойте модули концентрации C.InputUnit = 'mol/m^3';
Значение по умолчанию: Пустой символьный вектор, |
|
Введите группы канала. Это свойство не нужно для моделей ПИД-регулятора. Значение по умолчанию: |
|
Выведите название канала, заданное как вектор символов. Используйте это свойство назвать выходной канал моделей контроллеров. Например, присвойте имя C.OutputName = 'control'; Можно использовать краткое обозначение Входные названия канала имеют несколько использования, включая:
Значение по умолчанию: Пустой символьный вектор, |
|
Выведите модули канала, заданные как вектор символов. Используйте это свойство отследить модули выходного сигнала. Например, присвойте модуль C.OutputUnit = 'Volts';
Значение по умолчанию: Пустой символьный вектор, |
|
Выведите группы канала. Это свойство не нужно для моделей ПИД-регулятора. Значение по умолчанию: |
|
Имя системы, заданное как вектор символов. Например, Значение по умолчанию: |
|
Любой текст, который вы хотите сопоставить с системой, сохраненной как строка или массив ячеек из символьных векторов. Свойство хранит, какой бы ни тип данных вы обеспечиваете. Например, если 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.' Значение по умолчанию: |
|
Любой тип данных вы хотите сопоставить с системой, заданной как любой тип данных MATLAB®. Значение по умолчанию: |
|
Выборка сетки для образцовых массивов, заданных как структура данных. Для образцовых массивов, которые выведены путем выборки одной или нескольких независимых переменных, это дорожки свойства значения переменных, сопоставленные с каждой моделью в массиве. Эта информация появляется, когда вы отображаете или строите образцовый массив. Используйте эту информацию, чтобы проследить результаты до независимых переменных. Установите имена полей структуры данных к именам переменных выборки. Установите значения полей к выбранным значениям переменных, сопоставленным с каждой моделью в массиве. Все переменные выборки должны быть числовыми и скаляр, оцененный, и все массивы выбранных значений должны совпадать с размерностями образцового массива. Например, предположите, что вы создаете 11 1 массив линейных моделей, sysarr.SamplingGrid = struct('time',0:10) Точно так же предположите, что вы создаете 6 9 образцовый массив, [zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>) M.SamplingGrid = struct('zeta',zeta,'w',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® в нескольких значениях параметров или рабочих точках, программное обеспечение заполняет Значение по умолчанию: |
Создайте непрерывно-разовую стандартную форму контроллер 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
Отображение показывает тип контроллера, формулу и содействующие значения.
Чтобы создать контроллер дискретного времени, установите значение 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
из непрерывно-разовой динамической системыДинамическая система
представляет ПИД-регулятор. Используйте 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
:
В массиве контроллеров pidstd
у каждого контроллера должен быть тот же шаг расчета Ts
и дискретные формулы интегратора IFormula
и DFormula
.
Чтобы создать или преобразовать в контроллер параллельной формы, используйте pid
. Параллельная форма выражает действия контроллера с точки зрения пропорционального, интеграла, и производная получает Kp, Ki и Kd и временную константу фильтра Tf:
Существует два способа дискретизировать непрерывно-кратный контроллер pidstd
:
Используйте команду c2d
. c2d
вычисляет новые значения параметров для дискретизированного контроллера. Дискретные формулы интегратора дискретизированного контроллера зависят от метода дискретизации c2d
, который вы используете, как показано в следующей таблице.
Метод дискретизации c2d | IFormula | DFormula |
---|---|---|
'zoh' | ForwardEuler | ForwardEuler |
'foh' | Trapezoidal | Trapezoidal |
'tustin' | Trapezoidal | Trapezoidal |
'impulse' | ForwardEuler | ForwardEuler |
'matched' | ForwardEuler | ForwardEuler |
Для получения дополнительной информации о методах дискретизации c2d
, Смотрите страницу с описанием c2d
. Для получения дополнительной информации о IFormula
и DFormula
, смотрите Свойства.
Если вы требуете различных дискретных формул интегратора, можно дискретизировать контроллер непосредственно установкой Ts
, IFormula
и DFormula
к требуемым значениям. (Для получения дополнительной информации смотрите, Дискретизируют Непрерывно-кратный pidstd Контроллер.) Однако этот метод не вычисляет новое усиление и постоянные значения фильтра для дискретизированного контроллера. Поэтому этот метод может привести к более плохому соответствию между непрерывно-разовым и дискретным временем контроллеры pidstd
, чем использование c2d
.
pidTuner
| pidstd2
| pidstddata
| pidtune