Определение временных задержек

В этом примере показано, как Control System Toolbox™ позволяет вам представлять, манипулировать и анализировать любую модель LTI с конечным количеством задержек. Задержки могут быть на входах или выходах системы, между определенными парами ввода-вывода или внутренними для модели (пример, внутри цикла обратной связи).

Задержки в моделях LTI

Передаточная функция (TF), нули , полюса и усиления (ZPK) и данными частотной характеристики (FRD) предлагают три свойства для задержек моделирования:

  • InputDelay, для задания задержек на входах

  • OutputDelay, для задания задержек на выходах

  • IODelay, для определения независимых транспортных задержек для каждой пары ввода-вывода.

Объект пространства состояний (SS) также имеет три связанных с задержкой свойства:

  • InputDelay, для задания задержек на входах

  • OutputDelay, для задания задержек на выходах

  • Внутренняя задержка, чтобы отслеживать задержки при объединении моделей или закрытии циклов обратной связи.

Способность отслеживать внутренние задержки делает представление пространства состояний наиболее подходящим для моделирования и анализа эффектов задержки в системах управления. В этом руководстве показано, как создавать системы с задержками и управлять ими. Для получения дополнительной информации о том, как анализировать эффекты задержки, смотрите Анализ систем управления с задержками.

Модели первого порядка Plus Dead Time

Модели первого порядка и мертвого времени обычно используются в приложениях управления процессами. Одним из таких примеров является:

$$P(s) = {5 e^{-3.4 s} \over s+1} $$

Чтобы задать эту передаточную функцию, используйте

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] , $$

можно использовать свойство 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] . $$

Здесь задержки различны для каждой пары ввода-вывода, поэтому необходимо использовать свойство 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

Модели в пространстве состояний с входами и выхода

Рассмотрим модель пространства состояний:

$$ {dx \over dt} = - x(t) + u(t-2.5) , \;\; y(t) = 12 x(t) . $$

Обратите внимание, что входной сигнал 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.

Связанная модель является

$$ {dx_1 \over dt} = - x_1(t) + u(t) , \;\; y(t) = 12 x_1(t-2.5) . $$

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

$$ {dx_1 \over dt} = - x_1(t) + u(t) , \;\; y_1(t) = 12 x_1(t) , \;\;
y(t) = y_1(t-2.5) . $$

Поэтому можно задать эту модель как:

sys1 = ss(-1,1,12,0,'OutputDelay',2.5);

Обратите внимание, что обе модели имеют тот же ответ ввода-вывода, что подтверждено

step(sys,'b',sys1,'r--')

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

$$ x(t) = x_1 (t-2.5) $$

Объединение моделей с задержками ввода-вывода

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

$$ H(s) = H_1(s) + H_2(s) = {1 \over s+2} + {5 e^{-3.4 s} \over s+1} $$

Получившаяся передаточная функция

$$ H(s) = {s + 1 + (5 s + 10) e^{-3.4 s} \over (s+1)(s+2) } $$

не может быть представлена как обычная передаточная функция с задержкой на входе или выходе. Чтобы представлять, $H(s)$мы должны переключиться на представление пространства состояний и использовать понятие «внутренняя задержка». Модели пространства состояний (SS) имеют возможность отслеживать задержки при соединении систем вместе. Структурная информация о местоположении задержки и их связи с оставшейся динамикой кодируется эффективным и полностью общим образом. Добавление передаточных функций$H_1(s)$ и $H_2(s)$вместе автоматически вычисляет представление пространства состояний:$H(s)$

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 с задержками являются уравнениями в пространстве состояний с задержанными терминами. Общая форма

$$ {dx \over dt} = A x(t) + B u(t) + \sum_j ( A_j x(t-\tau_j) + B_j u(t-\tau_j) ) $$

$$ y(t) = C x(t) + D u(t) + \sum_j ( C_j x(t-\tau_j) + B_j u(t-\tau_j) ) $$

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

$${dx \over dt} = -x(t) - x(t-1.2) + 2 u(t-0.5) , \;\; y(t) = x(t-0.5) + u(t) $$

Чтобы создать эту модель, задайте 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, поэтому всегда можно поглощать задержки в динамику модели. Однако сохранение задержек отдельно лучше для эффективности, особенно для систем с длительными задержками по сравнению с периодом дискретизации.

Чтобы задать модель первого порядка

$$ H(z) = z^{-25} { 2 \over z - 0.95 } $$

с периодом дискретизации 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: Внутреннее представление моделей пространства состояний с внутренними задержками.

Соответствующие уравнения в пространстве состояний

$$\matrix{ \dot{x}(t) = A x(t) + B_1 u(t) + B_2 w(t) \;\;\;\; \cr
 y(t) = C_1 x(t) + D_{11} u(t) + D_{12} w(t) \cr
 z(t) = C_2 x(t) + D_{21} u(t) + D_{22} w(t) \cr
 w_j(t) = z_j(t - \tau_j) , \;\; j = 1,...,N } \;\;\;\; \;\;\;\; $$

Вам не нужно беспокоиться об этом внутреннем представлении, чтобы использовать инструменты. Однако, если по какой-то причине вы хотите извлечь 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.