Modelar máquinas de estado finito con tablas de transición de estado
Puede utilizar el bloque State Transition Table para modelar una máquina de estado finito para lógica modal secuencial. En comparación con un gráfico de Stateflow®, una tabla de transición de estado requiere un mantenimiento mínimo de los objetos gráficos cuando añade o modifica el modelo de Simulink de nivel superior.
Programar una tabla de transición de estado
En una tabla de transición de estado, las filas representan los estados del sistema. Las columnas de transición especifican las condiciones, las acciones de condición y los estados de destino para cada transición saliente de un estado. La columna IF representa las transiciones primarias del modelo y la columna ELSE-IF contiene las acciones que realiza el modelo si la transición primaria no es válida. También puede añadir columnas adicionales utilizando las opciones Append transition column e Insert transition column.
Cada celda de la columna está subdividida en tres filas. La primera fila es la celda de condición, la segunda fila es la celda de acción de condición y la tercera fila es la celda de estado de destino. Para obtener más información sobre condiciones y acciones de condición, consulte Definir acciones en una transición.
Por ejemplo, esta tabla de transición de estado contiene la lógica modal que mantiene la temperatura de una caldera entre dos valores de consigna: reference_low
y reference_high
. Durante el funcionamiento normal, la caldera pasa por los estados Off
, Warmup
y On
.
La tabla de transición de estado representa la misma lógica modal que este gráfico de Stateflow.
Para obtener más información sobre este ejemplo, consulte Model Bang-Bang Controller by Using a State Transition Table.
Crear una tabla de transición de estado
Para crear una tabla de transición de estado:
Cree un modelo de Simulink® que contenga un bloque State Transition Table llamando a la función
sfnew
con el argumento-STT
.sfnew -STT
Haga doble clic en el bloque State Transition Table.
Para cada modo de funcionamiento de su sistema, añada una fila de estado. 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.
Nota
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 estado.
Añada una etiqueta de estado para cada estado, como se describe en Definir acciones en un estado.
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.
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 %
.
Gestionar estados afines y secundarios en una tabla de transición de estado
Si la tabla de transición de estado incluye varios estados afines, marque el estado afín que debe activarse primero cuando su elemento principal se active. 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 de ramificación, 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
.
El icono de este estado muestra la transición predeterminada con varios puntos de bifurcación.
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
.
El icono de este estado muestra la transición interna con varios puntos de bifurcación.
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
.
Conecte el bloque State Transition Table a otros bloques del modelo de Simulink utilizando puertos de entrada y de salida.
Simular estados paralelos con una tabla de transición de estado
En Stateflow, se usa descomposición paralela para permitir que dos estados 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 estado. Para cambiar la descomposición en el nivel del gráfico, no seleccione un estado y, en la pestaña Modeling, seleccione Decomposition > Parallel (AND). Para asignar una descomposición paralela a un estado, seleccione un estado y, en la pestaña Modeling, seleccione Decomposition > Parallel (AND).
Nota
Antes de actualizar la descomposición del gráfico o estado a Parallel (AND), debe vaciar todas las celdas de la columna de transición del estado.
Los estados paralelos tienen un contorno discontinuo. En esta tabla de transición de estado, stateA
tiene descomposición paralela, por lo que sus estados secundarios stateA1
y stateA2
se muestran con líneas discontinuas y están activos simultáneamente.
Detectar errores en tablas de transición de estado
Para ejecutar comprobaciones de diagnóstico en una tabla de transición de estado, 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 estado, consulte Debug Run-Time Errors in a State Transition Table.
Directrices para el uso de tablas de transición de estado
Las tablas de transición de estado 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 estado deben tener como mínimo una fila de estado y una columna de transición.
Las tablas de transición de estado 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