Contenido principal

Controlar la ejecución de gráficos con acciones de condición

Comportamiento de una acción de condición

Este ejemplo muestra el comportamiento de una acción de condición simple en una ruta de transición con múltiples segmentos.

Stateflow chart with states called A, B, and C.

Inicialmente, el gráfico está desactivado. El estado A está activo. Las condiciones C_one y C_two son falsas. Se produce el evento E_one y se activa el gráfico, que procesa el evento desde la raíz hacia abajo a través de la jerarquía:

  1. La raíz del gráfico comprueba si existe una transición válida como resultado de E_one. Se detecta un segmento de transición válido desde el estado A hasta una intersección conectiva. La acción de condición A_one se detecta en el segmento de transición válido y se ejecuta y completa de inmediato. El estado A se mantiene activo.

  2. Dado que las condiciones en los segmentos de transición a posibles destinos son falsas, ninguna de las transiciones completadas es válida.

  3. Las acciones during (durA()) del estado A se ejecutan y se completan.

    El estado A se mantiene activo.

  4. El gráfico vuelve a su estado de inactividad.

Esta secuencia completa la ejecución de este gráfico de Stateflow® asociado al evento E_one cuando el estado A está inicialmente activo.

Comportamiento de una acción de condición y transición

Este ejemplo muestra el comportamiento de una acción de condición y transición simple especificada en una transición desde un estado exclusivo (OR) a otro.

Stateflow chart with states called A and B.

Inicialmente, el gráfico está desactivado. El estado A está activo. La condición C_one es verdadera. Se produce el evento E_one y se activa el gráfico, que procesa el evento desde la raíz hacia abajo a través de la jerarquía:

  1. La raíz del gráfico comprueba si existe una transición válida como resultado de E_one. Se detecta una transición válida desde el estado A al estado B. La condición C_one es verdadera. La acción de condición A_one se detecta en la transición válida y se ejecuta y completa de inmediato. El estado A se mantiene activo.

  2. Las acciones exit (ExitA()) del estado A se ejecutan y se completan.

  3. El estado A está marcado como inactivo.

  4. La acción de transición A_two se ejecuta y completa.

  5. El estado B está marcado como activo.

  6. Las acciones entry (entB()) del estado B se ejecutan y se completan.

  7. El gráfico vuelve a su estado de inactividad.

Esta secuencia completa la ejecución de este gráfico de Stateflow asociado al evento E_one cuando el estado A está inicialmente activo.

Crear acciones de condición con un bucle for

Las acciones de condición y las intersecciones conectivas se utilizan para diseñar una construcción de bucle for. Este ejemplo muestra el uso de una acción de condición y una intersección conectiva para crear una construcción de bucle for.

Stateflow chart with states called A and B.

Consulte For-Loop Construct para ver el comportamiento de este ejemplo.

Transmitir eventos a estados paralelos (AND) con acciones de condición

Este ejemplo muestra cómo utilizar acciones de condición para transmitir eventos de inmediato a estados paralelos (AND).

Stateflow chart with a top-level state called A. A has two parallel substates called A1 and A2. A1 has substates A1a and A1B. A2 has substates A2a and A2b.

Consulte Broadcast Events in Condition Actions para ver el comportamiento de este ejemplo.

Sugerencia

Evite utilizar transmisiones de eventos locales no dirigidas y eventos locales dirigidos que creen lógica de salida anticipada. Estos eventos pueden generar un comportamiento recursivo no deseado en su gráfico. Si el gráfico contiene estos eventos, genera una advertencia cuando se simula el modelo. Para eliminar los eventos que generen recursiones, consulte Evitar una recursión no deseada en un gráfico.

Evitar el comportamiento cíclico

Este ejemplo muestra una notación que se debe evitar cuando se utilizan transmisiones de eventos como acciones de condición, ya que la semántica produce un comportamiento cíclico.

Stateflow chart with states called On and Off.

Inicialmente, el gráfico está desactivado. El estado On está activo. Se produce el evento E_one y se activa el gráfico, que procesa el evento desde la raíz hacia abajo a través de la jerarquía:

  1. La raíz del gráfico comprueba si existe una transición válida como resultado de E_one.

    Se detecta una transición válida desde el estado On al estado Off.

  2. La acción de condición en la transición transmite el evento E_one.

  3. El evento E_one se detecta en la transición válida, que se ejecuta de inmediato. El estado On se mantiene activo.

  4. La transmisión del evento E_one activa el gráfico una segunda vez.

  5. Vaya al paso 1.

Los pasos 1 a 5 se siguen ejecutando de forma cíclica. La etiqueta de transición que indica un activador en el mismo evento que el evento de transmisión de acción de condición produce un comportamiento cíclico irrecuperable. Esta secuencia nunca se completa cuando se transmite el evento E_one y el estado On está activo.

Sugerencia

Evite utilizar transmisiones de eventos locales no dirigidas y eventos locales dirigidos que creen lógica de salida anticipada. Estos eventos pueden generar un comportamiento recursivo no deseado en su gráfico. Si el gráfico contiene estos eventos, genera una advertencia cuando se simula el modelo. Para eliminar los eventos que generen recursiones, consulte Evitar una recursión no deseada en un gráfico.

Consulte también

Temas