задержка

Возвратите прошлое значение операнда

Синтаксис

delay(u,tau)
delay(u,tau, History = u0, MaximumDelay = taumax)

Описание

Используйте оператор delay в разделе equations, чтобы относиться к прошлым значениям выражений:

delay(u,tau) = u(t-tau)

Полный синтаксис:

delay(u,tau, History = u0, MaximumDelay = taumax)

Необходимые операнды:

  • u Первый операнд является задержанным выражением Simscape™. Это может быть любое числовое выражение, которое самостоятельно не включает операторы der или delay.

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

Дополнительные операнды могут появиться в любом порядке. Они:

  • History — Возвращаемое значение для начального временного интервала (t <= StartTime + tau). Модули u и u0 должны быть соразмерными. u0 по умолчанию 0.

  • MaximumDelay — Максимальное время задержки. taumax должен быть постоянным или параметрическим выражением с модулем времени. Если вы зададите MaximumDelay = taumax, ошибка периода выполнения будет выпущена каждый раз, когда tau становится больше, чем taumax.

    Примечание

    Необходимо задать MaximumDelay, если время задержки, tau, не является постоянным или параметрическим выражением. Если tau является постоянным или параметрическим выражением, его значение используется в качестве значения по умолчанию для MaximumDelay, то есть, taumax = tau.

В любое время t, delay(u,tau) возвращает значение, аппроксимирующее u (t - tau) для текущего значения tau. А именно, выражение delay(u,tau, History = u0) эквивалентно

if t <= (StartTime + tau)
   return u0(t)
else
   return u(t-tau)
end 

Другими словами, во время начального временного интервала, от запуска симуляции и пока заданное время задержки, tau, не протекло, оператор delay возвращает u0 (или 0, если History не задан). Для времен симуляции, больше, чем tau, оператор delay возвращает прошлое значение выражения, u (t - tau).

Примечание

  • При симуляции модели, которая содержит блоки с задержками, выделением памяти для хранения истории данных управляет параметр Delay memory budget [kB] в Блоке Configuration Решателя. Если этот бюджет превышен, ошибки симуляции. Можно настроить это значение параметров на основе доступных ресурсов памяти.

  • Для рекомендации о том, как линеаризовать модель, которая содержит блоки с задержками, смотрите Линеаризацию с Блоками Линеаризации Simulink.

Примеры

Этот пример показывает реализацию для простой динамической системы:

Файл Simscape смотрит можно следующим образом:

component MyDelaySystem
  parameters
    tau = {1.0,'s'};
  end
  variables
    x = 1.0;
  end
  equations
    x.der == -delay( x,tau,History = 1.0 )*{ 1, '1/s' }; % x' = - x(t - 1)
  end
end

MaximumDelay не требуется, потому что tau постоянный.

Коэффициент умножения { 1, '1/s' } используется, чтобы согласовать модули выражения и его производной времени. Смотрите страницу с описанием der для получения дополнительной информации.

Для других примеров использования оператора delay смотрите источник для PS Постоянная Задержка, и блоки Задержки Переменной PS в библиотеке Simscape Foundation (откройте диалоговое окно блока и щелкните по ссылке Source code).

Переменный Транспортный пример Задержки показывает, как можно смоделировать переменную транспортную задержку с помощью оператора delay. Чтобы видеть детали реализации, откройте модель в качестве примера, посмотрите под маской Транспортной подсистемы Задержки, затем щелкните правой кнопкой по блоку Variable Transport Delay и выберите Simscape> View source code.

Смотрите также

Представленный в R2012a