Возвратите прошлое значение операнда
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.
Этот пример показывает реализацию для простой динамической системы:
Файл 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.