Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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 varios segmentos. El gráfico usa ordenación implícita de transiciones salientes (consulte ).

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. El gráfico usa ordenación implícita de transiciones salientes (consulte ).

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). El gráfico usa ordenación implícita de estados paralelos (consulte ).

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. Las transmisiones de eventos locales no dirigidas pueden provocar un comportamiento recurrente no deseado en su gráfico. En lugar de ello, utilice transmisiones dirigidas para enviar los eventos locales. Para obtener más información, consulte Broadcast Local Events to Synchronize Parallel States.

Durante la simulación, los gráficos de Stateflow pueden detectar transmisiones de eventos locales no dirigidas. Para controlar el grado de acción de diagnóstico, abra el cuadro de diálogo Configuration Parameters y, en el panel Diagnostics > Stateflow, establezca el parámetro Undirected event broadcasts en none, warning o error. El ajuste predeterminado es warning. Para obtener más información, consulte Undirected event broadcasts (Simulink).

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. Las transmisiones de eventos locales no dirigidas pueden provocar un comportamiento recurrente no deseado en su gráfico. En lugar de ello, utilice transmisiones dirigidas para enviar los eventos locales. Para obtener más información, consulte Broadcast Local Events to Synchronize Parallel States.

Durante la simulación, los gráficos de Stateflow pueden detectar transmisiones de eventos locales no dirigidas. Para controlar el grado de acción de diagnóstico, abra el cuadro de diálogo Configuration Parameters y, en el panel Diagnostics > Stateflow, establezca el parámetro Undirected event broadcasts en none, warning o error. El ajuste predeterminado es warning. Para obtener más información, consulte Undirected event broadcasts (Simulink).

Temas relacionados