delay

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

Синтаксис

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

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

Примеры

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

x˙=x(t1)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 является постоянным.

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

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

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

См. также

Введенный в R2012a