В этом примере показано, как Control System Toolbox™ позволяет вам представлять, управлять и анализировать любую модель LTI с конечным числом задержек. Задержки могут быть при системных вводах или выводах, между определенными парами ввода-вывода, или внутренние к модели (например, в обратной связи).
Передаточная функция (TF), нули, полюса и усиление (ZPK) и объекты данных о частотной характеристике (FRD) предлагает три свойства для моделирования задержек:
InputDelay, чтобы задать задержки во входных параметрах
OutputDelay, чтобы задать задержки при выходных параметрах
IODelay, чтобы задать независимый транспорт задерживается для каждой пары ввода-вывода.
Объект пространства состояний (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')
Если модель процесса имеет несколько выходных параметров, например:
можно использовать свойство 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.
Затем рассмотрите мультивход, мультивыведите модель, e.g.,
Здесь задержки отличаются для каждой пары ввода-вывода, таким образом, необходимо использовать свойство 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 данные соответствует динамике, когда все задержки обнуляются (аппроксимация Паде нулевого порядка)
Это не возможно и не желательно посмотреть на передаточную функцию моделей с внутренними задержками. Вместо этого используйте графики временной зависимости и частотные графики, чтобы сравнить и подтвердить модели:
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
Ввод
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
2D вход, 2D выходная модель тогда как T
SISO. Обратная операция (комбинирующий H
и tau
создать T
) выполняется setDelayModel
.