Contenido principal

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.

Chart with complex transitions between three substates.

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.

Chart with an inner transition path to three substates.

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:

  1. Las acciones exit para A1 se ejecutan y se completan.

  2. A1 se convierte en inactivo.

  3. A1 se convierte en activo.

  4. 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.

Chart that contains an inner transition to a history junction.

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.