exponenta event banner

переполненный

Определение момента переполнения очереди сообщений

Синтаксис

Описание

пример

overflowed(message_name) проверяет, потеряно ли сообщение, поскольку оно было отправлено в очередь, которая уже была заполнена. На каждом шаге времени значение этого оператора устанавливается, когда диаграмма добавляет сообщение в очередь или удаляет сообщение из очереди. Недопустимо использовать overflowed перед отправкой или извлечением сообщения за один и тот же шаг времени. Для использования overflowed , установите модель в значение autosar.tlc target для моделирования и генерации кода и убедитесь, что сообщение inport или outport соединяется с внешней очередью.

  • Чтобы проверить состояние переполнения очереди входящих сообщений, сначала удалите сообщение из очереди.

  • Чтобы проверить состояние переполнения очереди выходных сообщений, сначала добавьте сообщение в очередь.

  • Чтобы проверить состояние переполнения локальной очереди сообщений, сначала добавьте сообщение в очередь или удалите сообщение из очереди.

Примеры

свернуть все

Проверка входящей или локальной очереди на наличие сообщения M. При наличии сообщения и переполнении очереди происходит переход.

M[overflowed(M)]

Проверка входящей или локальной очереди на наличие сообщения M. Если сообщение присутствует и очередь переполнена, увеличьте значение x.

on M:
if overflowed(M) == true
    x = x+1;
end

Отправьте сообщение и проверьте наличие переполнения. Если очередь переполняется, увеличьте значение x.

entry:
M.data = 3;
send(M);
if overflowed(M) == true
    x = x+1;
end

Совет

  • По умолчанию при переполнении очереди сообщений моделирование прекращается с ошибкой. Чтобы предотвратить ошибку во время выполнения и разрешить overflowed чтобы динамически реагировать на отброшенные сообщения, задайте для свойства «Диагностика переполнения очереди» значение Warning или None. Дополнительные сведения см. в разделе Диагностика переполнения очереди (Stateflow).

Представлен в R2018b