after

Выполните график после трансляции события или заданного времени

Описание

пример

after(n,E) возвращает true если событие E произошло по крайней мере n с тех пор как связанное состояние стало активным. В противном случае оператор возвращается false.

пример

after(n,tick) возвращает true если график проснулся хотя бы n с тех пор как связанное состояние стало активным. В противном случае оператор возвращается false.

Неявное tick события не поддерживается, когда Stateflow® график в Simulink® модель имеет входные события.

пример

after(n,time_unit) возвращает true если хотя бы n Модули времени прошли с тех пор, как связанное состояние стало активным. В противном случае оператор возвращается false.

В графиках в модели Simulink задайте time_unit как секунд (sec), миллисекунды (msec), или микросекунды (usec). Если вы задаете n в качестве выражения график корректирует временную задержку, когда выражение изменяет значение во время симуляции.

В автономных диаграммах в MATLAB®, задайте n со значением, большим или равным 0.001 и time_unit как секунд (sec). Оператор создает MATLAB timer объект, который генерирует неявное событие для пробуждения графика. Файлы MATLAB timer объекты ограничены точностью 1 миллисекунда. Для получения дополнительной информации см. раздел События в автономных диаграммах.

  • The timer создается, когда график завершает выполнение entry действия связанного состояния и его подсостояний. Если вы задаете n как выражение, значение которого изменяется во время выполнения диаграммы, график не корректирует временную задержку timer объект.

  • The timer объект начинает запускаться в конце шага графика, когда связанное состояние становится активным. Этот шаг может включать в себя выполнение других параллельных состояний на графике.

  • Если график обрабатывает другую операцию, когда он получает неявное событие от timer объект, график помещает событие в очередь. Когда текущий шаг завершен, график обрабатывает событие.

  • Если состояние, сопоставленное с оператором временной логики, становится неактивным, прежде чем график обработает неявное событие, событие не пробуждает график.

Примеры

расширить все

Отображает сообщение о состоянии, когда график обрабатывает широковещательную передачу события E, начиная с третьей трансляции E после того, как состояние стало активным.

on after(3,E):
   disp('ON');

Stateflow chart that uses the after operator in a state.

Переход из связанного состояния, когда график обрабатывает широковещательную передачу события E, начиная с пятой трансляции E после того, как состояние стало активным.

after(5,E)

Stateflow chart that uses the after operator in a transition.

Переход из связанного состояния, если состояние было активным для по крайней мере пяти широковещательных сообщений события E.

В графиках в модели Simulink введите:

[after(5,E)]

Stateflow chart that uses the after operator in a transition.

Условное обозначение для временных логических операторов не поддерживается в автономных диаграммах в MATLAB.

Переход из связанного состояния, когда график просыпается по крайней мере в седьмой раз после того, как состояние стало активным, но только если переменная temp больше 98,6.

after(7,tick)[temp > 98.6]

Stateflow chart that uses the after operator in a transition.

Установите temp переменная в LOW каждый раз, когда график просыпается, начиная с момента, когда связанное состояние активно в течение не менее 12,3 секунд.

on after(12.3,sec):
   temp = LOW;

Stateflow chart that uses the after operator in a state.

Совет

  • Можно использовать кавычки, чтобы заключить ключевые слова 'tick', 'sec', 'msec', и 'usec'. Для примера, after(5,'tick') эквивалентно after(5,tick).

  • Диаграмма Stateflow сбрасывает счетчик, используемый after оператор каждый раз, когда связанное состояние повторно активируется.

  • Время для абсолютно-временных логических операторов зависит от типа диаграммы Stateflow:

    • Графики в модели Simulink задают абсолютную временную логику с точки зрения времени симуляции.

    • Автономные диаграммы в MATLAB определяют временную логику в абсолютном времени с точки зрения времени настенного времени, которая ограничена точностью 1 миллисекунда.

    Различие во времени может повлиять на поведение графика. Например, предположим, что этот график выполняет during действие состояния A.

    Stateflow chart with two states. The during action in state A calls a function f. The transition to state B uses the expression after(2,sec). The entry action in state B displays the elapsed time.

    • В модели Simulink функция вызывает f выполняется за один временной шаг и не способствует времени симуляции. Переход от состояния A в состояние B происходит при первом пробуждении графика и ее состоянии A активен не менее 2 секунд. Значение, отображаемое entry действие в состоянии B зависит только от размера шага, используемого решателем Simulink.

    • На автономной диаграмме вызов функции f может занять несколько секунд настенного времени. Если вызов длится более двух секунд, график помещает неявное событие, сопоставленное со after оператор. Переход от состояния A в состояние B происходит, когда функция f завершает выполнение. Значение, отображаемое entry действие в состоянии B зависит от времени вызова функции f принимает, чтобы завершить.

Введенный в R2014b