Создание контроллера PID в стандартной форме, преобразование в контроллер PID стандартной формы
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 непрерывного времени (PID с фильтром производных первого порядка) в стандартной форме. Контроллер имеет пропорциональный коэффициент усиления C = pidstd(Kp,Ti,Td,N)Kp, интегральное и производное время Ti и Tdи делитель фильтра производных первого порядка N:
TdTdN + 1).
создает контроллер дискретного времени с временем выборки C = pidstd(Kp,Ti,Td,N,Ts)Ts. Контроллер дискретного времени:
+ DF (z)).
IF (z) и DF (z) являются дискретными формулами интегратора для интегратора и производного фильтра. По умолчанию
Tsz − 1.
Для выбора различных формул дискретного интегратора используйте IFormula и DFormula входные данные. (Дополнительные сведения см. в разделе Свойства 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.
создает пропорциональный, интегральный и производный (PID) контроллер с C = pidstd(Kp,Ti,Td)N = Inf.
создает контроллер или преобразует динамическую систему в C = pidstd(...,Name,Value)pidstd объект контроллера с дополнительными опциями, заданными одним или несколькими Name,Value аргументы пары.
|
Пропорциональный выигрыш.
По умолчанию: 1 |
|
Время интегратора.
По умолчанию: |
|
Производное время.
Когда По умолчанию: 0 |
|
Делитель производного фильтра.
Когда По умолчанию: |
|
Время выборки. Создание дискретного времени
По умолчанию: 0 (непрерывное время) |
|
Динамическая система SISO для преобразования в стандартную
|
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
Использовать Name,Value синтаксис для задания формул числового интегрирования IFormula и DFormula дискретного времени pidstd или для установки других свойств объекта, таких как InputName и OutputName. Для получения информации о доступных свойствах pidstd объекты контроллера, см. раздел Свойства.
|
Тип контроллера (P, PI, PD, PDF, PID, PIDF) зависит от значений Когда входы |
|
Пропорциональный выигрыш. |
|
Интегральное время. |
|
Производное время. |
|
Делитель производного фильтра. |
|
Формула дискретного интегратора IF (z) для интегратора дискретного времени + DF (z)).
Когда По умолчанию: |
|
Формула дискретного интегратора DF (z) для производного фильтра дискретного времени + DF (z)).
Когда По умолчанию: |
|
Временная задержка на входе системы. |
|
Временная задержка на выходе системы. |
|
Время выборки. Для моделей непрерывного времени Изменение этого свойства не дискретизирует и не выполняет повторную выборку модели. Использовать По умолчанию: |
|
Единицы измерения для переменной времени, времени выборки
Изменение этого свойства не влияет на другие свойства и, следовательно, изменяет общее поведение системы. Использовать По умолчанию: |
|
Имя входного канала, указанное как символьный вектор. Это свойство используется для присвоения имени входному каналу модели контроллера. Например, присвойте имя C.InputName = 'error';Можно использовать сокращенную нотацию Имена входных каналов имеют несколько применений, в том числе:
По умолчанию: Пустой символьный вектор, |
|
Единицы входного канала, заданные как символьный вектор. Это свойство используется для отслеживания единиц входного сигнала. Например, присвойте единицы концентрации C.InputUnit = 'mol/m^3';
По умолчанию: Пустой символьный вектор, |
|
Группы входных каналов. Это свойство не требуется для моделей контроллеров PID. По умолчанию: |
|
Имя выходного канала, указанное как символьный вектор. Это свойство используется для присвоения имени выходному каналу модели контроллера. Например, присвойте имя C.OutputName = 'control';Можно использовать сокращенную нотацию Имена входных каналов имеют несколько применений, в том числе:
По умолчанию: Пустой символьный вектор, |
|
Единицы выходного канала, заданные как символьный вектор. Это свойство используется для отслеживания единиц выходного сигнала. Например, присвойте единицу измерения C.OutputUnit = 'Volts';
По умолчанию: Пустой символьный вектор, |
|
Группы выходных каналов. Это свойство не требуется для моделей контроллеров PID. По умолчанию: |
|
Имя системы, указанное как символьный вектор. Например, По умолчанию: |
|
Любой текст, который требуется связать с системой, хранится в виде строки или массива ячеек символьных векторов. Свойство хранит данные любого типа. Например, если 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 в качестве пятого аргумента после всех четырех параметров PID Kp, Ti, Td, и N.
C = pidstd(5,2.4,0,Inf,0.1,'IFormula','Trapezoidal');
Создание PID-контроллера и установка динамических свойств системы 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 Контроллер в стандартную формуПараллельная форма 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.4pidstd Контроллер из динамической системы непрерывного времениДинамическая система
(s + 2) s
представляет контроллер PID. Использовать pidstd для получения H (s) в терминах параметров PID стандартной формы 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.33333pidstd Контроллер из дискретно-временной динамической системыМожно преобразовать динамическую систему дискретного времени, представляющую ПИД-контроллер с производным фильтром, в стандартную 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 в стандартной форме PID с использованием 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 метод дискретизации, как описано в Tips. Использование другого 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 объект контроллера из известного коэффициента усиления PID, интеграла и производной и делителя фильтра или для преобразования динамической системной модели в pidstd объект.
Для настройки PID-контроллера для конкретной установки используйте pidtune или pidTuner.
Создание массивов pidstd контроллеры:
В массиве pidstd контроллеры, каждый контроллер должен иметь одинаковое время выборки Ts и формулы дискретного интегратора IFormula и DFormula.
Чтобы создать или преобразовать контроллер параллельной формы, используйте pid. Параллельная форма выражает действия контроллера в терминах пропорциональных, интегральных и производных коэффициентов усиления Kp, Ki и Kd и постоянной времени фильтра Tf:
KdTfs + 1.
Существует два способа дискретизации непрерывного времени 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 контроллеры, чем использование c2d.
pidstd2 | pidstddata | pidtune | pidTuner