Определенные блоки требуют значения любого абсолютного времени (то есть, времени от запуска выполнения программы к настоящему времени) или прошедшее время (например, время протекло между двумя триггерными событиями). Цели, которые поддерживают модель реального времени (rtModel
) структура данных, предоставляют эффективные услуги вычисления времени блокам, которые запрашивают абсолютное или прошедшее время. Абсолютные и прошедшие функции таймера включают
Таймеры реализованы как беззнаковое целое в сгенерированном коде.
В многоскоростных моделях самое большее один таймер выделяется на уровень. Если никакие блоки, выполняющиеся на данном уровне, не требуют таймера, таймер не выделяется тому уровню. Это минимизирует память, выделенную для таймеров, и значительно уменьшает наверху вовлеченный в поддержание таймеров.
Выделение счетчиков прошедшего времени для использования блоков в инициированных подсистемах минимизировано, далее уменьшающее использование памяти и наверху.
S-функция и API TLC позволяют вашим таймерам доступа S-функций в симуляции и генерации кода.
Размер слова таймеров определяется заданным пользователями максимальным встречным значением, Application lifespan (days) (Simulink). Если вы зададите это значение, таймеры не переполнятся. Для получения дополнительной информации смотрите Выделение Управляющей памяти для Счетчиков времени (Simulink Coder).
Смотрите Абсолютные Ограничения Времени (Simulink Coder) для получения дополнительной информации в абсолютное время и ограничения, которые это вводит.
Синхронизация сервисов предусмотрела блоки, выполняются в периодических задачах (то есть, задачи, запускающиеся в образцовой базовой ставке или подуровнях).
Генератор кода также оказывает поддержку таймера для блоков, выполнение которых является асинхронным относительно периодического источника синхронизации модели. Смотрите следующие темы:
Если вы создаете или поддерживаете Блок s-function, который требует данных абсолютного или прошедшего времени, это должно указать требование (см. доступ к Таймерам Программно). В многоскоростных моделях таймеры выделяются на основе на уровень. Например, считайте модель структурированной можно следующим образом:
Существует три уровня, A, B, и C, в модели.
Никакие блоки, запускающиеся на уровне B, не требуют абсолютного или прошедшего времени.
Два блока, запускающиеся на уровне C, указывают требование в течение абсолютного времени.
Один блок, запускающийся на уровне регистры требование в течение абсолютного времени.
В этом случае два таймера сгенерированы, запускающийся на уровнях A и C соответственно. Механизм синхронизации обновляет таймеры как задачи, сопоставленные с уровнями A, и C выполняются. Блоки, выполняющиеся на уровнях A и C, получают данные времени из таймеров, сопоставленных с уровнями A и C.
В сгенерированном коде таймеры в течение абсолютного и прошедшего времени реализованы как беззнаковое целое. Размер по умолчанию составляет 64 бита. Это - объем памяти, выделенный для таймера, если вы задаете значение inf
для Application lifespan (days) (Simulink) параметр. Для приложения с частотой дискретизации 1 000 МГц 64-битный счетчик не переполнится больше 500 лет. Смотрите Таймеры в Асинхронных Задачах и Выделении Управляющей памяти для Счетчиков времени для получения дополнительной информации.
Некоторые блоки, такие как блок Discrete-Time Integrator, выполняют вычисления, требующие прошедшего времени (дельта T) начиная с предыдущего выполнения блока. Блоки, требующие данных прошедшего времени, должны указать требование (см. доступ к Таймерам Программно). Инициированная подсистема затем выделяет и поддерживает один счетчик прошедшего времени при необходимости. Это таймерные функции при уровне подсистемы, не на отдельном блочном уровне. Таймер сгенерирован, если инициированная подсистема (или безусловно выполняемая подсистема в инициированной подсистеме) содержат один или несколько блоков, требующих данных прошедшего времени.
Если вы используете упрощенный режим инициализации, прошедшее время сбрасывается на первом выполнении после становления активированным, сконфигурирована ли подсистема, чтобы сбросить на, включают. Для получения дополнительной информации смотрите обнаружение инициализации Underspecified (Simulink).