Определение задержек

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

Задержки моделей LTI

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

  • InputDelay, чтобы задать задержки во входных параметрах

  • OutputDelay, чтобы задать задержки при выходных параметрах

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

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

  • InputDelay, чтобы задать задержки во входных параметрах

  • OutputDelay, чтобы задать задержки при выходных параметрах

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

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

Первый порядок плюс модели потери времени

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

$$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.

Затем рассмотрите мультивход, мультивыведите модель, e.g.,

$$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 данные соответствует динамике, когда все задержки обнуляются (аппроксимация Паде нулевого порядка)

Это не возможно и не желательно посмотреть на передаточную функцию моделей с внутренними задержками. Вместо этого используйте графики временной зависимости и частотные графики, чтобы сравнить и подтвердить модели:

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Ввод

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 2D вход, 2D выходная модель тогда как T SISO. Обратная операция (комбинирующий H и tau создать T) выполняется setDelayModel.