Возврат прошедшего значения операнда
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
является постоянным.
The { 1, '1/s' }
коэффициент умножения используется для согласования модулей выражения и его производной по времени. См. der
Страница с описанием для получения дополнительной информации.
Для других примеров использования delay
оператор исходный код блоков PS Constant Delay и PS Variable Delay в библиотеке Simscape Foundation (откройте диалоговое окно блока и нажмите Source code ссылку).
Пример задержки переменного транспорта показывает, как можно смоделировать задержку переменного транспорта с помощью delay
оператор. Чтобы увидеть детали реализации, откройте модель примера, посмотрите под маской Подсистемы задержки транспорта, затем щелкните правой кнопкой мыши блок Задержка транспорта Переменной и выберите Simscape > View source code.