Расчет абсолютного и прошедшего времени

О таймерах

Определенные блоки требуют значения любого абсолютного времени (то есть, времени от запуска выполнения программы к настоящему времени) или прошедшее время (например, время протекло между двумя триггерными событиями). Цели, которые поддерживают модель реального времени (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 бита. Это - объем памяти, выделенный для таймера, если вы устанавливаете параметр конфигурации модели Application lifespan (days) (Simulink) к inf. Для приложения с частотой дискретизации 1 000 МГц 64-битный счетчик не переполнится больше 500 лет. Смотрите Таймеры в Асинхронных Задачах и Выделении Управляющей памяти для Счетчиков времени для получения дополнительной информации.

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

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

Примечание

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

Похожие темы