Абсолютные и истекшие временные Расчеты

Сведения о таймерах

Некоторые блоки требуют значения либо абсолютного времени (то есть времени от начала выполнения программы до настоящего времени), либо истекшего времени (для примера, времени, прошедшего между двумя триггерными событиями). Цели, которые поддерживают модель реального времени (rtModel) структура данных обеспечивает эффективные услуги расчета времени блокам, которые запрашивают абсолютное или истекшее время. Абсолютные и истекшие функции таймера включают

  • Таймеры реализованы как беззнаковые целые числа в сгенерированном коде.

  • В многоскоростных моделях на частоту назначается не более одного таймера. Если никакие блоки, выполняемые с заданной скоростью, не требуют таймера, таймер не назначается этой скорости. Это минимизирует память, выделяемую для таймеров, и значительно уменьшает накладные расходы, связанные с обслуживанием таймеров.

  • Выделение прошедших счетчиков времени для использования блоков в триггируемых подсистемах минимизируется, что дополнительно уменьшает использование памяти и накладные расходы.

  • S-функция и TLC API позволяют вашим S-функциям обращаться к таймерам, в симуляции и генерации кода.

  • Размер слова таймеров определяется пользовательским максимальным значением счетчика, которое вы устанавливаете с параметр конфигурации <reservedrangesplaceholder0> модели. Если вы задаете это значение, таймеры не переполняются. Для получения дополнительной информации смотрите Управление выделением памяти для счетчиков времени.

Смотрите Абсолютные Временные Ограничения для получения дополнительной информации об абсолютном времени и ограничениях, которые он накладывает.

Таймеры для периодических и асинхронных задач

Услуги синхронизации, предоставляемые для блоков, выполняются в рамках периодических задач (то есть задач, выполняемых с базовой скоростью модели или субрейтами).

Генератор кода также обеспечивает поддержку таймера для блоков, выполнение которых является асинхронным по отношению к периодическому источнику синхронизации модели. См. следующие темы:

Распределение таймеров

Если вы создаете или ведете блок S-Function, который требует абсолютных или истекших временных данных, он должен зарегистрировать требование (см. «Доступы» программно). В многоскоростных моделях таймеры распределяются на основе скорости. Для примера рассмотрим модель, структурированную следующим образом:

  • В модели три скорости, A, B и C.

  • Никакие блоки, работающие со скоростью B, не требуют абсолютного или истекшего времени.

  • Два блока, работающие со скоростью C, регистрируют требование для абсолютного времени.

  • Один блок, выполняемый со скоростью A, регистрирует требование для абсолютного времени.

В этом случае генерируются два таймера, работающих на скоростях A и C соответственно. Механизм синхронизации обновляет таймеры по мере выполнения задач, связанных со скоростями A и C. Блоки, выполняющиеся со скоростями A и C, получают временные данные от таймеров, сопоставленных со скоростями A и C

Целочисленные таймеры в сгенерированном коде

В сгенерированном коде таймеры для абсолютного и истекшего времени реализуются как беззнаковые целые числа. Размер по умолчанию является 64 битами. Это объем памяти, выделенный для таймера, если вы задаете Application lifespan (days) параметра конфигурации модели inf. Для приложения со частотой дискретизации 1000 МГц 64-битный счетчик не переполнится более 500 лет. Дополнительные сведения см. в разделах Таймеры в асинхронных задачах и Управление выделением памяти для счетчиков времени.

Счетчики истекшего времени в триггируемых подсистемах

Некоторые блоки, такие как блок Интегратора Дискретного Времени, выполняют расчеты, требующие истекшего времени (delta T) с момента предыдущего выполнения блока. Блоки, требующие истекших временных данных, должны зарегистрировать требование (см. «Таймеры доступа» «Программно»). Затем триггируемая подсистема выделяет и поддерживает один истекший счетчик времени, если требуется. Этот таймер функционирует на уровне подсистемы, а не на уровне отдельных блоков. Таймер генерируется, если триггируемая подсистема (или безусловно выполненная подсистема внутри триггируемой подсистемы) содержит один или несколько блоков, требующих истекших временных данных.

Примечание

Если вы используете упрощенный режим инициализации, истекшее время сбрасывается при первом выполнении после включения, независимо от того, сконфигурирована ли подсистема для сброса при включении. Для получения дополнительной информации см. Раздел «Недоопределенное обнаружение инициализации».

Похожие темы