Main Content

after

Ejecutar el gráfico después de la transmisión de un evento o en una unidad de tiempo específica

Descripción

ejemplo

after(n,E) devuelve true si el evento E ha ocurrido al menos n veces desde que el estado asociado se convirtió en activo. De lo contrario, el operador devuelve false.

ejemplo

after(n,tick) devuelve true si el gráfico se ha activado al menos n veces desde que el estado asociado se convirtió en activo. De lo contrario, el operador devuelve false.

El evento implícito tick no está admitido cuando un gráfico de Stateflow® de un modelo de Simulink® cuenta con eventos de entrada.

ejemplo

after(n,time_unit) devuelve true si han transcurrido al menos n unidades de tiempo desde que el estado asociado se convirtió en activo. De lo contrario, el operador devuelve false.

En gráficos de un modelo de Simulink, especifique time_unit como segundos (sec), milisegundos (msec), o microsegundos (usec). Si especifica n como una expresión, el gráfico ajusta el retardo temporal cuando la expresión va cambiando de valor durante la simulación.

En gráficos independientes en MATLAB®, especifique n con un valor mayor que o igual a 0.001 y time_unit como segundos (sec). El operador crea un objeto timer de MATLAB que genera un evento implícito para activar el gráfico. Los objetos timer de MATLAB están limitados a una precisión de 1 milisegundo. Para obtener más información, consulte Events in Standalone Charts.

  • El objeto timer se crea cuando el gráfico termina de ejecutar las acciones entry del estado asociado y sus subestados. Si especifica n como una expresión cuyo valor cambia durante la ejecución del gráfico, dicho gráfico no ajusta el retardo temporal del objeto timer.

  • El objeto timer comienza a ejecutarse al final del paso del gráfico cuando el estado asociado se convierte en activo. Este paso puede incluir la ejecución de otros estados paralelos del gráfico.

  • Si el gráfico está procesando otra operación cuando recibe el evento implícito del objeto timer, el gráfico pone el evento en cola. Cuando el paso en curso se completa, el gráfico procesa el evento.

  • Si el estado asociado con el operador de lógica temporal se convierte en inactivo antes de que el gráfico procese el evento implícito, el evento no activa el gráfico.

Ejemplos

expandir todo

Muestra un mensaje de estado cuando el gráfico procesa una transmisión del evento E, comenzando con la tercera transmisión de E después de que el estado se convirtió en activo.

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

Stateflow chart that uses the after operator in a state.

Realiza una transición de salida del estado asociado cuando el gráfico procese una transmisión del evento E, comenzando en la quinta transmisión de E después de que el estado se convirtió en activo.

after(5,E)

Stateflow chart that uses the after operator in a transition.

Realiza una transición de salida del estado asociado si el estado ha estado activo durante al menos cinco transmisiones del evento E.

En gráficos de un modelo de Simulink, escriba:

[after(5,E)]

Stateflow chart that uses the after operator in a transition.

La notación condicional para operadores de lógica temporal no se admite con gráficos independientes en MATLAB.

Realiza una transición de salida del estado asociado cuando el gráfico se active al menos por séptima vez desde que el estado se convirtió en activo, pero solo si la variable temp es mayor que 98.6.

after(7,tick)[temp > 98.6]

Stateflow chart that uses the after operator in a transition.

Establece la variable temp en LOW cada vez que el gráfico se active, comenzando cuando el estado asociado esté activo durante al menos 12,3 segundos.

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

Stateflow chart that uses the after operator in a state.

Sugerencias

  • Puede encerrar entre comillas las palabras clave 'tick', 'sec', 'msec' y 'usec'. Por ejemplo, after(5,'tick') equivale a after(5,tick).

  • El gráfico de Stateflow restablece el contador utilizado por el operador after cada vez que se reactive el estado asociado.

  • El tiempo de los operadores de lógica temporal de tiempo absoluto depende del tipo de gráfico de Stateflow:

    • Los gráficos de un modelo de Simulink definen la lógica temporal de tiempo absoluto en términos del tiempo de simulación.

    • Los gráficos independientes de MATLAB definen la lógica temporal de tiempo absoluto en términos de tiempo de reloj, que está limitado a una precisión de 1 milisegundo.

    La diferencia en el tiempo puede afectar al comportamiento de un gráfico. Por ejemplo, suponga que este gráfico está ejecutando la acción during del estado 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.

    • En un modelo de Simulink, la llamada de función a f se ejecuta en una única unidad de tiempo y no contribuye al tiempo de simulación. La transición del estado A al estado B tiene lugar la primera vez que se activa el gráfico y el estado A ha estado activo durante al menos 2 segundos. El valor mostrado por la acción entry en el estado B depende únicamente del tamaño de paso utilizado por el solver de Simulink.

    • En un gráfico independiente, la llamada de función a f puede tardar varios segundos de tiempo de reloj en completarse. Si la llamada tarda más de dos segundos, el gráfico pone en cola el evento implícito asociado con el operador after. La transición del estado A al estado B tiene lugar cuando la función f termina de ejecutarse. El valor mostrado por la acción entry en el estado B depende del tiempo que tarda en completarse la llamada de función a f.

Historial de versiones

Introducido en R2014b