В этом примере показано, как Toolbox™ системы управления позволяет представлять, управлять и анализировать любую модель LTI с конечным числом задержек. Задержки могут быть на системных входах или выходах, между определенными парами ввода-вывода или внутренними для модели (например, внутри контура обратной связи).
Объекты передаточной функции (TF), усиления нулевого полюса (ZPK) и данных частотного отклика (FRD) предлагают три свойства для моделирования задержек:
InputDelay, чтобы указать задержки на входах
OutputDelay, для указания задержек на выходах
IODelay, чтобы указать независимые задержки передачи для каждой пары ввода-вывода.
Объект state-space (SS) также имеет три свойства, связанные с задержкой:
InputDelay, чтобы указать задержки на входах
OutputDelay, для указания задержек на выходах
InternalDelay, чтобы отслеживать задержки при объединении моделей или замыкании петель обратной связи.
Способность отслеживать внутренние задержки делает представление состояния-пространства наиболее подходящим для моделирования и анализа эффектов задержки в системах управления. В этом учебном пособии показано, как создавать системы с задержками и управлять ими. Дополнительные сведения об анализе эффектов задержки см. в разделе Анализ систем управления с задержками.
Модели первого порядка и мертвого времени обычно используются в приложениях управления процессами. Одним из таких примеров является:

Для определения этой функции переноса используйте
num = 5;
den = [1 1];
P = tf(num,den,'InputDelay',3.4)
P =
5
exp(-3.4*s) * -----
s + 1
Continuous-time transfer function.
Как и ожидалось, ответ на шаг P является сдвинутой версией ответа без задержки:
P0 = tf(num,den); step(P0,'b',P,'r')

Если модель процесса имеет несколько выходов, например:
![$$P(s) = \left[\matrix{{5 e^{-3.4 s} \over s+1} \cr {-2 e^{-2.7 s} \over s+3} }\right] , $$](../../examples/control/win64/GSSpecifyingDelays_eq02332031434049787878.png)
можно использовать свойство OutputDelay, чтобы указать различную задержку для каждого выходного канала:
num = {5 ; -2};
den = {[1 1] ; [1 3]};
P = tf(num,den,'OutputDelay',[3.4 ; 2.7])
P =
From input to output...
5
1: exp(-3.4*s) * -----
s + 1
-2
2: exp(-2.7*s) * -----
s + 3
Continuous-time transfer function.
Далее рассмотрим модель с множеством входов и множеством выходов, например,
![$$P(s) = \left[\matrix{{5 e^{-3.4 s} \over s+1} & 1 \cr {-2 e^{-2.7 s} \over s+3} & {e^{-0.7 s} \over s} }\right] . $$](../../examples/control/win64/GSSpecifyingDelays_eq16792653660459801302.png)
Здесь задержки различны для каждой пары ввода-вывода, поэтому необходимо использовать свойство IODelay:
num = {5 , 1; -2 1};
den = {[1 1] , 1; [1 3], [1 0]};
P = tf(num,den,'IODelay',[3.4 0;2.7 0.7]);
Более прямой и буквальный способ указать эту модель - ввести переменную Лапласа «s» и использовать арифметику передаточной функции:
s = tf('s');
P = [ 5*exp(-3.4*s)/(s+1) , 1 ; -2*exp(-2.7*s)/(s+3) , exp(-0.7*s)/s ]
P =
From input 1 to output...
5
1: exp(-3.4*s) * -----
s + 1
-2
2: exp(-2.7*s) * -----
s + 3
From input 2 to output...
1: 1
1
2: exp(-0.7*s) * -
s
Continuous-time transfer function.
Обратите внимание, что в этом случае MATLAB ® автоматически решает, как распределять задержки между свойствами InputDelay, OutputDelay и IODelay.
P.InputDelay P.OutputDelay P.IODelay
ans =
0
0
ans =
0
0.7000
ans =
3.4000 0
2.0000 0
Функция totaldelay суммирует значения задержки ввода, вывода и ввода-вывода, чтобы вернуть введенные значения:
totaldelay(P)
ans =
3.4000 0
2.7000 0.7000
Рассмотрим модель «состояние-пространство»:

Следует отметить, что входной сигнал u (t) задерживается на 2,5 секунды. Чтобы указать эту модель, введите:
sys = ss(-1,1,12,0,'InputDelay',2.5)
sys =
A =
x1
x1 -1
B =
u1
x1 1
C =
x1
y1 12
D =
u1
y1 0
Input delays (seconds): 2.5
Continuous-time state-space model.
Связанная модель

Здесь 2,5-секундная задержка находится на выходе, как видно при перезаписи этих уравнений состояния как:

Поэтому можно указать эту модель как:
sys1 = ss(-1,1,12,0,'OutputDelay',2.5);
Обратите внимание, что обе модели имеют одинаковый ответ ввода-вывода, подтвержденный
step(sys,'b',sys1,'r--')

Однако их траектории состояния не одинаковы, потому что штаты x и x1 связаны

До сих пор мы рассматривали только модели LTI с задержками транспортировки между определенными парами ввода-вывода. Хотя этого достаточно для моделирования многих процессов, этот класс моделей недостаточно общий для анализа большинства систем управления с задержками, включая простые петли обратной связи с задержками. Например, рассмотрим параллельное соединение:

Результирующая передаточная функция

не может быть представлена как обычная передаточная функция с задержкой на входе или выходе. Для представления
мы должны перейти на представление «государство-пространство» и использовать понятие «внутренняя задержка». Модели state-space (SS) имеют возможность отслеживать задержки при соединении систем. Структурная информация о местоположении задержки и их связи с оставшейся динамикой кодируется эффективным и полностью общим образом. Добавление передаточных функций
и
вместе автоматически вычисляет представление состояния-пространства:
H1 = 1/(s+2); H2 = 5*exp(-3.4*s)/(s+1); H = H1 + H2
H =
A =
x1 x2
x1 -2 0
x2 0 -1
B =
u1
x1 1
x2 2
C =
x1 x2
y1 1 2.5
D =
u1
y1 0
(values computed with all internal delays set to zero)
Internal delays (seconds): 3.4
Continuous-time state-space model.
Обратите внимание, что
Значение задержки 3.4 указано как «внутреннее»
Данные A, B, C, D соответствуют динамике, когда все задержки установлены в нуль (аппроксимация Pade нулевого порядка).
Нельзя и не целесообразно рассматривать передаточную функцию моделей с внутренними задержками. Вместо этого используйте графики времени и частоты для сравнения и проверки моделей:
step(H1,H2,H) legend('H1','H2','H','Location','NorthWest'), grid

bode(H1,'b',H-H2,'r--') % verify that H-H2 = H1 grid

Обычно модели пространства состояний с внутренними задержками не создаются путем указания данных A, B, C, D вместе с набором внутренних задержек. Скорее, вы создаете такие модели, соединяя более простые модели LTI (некоторые с задержками ввода-вывода) последовательно, параллельно или с обратной связью. Нет никаких ограничений на то, сколько задержек задействовано и как модели LTI соединены вместе.
Например, рассмотрим контур управления, показанный ниже, где установка моделируется как время ожидания первого порядка плюс время покоя.

Рис. 1. Петля обратной связи с задержкой.
Используя представление состояния-пространства, можно получить модель T для ответа с обратной связью от r до y и имитировать его
P = 5*exp(-3.4*s)/(s+1);
C = 0.1 * (1 + 1/(5*s));
T = feedback(P*C,1);
step(T,100)
grid, title('Closed-loop step response')

Для более сложных взаимосвязей можно назвать входные и выходные сигналы каждого блока и использовать connect для автоматического контроля за проводкой. Предположим, например, что требуется добавить обратную связь к контуру управления, показанному на рис. 1:

Рис. 2: Управление передачей и обратной связью.
Можно выполнить деривацию соответствующей модели с замкнутым контуром. T около
F = 0.3/(s+4); P.u = 'u'; P.y = 'y'; C.u = 'e'; C.y = 'uc'; F.u = 'r'; F.y = 'uf'; Sum1 = sumblk('e = r-y'); Sum2 = sumblk('u = uf+uc'); Tff = connect(P,C,F,Sum1,Sum2,'r','y');
и сравнить его ответ с конструкцией только обратной связи:
step(T,'b',Tff,'r',100) legend('No feedforward','Feedforward') grid, title('Closed-loop step response with and without feedforward')

Особым классом моделей LTI с задержками являются уравнения состояния-пространства с запаздывающими слагаемыми. Общая форма:


Функция delayss помогает указать такие модели. Например, рассмотрим

Чтобы создать эту модель, укажите Aj,Bj,Cj,Dj для каждой задержки и использования delayss для сборки модели:
DelayT(1) = struct('delay',0.5,'a',0,'b',2,'c',1,'d',0); % tau1=0.5 DelayT(2) = struct('delay',1.2,'a',-1,'b',0,'c',0,'d',0); % tau2=1.2 sys = delayss(-1,0,0,1,DelayT)
sys =
A =
x1
x1 -2
B =
u1
x1 2
C =
x1
y1 1
D =
u1
y1 1
(values computed with all internal delays set to zero)
Internal delays (seconds): 0.5 0.5 1.2
Continuous-time state-space model.
Обратите внимание, что A,B,C,D для всех задержек установлены нулевые значения. Ответ на эти значения не должен быть близок к фактическому ответу с задержками:
step(sys,'b',pade(sys,0),'r')

Дискретные временные задержки обрабатываются аналогичным образом с некоторыми незначительными различиями:
Дискретные временные задержки всегда кратны целому периоду выборки
Дискретные временные задержки эквивалентны полюсам при z = 0, поэтому всегда возможно поглощать задержки в динамике модели. Однако сохранение отдельных задержек лучше для производительности, особенно для систем с большими задержками по сравнению с периодом выборки.
Задание модели первого порядка

с периодом выборки Ts = 0,1, использовать
H = tf(2,[1 -0.95],0.1,'inputdelay',25)
step(H)
H =
2
z^(-25) * --------
z - 0.95
Sample time: 0.1 seconds
Discrete-time transfer function.

Эквивалентное представление состояния-пространства
H = ss(H)
H =
A =
x1
x1 0.95
B =
u1
x1 2
C =
x1
y1 1
D =
u1
y1 0
Input delays (sampling periods): 25
Sample time: 0.1 seconds
Discrete-time state-space model.
Следует отметить, что задержки сохраняются отдельно от полюсов. Далее рассмотрим цикл обратной связи ниже, где g является чистым усилением.

Рис. 3: Контур дискретной временной обратной связи.
Чтобы вычислить отклик замкнутого цикла для g=0.01, тип
g = .01; T = feedback(g*H,1) step(T)
T =
A =
x1
x1 0.93
B =
u1
x1 2
C =
x1
y1 0.01
D =
u1
y1 0
(values computed with all internal delays set to zero)
Internal delays (sampling periods): 25
Sample time: 0.1 seconds
Discrete-time state-space model.

Обратите внимание, что T все еще является моделью первого порядка с внутренней задержкой в 25 выборок. Для сравнения сопоставьте все задержки полюсам при z = 0 с помощьюabsorbDelay:
T1 = absorbDelay(T); order(T1)
ans =
26
Полученная модель имеет 26 состояний и поэтому менее эффективна в моделировании. Обратите внимание, что пошаговые ответы T и T1 точно соответствует ожидаемому значению:
step(T,'b',T1,'r--')

В целом, рекомендуется сохранять задержки раздельными, за исключением случаев анализа динамики замкнутого цикла моделей с внутренними задержками:
rlocus(H) axis([-1 2 -1 1])

Объекты state-space используют обобщенные уравнения state-space для отслеживания внутренних задержек. Концептуально такие модели состоят из двух взаимосвязанных частей:
Обычная модель состояния-пространства H(s) с дополненным набором ввода-вывода
Банк внутренних задержек.

Рис. 4: Внутреннее представление моделей государственного пространства с внутренними задержками.
Соответствующие уравнения состояния-пространства:

Вам не нужно беспокоиться с этим внутренним представлением, чтобы использовать инструменты. Однако, если по какой-то причине вы хотите извлечь H или матрицы A,B1,B2,..., вы можете сделать это с помощью getDelayModel. Для примера
P = 5*exp(-3.4*s)/(s+1);
C = 0.1 * (1 + 1/(5*s));
T = feedback(P*C,1);
[H,tau] = getDelayModel(T,'lft');
size(H)
State-space model with 2 outputs, 2 inputs, and 2 states.
Обратите внимание, что H является моделью с двумя входами и двумя выходами, в то время как T является SISO. Обратная операция (объединение H и tau построить T) выполняется setDelayModel.