В этом примере показано, как Control System Toolbox™ позволяет вам представлять, манипулировать и анализировать любую модель LTI с конечным количеством задержек. Задержки могут быть на входах или выходах системы, между определенными парами ввода-вывода или внутренними для модели (пример, внутри цикла обратной связи).
Передаточная функция (TF), нули , полюса и усиления (ZPK) и данными частотной характеристики (FRD) предлагают три свойства для задержек моделирования:
InputDelay, для задания задержек на входах
OutputDelay, для задания задержек на выходах
IODelay, для определения независимых транспортных задержек для каждой пары ввода-вывода.
Объект пространства состояний (SS) также имеет три связанных с задержкой свойства:
InputDelay, для задания задержек на входах
OutputDelay, для задания задержек на выходах
Внутренняя задержка, чтобы отслеживать задержки при объединении моделей или закрытии циклов обратной связи.
Способность отслеживать внутренние задержки делает представление пространства состояний наиболее подходящим для моделирования и анализа эффектов задержки в системах управления. В этом руководстве показано, как создавать системы с задержками и управлять ими. Для получения дополнительной информации о том, как анализировать эффекты задержки, смотрите Анализ систем управления с задержками.
Модели первого порядка и мертвого времени обычно используются в приложениях управления процессами. Одним из таких примеров является:
Чтобы задать эту передаточную функцию, используйте
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')
Если модель процесса имеет несколько выходов, например:
можно использовать свойство 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.
Далее рассмотрим мультивход, несколькими выходами, например,
Здесь задержки различны для каждой пары ввода-вывода, поэтому необходимо использовать свойство 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 с задержками транспорта между конкретными парами ввода-вывода. Хотя этого достаточно, чтобы смоделировать многие процессы, этот класс моделей недостаточно общий, чтобы анализировать большинство систем управления с задержками, включая простые циклы обратной связи с задержками. Для примера рассмотрим параллельное соединение:
Получившаяся передаточная функция
не может быть представлена как обычная передаточная функция с задержкой на входе или выходе. Чтобы представлять, мы должны переключиться на представление пространства состояний и использовать понятие «внутренняя задержка». Модели пространства состояний (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
чтобы автоматически позаботиться о проводке. Предположим, например, что вы хотите добавить feedforward к циклу управления, показанному на рисунке 1:
Фигура 2. Управление Feedforward и обратной связью.
Можно вывести соответствующую модель замкнутой системы 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
, type
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])
Объекты в пространстве состояний используют обобщенные уравнения в пространстве состояний, чтобы отслеживать внутренние задержки. Концептуально такие модели состоят из двух взаимосвязанных частей:
Модель обыкновенного пространства состояний 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
.