exponenta event banner

задержка

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

Синтаксис

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™. Это может быть любое числовое выражение, которое само по себе не включает delay или der операторов.

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

  • Рекомендации по линеаризации модели, содержащей блоки с задержками, см. в разделе Линеаризация с блоками линеаризации Simulink.

Примеры

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

x˙=−x (t 1) x (t < 0) = 1

Файл 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 Constant Delay и PS Variable Delay в библиотеке Simscape Foundation (откройте диалоговое окно блока и щелкните ссылку Source code).

Пример переменной задержки переноса показывает, как можно моделировать переменную задержку переноса с помощью delay оператор. Чтобы просмотреть сведения о реализации, откройте пример модели, посмотрите под маской подсистемы задержки передачи, затем щелкните правой кнопкой мыши блок «Переменная задержка передачи» и выберите Simscape > View source code.

См. также

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