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.

Utilizar tablas de transición de estados para expresar lógica secuencial en formato tabular

El bloque State Transition Table representa una máquina de estados finitos para la lógica modal secuencial en un formato tabular. En lugar de representar los estados y las transiciones en un gráfico de Stateflow®, puede utilizar una tabla de transición de estados para modelar una máquina de estados en un formato conciso y compacto que requiere un mantenimiento mínimo de los objetos gráficos.

En una tabla de transición de estados, las filas representan los estados del sistema. Las columnas de transición especifican la condición, la acción de condición y el estado de destino para cada transición saliente de un estado.

Diagram of state transition table highlighting state column, transition column, condition cell, condition action cell, and destination state cell.

Por ejemplo, esta tabla de transición de estados contiene la lógica modal para mantener la temperatura de una caldera entre dos puntos de referencia: reference_low y reference_high. Durante el funcionamiento normal, la caldera pasa por los estados Off, Warmup y On.

State transition table with two top-level states called Normal and Alarm. Normal has three substates called Off, Warmup, and On.

La tabla de transición de estados representa la misma lógica modal que este gráfico de Stateflow.

Stateflow chart with two top-level states called Normal and Alarm. Normal has three substates called Off, Warmup, and On.

Para obtener más información sobre este ejemplo, consulte Model Bang-Bang Controller by Using a State Transition Table.

Programar una tabla de transición de estados

Para crear una State Transition Table:

  1. Cree un modelo de Simulink® que contenga un bloque State Transition Table llamando a la función sfnew.

    sfnew -STT

  2. Haga doble clic en el bloque State Transition Table.

    Block icon for state transition table.

  3. Para cada modo de funcionamiento de su sistema, añada una fila de estado e introduzca una etiqueta de estado como se describe en Definir acciones en un estado. Para organizar sistemas complejos, defina una jerarquía de estados añadiendo filas de estados secundarios debajo de una fila de estados principales.

    • Para añadir una fila de estados, seleccione un estado existente y, en la pestaña Modeling, elija una de estas opciones:

      • Insert State Row: añade un estado en el mismo nivel de jerarquía.

      • Insert Child State Row: añade un estado como elemento secundario del estado seleccionado.

    • Para mover una fila de estados, haga clic en el borde superior del estado y arrástrelo a una nueva ubicación. Cuando arrastra el estado, el editor muestra una indicación gráfica que señala la nueva posición del estado.

    • Para modelar modos de funcionamiento que estén activos al mismo tiempo, habilite la descomposición paralela (AND) en un estado principal. Para obtener más información, consulte Simular estados paralelos con una tabla de transición de estados.

  4. Para representar la dirección de la lógica de flujo entre estados, especifique las condiciones, las acciones de condición y los destinos para las transiciones salientes de cada estado.

    • Para añadir una columna de transición, haga clic con el botón secundario en el encabezado de una columna existente y elija una de estas opciones:

      • Append transition column: añade una columna de transición a la derecha de la tabla.

      • Insert transition column: añade una columna de transición a la izquierda de la columna seleccionada.

    • Para mover las celdas de condición, acción y destino de una transición, haga clic en el borde superior de la celda de condición y arrastre la transición a la izquierda o a la derecha. Las celdas de condición, acción y destino se mueven juntas como una unidad.

    • Para especificar el destino de la transición, en la celda de estado de destino, seleccione el nombre de un estado o una de estas opciones:

      • $NEXT: crea una transición al estado afín siguiente. Esta opción no está disponible para el último subestado en cada nivel de la jerarquía de estados.

      • $PREV: crea una transición al estado afín anterior. Esta opción no está disponible para el primer subestado en cada nivel de la jerarquía de estados.

      • $SELF: crea una transición de autobucle.

    • Para marcar como comentario una transición, en la celda de estado de destino, seleccione % IGNORE %.

  5. En cada nivel de la jerarquía, marque el primer estado que se activará cuando se activa el elemento principal. Seleccione un estado y, en la pestaña Modeling, seleccione Set as Default State.

    Como alternativa, para especificar una ruta de transición predeterminada con varios puntos ramificados, en la pestaña Modeling, seleccione Insert Default Transition Row (Insertar fila de transición predeterminada). Por ejemplo, esta fila de transición predeterminada elige entre dos destinos, A1 y A2, dependiendo del valor de condition.

    Default transition row with transitions to states A1 and A2.

  6. Para especificar una transición interna desde el estado principal a uno o varios estados secundarios, en la pestaña Modeling, seleccione Insert Inner Transition Row. Por ejemplo, en esta fila de transición interna, el evento de entrada E activa una transición interna que elige entre dos destinos, B1 y B2, dependiendo de los valores de condition1 y condition2.

    Inner transition row with transitions to child states B1 and B2.

    Debe especificar estados de destino en una fila de transición interna en el mismo orden en el que los estados secundarios correspondientes aparecen en la tabla. Así, en el ejemplo anterior, el estado B1 debe aparecer encima del estado B2.

  7. Si su sistema tiene entradas o salidas, o depende de cualquier variable de estado, añada datos de entrada, de salida y locales como se describe en Añadir datos de Stateflow.

  8. Si su sistema reacciona a activadores de eventos o debe activar acciones en el gráfico o en otros bloques del modelo, añada eventos de entrada y de salida como se describe en Sincronizar los componentes del modelo con la transmisión de eventos.

  9. Conecte el bloque State Transition Table a otros bloques del modelo de Simulink utilizando puertos de entrada y de salida.

  10. Para simular el modelo, haga clic en Run. Durante la simulación, la tabla de transición de estados resalta los estados activos y las transiciones.

Simular estados paralelos con una tabla de transición de estados

En Stateflow, los subestados de estados que utilizan descomposición paralela están activos simultáneamente. Por ejemplo, si el estado A utiliza descomposición paralela y tiene dos subestados, A1 y A2, tanto A1 como A2 están activos al mismo tiempo. Para obtener más información sobre los estados paralelos, consulte Definir modos exclusivos o paralelos con la descomposición de un estado.

Para utilizar estados paralelos en los bloques State Transition Table, entre en la tabla de transición de estados. Para cambiar la descomposición en el nivel del gráfico, entre en la tabla de transición de estados, pero no seleccione un estado. En la pestaña Modeling, seleccione Decomposition > Parallel (AND). Para asignar descomposición paralela a un estado, seleccione el estado cuya descomposición desea cambiar. En la pestaña Modeling, seleccione Decomposition > Parallel (AND).

Nota

Antes de actualizar la descomposición del gráfico o estado a Parallel (AND), todas las celdas de la columna de transición del estado deben estar vacías.

Los estados paralelos tienen un contorno discontinuo que indica que están activos simultáneamente.

State transition table that shows parallel state decomposition.

Detectar errores en tablas de transición de estados

Para ejecutar comprobaciones de diagnóstico en una tabla de transición de estados, en la pestaña Debug, seleccione Update Model > Update Table. La herramienta de diagnóstico analiza estadísticamente la tabla para encontrar errores como:

  • Símbolos no resueltos

  • Estados inaccesibles

  • Filas de transición predeterminadas sin una transición incondicional

  • Celdas de transición con condiciones o acciones, pero sin destino

  • Texto de acción en una celda de condición

  • Filas de transición interna que especifican estados de destino en un orden diferente al que los estados correspondientes aparecen en la tabla

Estas comprobaciones de errores también se realizan durante la simulación. Para obtener más información sobre cómo depurar tablas de transición de estados, consulte Debug Run-Time Errors in a State Transition Table.

Especificar propiedades para las tablas de transición de estados

Las propiedades de la tabla de transición de estados especifican cómo interactúa con el modelo de Simulink. Puede modificar estas propiedades en Property Inspector, Model Explorer o el cuadro de diálogo de propiedades de la tabla de transición de estados.

Para utilizar Property Inspector:

  1. Abra el bloque State Transition Table.

  2. En la pestaña Modeling, en Design Data, seleccione Property Inspector.

  3. En Property Inspector, edite las propiedades de la tabla de transición de estados.

Para utilizar Model Explorer:

  1. En la pestaña Modeling, en Design Data, seleccione Model Explorer.

  2. En el panel Model Hierarchy, seleccione la tabla de transición de estados.

  3. En el panel Dialog, edite las propiedades de la tabla de transición de estados.

Para utilizar el cuadro de diálogo de propiedades de la tabla de transición de estados:

  1. Abra el bloque State Transition Table.

  2. En la pestaña Modeling, haga clic en Table Properties.

  3. En el cuadro de diálogo de propiedades, edite las propiedades de la tabla de transición de estados.

También puede modificar las propiedades de la tabla de transición de estados de forma programática con objetos Stateflow.StateTransitionTableChart. Para obtener más información sobre la interfaz programática de Stateflow, consulte Overview of the Stateflow API.

Sugerencia

Las propiedades de la tabla de transición de estados son un subconjunto de las propiedades de los gráficos de Stateflow. Para obtener una descripción de cada propiedad, consulte Especificar las propiedades de los gráficos de Stateflow.

Directrices para el uso de tablas de transición de estados

  • Las tablas de transición de estados pueden utilizar MATLAB® o C como lenguaje de acción. Para obtener más información, consulte Diferencias entre C y MATLAB como sintaxis de lenguaje de acción.

  • Las tablas de transición de estados deben tener como mínimo una fila de estado y una columna de transición.

  • Las tablas de transición de estados no admiten estos elementos de gráficos de Stateflow:

    • Supertransiciones

    • Eventos locales

    • Funciones gráficas, de tablas de verdad, de MATLAB y de Simulink en el nivel de gráfico

Consulte también

Bloques

Objetos

Temas relacionados