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
.
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.
Operador | Sintaxis | Descripción | Ejemplo |
---|---|---|---|
change |
| 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 change(Engine.rpm) |
enter |
| 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 enter(Fan.On) |
exit |
| 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 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.
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
after
| change
| enter
| exit
| hasChanged
| in