Некоторые блоки требуют значения либо абсолютного времени (то есть времени от начала выполнения программы до текущего времени), либо истекшего времени (например, время, прошедшее между двумя триггерными событиями). Цели, поддерживающие модель в реальном времени (rtModel) структура данных обеспечивает эффективные услуги вычисления времени для блоков, которые запрашивают абсолютное или прошедшее время. Абсолютные и истекшие функции таймера включают
Таймеры реализуются как целые числа без знака в сгенерированном коде.
В многоскоростных моделях на скорость назначается не более одного таймера. Если ни один блок, выполняющийся на заданной скорости, не требует таймера, таймер не назначается этой скорости. Это минимизирует объем памяти, выделяемой таймерам, и значительно снижает издержки, связанные с обслуживанием таймеров.
Минимизируется распределение счетчиков прошедшего времени для использования блоков в запускаемых подсистемах, что дополнительно снижает использование памяти и накладные расходы.
S-function и TLC API позволяют S-функциям получать доступ к таймерам при моделировании и генерации кода.
Размер слов таймеров определяется указанным пользователем максимальным значением счетчика, которое задается параметром конфигурации модели Срок службы приложения (дней). Если указать это значение, таймеры не будут переполняться. Дополнительные сведения см. в разделе Управление распределением памяти для счетчиков времени.
Дополнительные сведения об абсолютном времени и его ограничениях см. в разделе Абсолютные временные ограничения.
Услуги синхронизации, предоставляемые блокам, выполняются в рамках периодических задач (то есть задач, выполняемых на базовой скорости модели или субрейтах).
Генератор кода также обеспечивает поддержку таймера для блоков, исполнение которых асинхронно по отношению к периодическому источнику синхронизации модели. См. следующие разделы:
Если создается или поддерживается блок S-Function, который требует абсолютных или истекших временных данных, он должен зарегистрировать требование (см. Программные таймеры доступа). В многоскоростных моделях таймеры назначаются для каждой скорости. Например, рассмотрим модель, структурированную следующим образом:
В модели есть три скорости, A, B и C.
Ни один блок, работающий со скоростью B, не требует абсолютного или истекшего времени.
Два блока, работающие на скорости C, регистрируют требование абсолютного времени.
Один блок, работающий на скорости A, регистрирует требование абсолютного времени.
В этом случае генерируются два таймера, работающие на скоростях А и С соответственно. Механизм синхронизации обновляет таймеры по мере выполнения задач, связанных со скоростями A и C. Блоки, выполняющиеся на скоростях A и C, получают временные данные от таймеров, связанных со скоростями A и C.
В сгенерированном коде таймеры для абсолютного и прошедшего времени реализуются как беззнаковые целые числа. Размер по умолчанию - 64 бита. Это объем памяти, выделенный для таймера, если для параметра конфигурации модели Срок службы приложения (дней) задано значение inf. Для приложения с частотой дискретизации 1000 МГц 64-битный счетчик не будет переполняться более 500 лет. Дополнительные сведения см. в разделе Таймеры в асинхронных задачах и управление выделением памяти для счетчиков времени.
Некоторые блоки, такие как блок интегратора дискретного времени, выполняют вычисления, требующие прошедшего времени (дельта Т) с момента выполнения предыдущего блока. Блоки, требующие данных прошедшего времени, должны зарегистрировать требование (см. Программные таймеры доступа). При необходимости инициируемая подсистема выделяет и поддерживает один счетчик времени. Этот таймер функционирует на уровне подсистемы, а не на уровне отдельного блока. Таймер генерируется, если запускаемая подсистема (или безусловно выполняемая подсистема в пределах запускаемой подсистемы) содержит один или несколько блоков, требующих данных прошедшего времени.
Примечание
Если используется упрощенный режим инициализации, то истекшее время сбрасывается при первом выполнении после включения, независимо от того, настроена ли подсистема на сброс при включении. Дополнительные сведения см. в разделе Обнаружение неполной инициализации.