Main Content

Acceder a un gráfico o un estado

El acceso a gráficos y estados tiene lugar cuando:

  • Un gráfico se activa por primera vez. Esto se denomina inicialización del gráfico.

  • Existe una transición válida a un estado. Consulte Evaluate Transitions.

Flujo de trabajo para acceder a un gráfico o un estado

Este diagrama de flujo muestra la progresión de los eventos que realiza Stateflow® para acceder a un gráfico o un estado. En este diagrama de flujo, el estado actual se refiere al estado en el que se desarrolla una decisión o un proceso.

Flow chart that shows the steps for entering a chart or state.

Entrada al gráfico

Se denomina inicialización a la primera vez que se activa el gráfico de Stateflow. Cuando se produce la inicialización, se accede al gráfico y Stateflow ejecuta cualquier transición predeterminada para estados exclusivos (OR). Si los estados del nivel superior del gráfico son paralelos (AND), se activan en función de su número de orden.

Si desea que el gráfico realice cualquier transición predeterminada antes del tiempo t = 0, en el cuadro de diálogo de propiedades del gráfico, marque la casilla Execute (enter) chart at initialization. Esta opción hace que el gráfico de Stateflow se inicialice al mismo tiempo que la inicialización de Simulink®. Las rutas de transición predeterminadas del gráfico se ejecutan durante la fase de inicialización del modelo.

Acceso al estado

Cuando se marca un estado para la entrada, se ejecutan las acciones de entrada para ese estado. Una vez que el gráfico está activo y ha pasado por la inicialización, se activa el estado de nivel superior. Un estado se marca para la entrada de una de estas maneras:

  • Una transición entrante cruza los límites del estado.

  • Una transición entrante termina en el límite del estado.

  • El estado es un estado paralelo secundario de un estado activo.

Acciones de entrada

Las acciones de entrada están precedidas por el prefijo entry o en para abreviar, seguidas por dos puntos obligatorios (:), seguidos por una o varias acciones. Las distintas acciones se separan con un retorno de carro, un punto y coma (;) o una coma (,). Si no especifica el tipo de acción de estado de forma explícita con respecto a una instrucción, el gráfico trata dicha instrucción como una acción entry,during.

Acceder a un gráfico de Stateflow

En este ejemplo, la inicialización del gráfico se produce cuando el gráfico se convierte en activo por primera vez.

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

Si sigue Flujo de trabajo para acceder a un gráfico o un estado hasta que el gráfico se desactive, los pasos de inicialización del gráfico siguen este orden:

  1. Se ejecutan las acciones de transición predeterminadas, y x = 0, y = 0 y z = 0.

  2. StateA se marca para la entrada.

  3. StateA no es un subestado de un elemento principal inactivo. Ejecute las acciones entry para StateA. Ahora, x = 1.

  4. StateA es el estado marcado inicialmente para la entrada.

  5. StateA no contiene intersecciones históricas.

  6. Hay una transición predeterminada al subestado, StateA1. Vaya al diagrama de flujo Evaluate Transitions.

  7. Siguiendo el diagrama de flujo Evaluate Transitions, marque StateA1 para entry. Vaya al diagrama de flujo Exit Actions.

  8. El estado actual, StateA, es un superestado del estado de destino, StateA1. Vuelva al diagrama de flujo Entry Actions.

  9. StateA1 no es un subestado de un elemento principal inactivo. Ejecute acciones entry para StateA1. Ahora, x = 3.

  10. StateA1 es el estado marcado inicialmente para la entrada.

  11. StateA1 no contiene intersecciones históricas.

  12. StateA1 no contiene transiciones predeterminadas.

  13. StateA1 no contiene subestados únicos.

  14. El gráfico se desactiva.

Los pasos 1 a 14 se realizan durante la unidad de tiempo inicial. Esto concluye el proceso de inicialización del gráfico.

Acceder a un estado con intersecciones históricas

Si desea que el gráfico de Stateflow recuerde y vuelva a un subestado que estuvo activo previamente, independientemente de una transición predeterminada, utilice una intersección histórica. La colocación de una intersección histórica dentro de un estado anula la transición predeterminada que conduce a subestados exclusivos (OR). Después de colocar una intersección histórica dentro de un estado, al acceder a él, el gráfico de Stateflow recuerda y accede al subestado previamente activo. La intersección histórica solo se aplica al nivel de la jerarquía en el que aparece.

En este ejemplo, una luz puede estar encendida o apagada. Estas opciones se indican con los estados Power_on y Power_off. Las opciones se controlan con los eventos de entrada switch_on y switch_off. Cuando la luz está encendida, puede ser tenue o intensa. Esas opciones se indican con los estados Low y High, y se controlan con los eventos de entrada switch_low y switch_high.

Inicialmente, el gráfico está desactivado. El estado Power_off está activo. Cuando el estado Power_on estuvo activo por última vez, High era el subestado previamente activo. Se produce el evento switch_on y se marca el estado Power_on para la entrada. En este momento, p = 0.

Stateflow chart with top-level states called Power_off and Power_on. Power_on has a history junction and substates Low and High.

Si sigue el Flujo de trabajo para acceder a un gráfico o un estado hasta que el gráfico se desactive, los pasos de ejecución para acceder al estado Power_on están en este orden:

  1. Power_on no es el elemento secundario de un elemento principal no activo.

  2. No hay acciones de entrada para Power_on.

  3. Power_on es el estado marcado inicialmente para la entrada.

  4. Hay intersecciones históricas en Power_on.

  5. High era el subestado previamente activo. Ahora, p = 2.

  6. High no contiene intersecciones históricas.

  7. High no contiene transiciones predeterminadas.

  8. High no contiene subestados únicos.

  9. El gráfico se desactiva.

Esto concluye las acciones entry para Power_on y High.

Acceder a un estado con supertransiciones

Una supertransición es una transición entre diferentes niveles en un gráfico. Una supertransición puede darse entre un estado de un gráfico de nivel superior y un estado de uno de sus subgráficos, o bien entre estados que residen en distintos subgráficos del mismo nivel o en distintos niveles de un gráfico. Puede crear supertransiciones que abarquen una cantidad ilimitada de niveles en su gráfico.

Cuando se accede a un estado a través de una supertransición, antes de que se ejecuten las acciones de acceso para el destino final, sus superestados deben marcarse como activos y sus acciones de acceso deben ejecutarse. En este ejemplo, StateB1 se ha marcado para la entrada desde StateA2. En este momento, x = 5, y = 5 y z = 1.

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

Si sigue el Flujo de trabajo para acceder a un gráfico o un estado hasta que el gráfico se desactive, los pasos de ejecución para acceder al estado StateB1 están en este orden:

  1. StateB1 es el subestado de un elemento principal inactivo (StateB).

  2. StateB está marcado como activo.

  3. StateB no es el subestado de un elemento principal inactivo.

  4. Ejecute las acciones de entrada para StateB. Ahora, x = 4.

  5. StateB no es el estado marcado inicialmente para la entrada.

  6. Ejecute las acciones de entrada para StateB1. Ahora, x = 3.

  7. StateB1 es el estado marcado inicialmente para la entrada.

  8. StateB1 no tiene intersecciones históricas.

  9. StateB1 no contiene transiciones predeterminadas.

  10. StateB1 no contiene subestados únicos.

  11. El gráfico se desactiva.

Esto concluye las acciones entry para StateB y StateB1.

Temas relacionados