Main Content

Controlar el comportamiento del gráfico con eventos implícitos

Los eventos implícitos son eventos incorporados que ocurren durante la ejecución de gráficos cuando:

  • El gráfico se activa.

  • El gráfico entra en un estado y este se activa.

  • El gráfico sale de un estado y este se inactiva.

  • El gráfico asigna un valor a un objeto de datos interno.

Estos eventos son implícitos porque no se definen ni se activan explícitamente. Los eventos implícitos son elementos secundarios del gráfico en el que se producen y solo se ven en el gráfico principal.

Eventos implícitos basados en la ejecución de gráficos

La palabra clave tick especifica el evento implícito generado cuando un gráfico se activa en una simulación de tiempo discreto.

Por ejemplo, en este gráfico, Fan y Heater son estados paralelos (AND). Cada estado tiene un par de subestados, On y Off. En un principio, los subestados Fan.Off y Heater.Off están activos. Cada vez que el gráfico se activa, genera un evento tick. El tercer tick activa la transición de Heater.Off a Heater.On. De forma similar, el cuarto tick activa la transición de Fan.Off a Fan.On. En el octavo tick, el gráfico vuelve a pasar a Fan.Off y Heater.Off.

Stateflow chart that uses the implicit event tick.

Para obtener más información sobre el operador de lógica temporal after, consulte Controlar la ejecución de gráficos con lógica temporal.

Nota

El evento tick se refiere al gráfico que contiene la acción que se está evaluando. El evento no puede referirse a un gráfico diferente.

Eventos implícitos basados en datos y estados

En los gráficos de Stateflow® en modelos de Simulink®, estos operadores generan eventos implícitos cuando un gráfico establece el valor de una variable o cuando entra o sale de un estado.

OperadorSintaxisDescripciónEjemplo
change

change(data_name)

chg(data_name)

Genera un evento local implícito cuando el gráfico establece el valor de la variable data_name.

Defina un evento local implícito cuando una acción de estado o transición escribe un valor en la variable Engine.rpm.

change(Engine.rpm)

enter

enter(state_name)

en(state_name)

Genera un evento local implícito cuando el estado especificado state_name se activa.

Defina un evento local implícito cuando la ejecución del gráfico entra en el estado Fan.On.

enter(Fan.On)

exit

exit(state_name)

ex(state_name)

Genera un evento local implícito cuando el estado especificado state_name se desactiva.

Defina un evento local implícito cuando la ejecución del gráfico sale del estado Fan.Off.

exit(Fan.Off)

Si más de un estado u objeto de datos tiene el mismo nombre, utilice la notación de puntos para calificar el nombre del estado. Para obtener más información, consulte Identify Data by Using Dot Notation.

Por ejemplo, en este gráfico, Fan y Heater son estados paralelos (AND). Cada estado tiene un par de subestados, On y Off. En un principio, los subestados Fan.Off y Heater.Off están activos. Cada vez que el gráfico se activa, genera un evento tick que activa la transición de Fan.Off a Fan.On. Cuando Fan.Off se desactiva, el gráfico genera otro evento implícito que desencadena la transición de Heater.Off a Heater.On. Cuando la ejecución del gráfico finaliza, los subestados Fan.On y Heater.On se activan.

Stateflow chart that uses the implicit event exit.

Nota

Si un mismo evento implícito desencadena múltiples transiciones en estados paralelos, el orden en que se ejecutan las transiciones no coincide necesariamente con el orden de ejecución de los estados paralelos. Para evitar comportamientos inesperados y garantizar que las transiciones se ejecuten en el orden especificado para los estados paralelos, no utilice eventos implícitos. En cambio, utilice condiciones de transición que llamen a operadores como in o hasChanged. Para obtener más información, consulte Check State Activity by Using the in Operator y Detect Changes in Data and Expression Values.

Consulte también

| | | | |

Temas relacionados