Создайте ПИД-регулятор в стандартной форме, преобразуйте в стандартную форму ПИД-регулятора
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:
создает контроллер дискретного времени со шаг расчета C = pidstd(Kp,Ti,Td,N,Ts)Ts. Контроллер в дискретном времени:
IF (z) и DF (z) являются discrete integrator formulas для интегратора и производного фильтра. По умолчанию,
Чтобы выбрать различные дискретные формулы интегратора, используйте 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.
создает пропорциональный, интегральный и производный (ПИД) контроллер с 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) для производного фильтра дискретного времени
Когда По умолчанию: |
|
Задержка на системном входе. |
|
Задержка на выходе системы. |
|
Шаг расчета. Для моделей в непрерывном времени, Изменение этого свойства не дискретизирует и не переопределяет модель. Использовать По умолчанию: |
|
Модули измерения для временной переменной, шага расчета
Изменение этого свойства не влияет на другие свойства и, следовательно, изменяет общее поведение системы. Использовать По умолчанию: |
|
Вход канала, заданное как вектор символов. Используйте это свойство, чтобы назвать входной канал моделей контроллеров. Например, присвойте имя 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 с пропорциональной составляющей в диапазоне от 1-2 и интегрального времени от 5-9.
Создайте сетку ПИ-контроллеров с пропорциональной составляющей переменной строки к строке и интегральным временем изменения столбца к столбцу. Для этого начните с массивов, представляющих усиления.
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.4pidstd Контроллер от динамической системы непрерывного времениДинамическая система
представляет собой ПИД-регулятор. Использовать 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.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 в стандартном ПИД форме с использованием 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 к желаемым значениям. (Для получения дополнительной информации смотрите Discretize Continuous-Time Pidstd Controller.) Однако этот метод не вычисляет новые значения коэффициентов усиления и фильтрации для дискретизированного контроллера. Поэтому этот метод может привести к более плохому соответствию между непрерывным временем и дискретным временем pidstd контроллеры, чем использовать c2d.
pidstd2 | pidstddata | pidtune | pidTuner