Controlar la ejecución de gráficos con transiciones internas
Una transición interna es una transición que no sale del estado de origen. Las transiciones internas son útiles cuando se definen para superestados con descomposición exclusiva (OR). El uso de transiciones internas puede simplificar en gran medida un gráfico de Stateflow®, tal y como se muestra en los siguientes ejemplos:
Antes de utilizar una transición interna
Este gráfico es un ejemplo de cómo simplificar la lógica utilizando una transición interna.
Se produce cualquier evento y se activa el gráfico de Stateflow. La transición predeterminada a la intersección conectiva es válida. El destino de la transición viene determinado por [c1 > 0]
y [c2 > 0]
. Si [c1 > 0]
es verdadera, la transición a A1
es verdadera. Si [c2 > 0]
es verdadera, la transición a A2
es válida. Si ni [c1 > 0]
ni [c2 > 0]
son verdaderas, la transición a A3
es válida. Las transiciones entre A1
, A2
y A3
vienen determinadas por E
, [c1 > 0]
y [c2 > 0]
.
Después de utilizar una transición interna a una intersección conectiva
Este ejemplo simplifica el ejemplo anterior utilizando una transición interna a una intersección conectiva.
Se produce un evento y se activa el gráfico. La transición predeterminada a la intersección conectiva es válida. El destino de las transiciones viene determinado por [c1 > 0]
y [c2 > 0]
.
Puede simplificar el gráfico utilizando una transición interna en lugar de las transiciones entre todos los estados en el ejemplo original. Si el estado A
ya está activo, la transición interna se utiliza para volver a evaluar cuáles de los subestados del estado A
debe estar activo. Cuando se produce el evento E
, la transición interna es posiblemente válida. Si [c1 > 0]
es verdadera, la transición a A1
es válida. Si [c2 > 0]
es verdadera, la transición a A2
es válida. Si ni [c1 > 0]
ni [c2 > 0]
son verdaderas, la transición a A3
es válida. Este diseño de gráfico es más sencillo que el anterior.
Nota
Cuando utiliza una transición interna a una intersección conectiva, un subestado activo puede salir y volver a entrar cuando la condición de transición para ese subestado es válida. Por ejemplo, si el subestado A1
está activo y [c1 > 0]
es verdadera, la transición a A1
es válida. En este caso:
Las acciones exit para
A1
se ejecutan y se completan.A1
se convierte en inactivo.A1
se convierte en activo.Las acciones entry para
A1
se ejecutan y se completan.
Consulte Process the First Event with an Inner Transition to a Connective Junction para obtener más información sobre la semántica de esta notación.
Utilizar una transición interna a una intersección histórica
Este ejemplo muestra una transición interna a una intersección histórica.
El estado Power_on.High
está activo inicialmente. Cuando se produce el evento Reset
, la transición interna a la intersección histórica es válida. Dado que la transición interna es válida, se sale del estado actual activo, Power_on.High
. Cuando se procesa la transición interna a la intersección histórica, el último estado activo, Power_on.High
, se activa (se vuelve a entrar en él). Si Power_on.Low
estaba activo en las mismas circunstancias, se saldría de Power_on.Low
y se volvería a entrar como resultado. La transición interna en este ejemplo es equivalente a representar una transición de autobucle externa tanto en Power_on.Low
como en Power_on.High
.
Consulte Inner Transition to a History Junction para obtener más información sobre la semántica de esta notación.