State Transition Table
Representar la lógica modal en formato tabular

Bibliotecas:
Stateflow
Descripción
El bloque State Transition Table representa una máquina de estados finitos 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. Para obtener más información, consulte Modelar máquinas de estado finito con tablas de transición de estado.
Para implementar la lógica de control, los bloques de State Transition Table pueden usar 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.
Ejemplos
Modelar un reproductor de CD o una radio utilizando tablas de transición de estado
Este ejemplo muestra un modelo sencillo de lógica de reproductor de CD/radio que utiliza tablas de transición de estado en Stateflow®.
Puertos
Entrada
Cuando crea datos de entrada en la tabla de transición de estado de Stateflow usando el panel Symbols, Stateflow crea un puerto de entrada correspondiente en el bloque State Transition Table.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
Salida
Cuando crea datos de salida en la tabla de transición de estado de Stateflow usando el panel Symbols, Stateflow crea un puerto de salida correspondiente en el bloque State Transition Table.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
Parámetros
Para editar parámetros de bloque de manera interactiva, use Property Inspector. En la barra de herramientas de Simulink®, en la pestaña Simulation, en la galería Prepare, seleccione Property Inspector.
Nota
Los bloques State Transition Table también tienen parámetros de bloque Subsystem (Simulink) a los que puede acceder haciendo clic con el botón secundario en el bloque y haciendo clic en Block Parameters (Subsystem). Sin embargo, no se recomienda actualizar estos parámetros de bloque.
Método para actualizar o activar una tabla de transición de estado de Stateflow, especificada como Inherited
, Discrete
o Continuous
.
Inherited
La entrada del modelo de Simulink determina cuándo se activa la tabla de transición de estado durante una simulación.
Si se definen eventos de entrada en la tabla de transición de estado, la señal del bloque de Simulink conectado con el puerto de activación activa la tabla de transición de estado. La señal de Simulink puede ser
Rising
,Falling
oEither
(ascendente y descendente) o responder a unaFunction Call
. Para obtener más información, consulte Activar un gráfico de Stateflow enviando eventos de entrada.Si no se definen los eventos de entrada, la tabla de transición de estado de Stateflow hereda implícitamente los activadores del modelo de Simulink. Estos eventos implícitos son los tiempos de muestreo discretos o continuos de las señales de Simulink que proporcionan entradas a la tabla de transición de estado. Si se definen entradas de datos, la tabla de transición de estado se activa a la tasa de entrada de datos más rápida. Si no se define ninguna entrada de datos en la tabla de transición de estado, esta se activa según lo definido por el comportamiento de ejecución de su subsistema principal.
Discrete
La tabla de transición de estado de Stateflow se activa cuando el modelo de Simulink genera un evento implícito a intervalos de tiempo regulares que se especifican en la propiedad de la tabla de transición de estado Sample Time. Los otros bloques del modelo de Simulink pueden tener diferentes tiempos de muestreo.
Continuous
La tabla de transición de estado de Stateflow actualiza su estado solo durante las unidades de tiempo de mayor duración, aunque calcula las salidas y las variables continuas locales durante las unidades de tiempo de menor y mayor duración. La tabla de transición de estado puede registrar cruces por cero, lo que permite a los modelos de Simulink muestrear las tablas de transición de estado de Stateflow siempre que se produzcan cambios de estado. La tabla de transición de estado de Stateflow calcula las derivadas de las variables continuas locales. Para obtener más información, consulte Continuous-Time Modeling in Stateflow.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | ChartUpdate |
Valores: | "INHERITED" (predeterminado) | "CONTINUOUS" | "DISCRETE" |
El intervalo de tiempo predeterminado es -1
, lo que indica que la tabla de transición de estado de Stateflow hereda el tiempo de muestreo de Simulink.
Especifique el intervalo de tiempo en el que la tabla de transición de estado se activa durante la simulación. El valor predeterminado indica que la tabla de transición de estado hereda el tiempo de muestreo de Simulink. Para obtener más información sobre cómo especificar el tiempo de muestreo, consulte Especificar el tiempo de muestreo (Simulink).
No utilice el parámetro Sample Time en los parámetros del bloque Subsystem. En su lugar, utilice Property Inspector.
Dependencias
Para habilitar este parámetro, establezca Update method en Discrete
.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | SampleTime |
Valores: | "-1" (predeterminado) | string scalar | character vector |
Tipos de datos: | string | char |
Parámetro que indica si se crea una salida de datos de estado activo para la tabla de transición de estado. Para obtener más información, consulte Monitor State Activity Through Active State Data.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | HasOutputData |
Valores: | false or 0 (predeterminado) | true or 1 |
Tipos de datos: | logical |
Modo de monitorización para los datos de salida de estado activo.
Dependencias
Para habilitar este parámetro, habilite Create output for monitoring.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | OutputMonitoringMode |
Valores: | "ChildActivity" (predeterminado) | "LeafStateActivity" |
Nombre del objeto de datos de estado activo para la tabla de transición de estado.
Dependencias
Para habilitar este parámetro, habilite Create output for monitoring.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | OutputPortName |
Valores: | "State_Transition_TableMode" (predeterminado) | string scalar | character vector |
Tipos de datos: | string | char |
Nombre del objeto de datos de estado activo para la tabla de transición de estado.
Dependencias
Para habilitar este parámetro, habilite Create output for monitoring.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | EnumTypeName |
Valores: | "State_Transition_TableModeType" (predeterminado) | string scalar | character vector |
Tipos de datos: | string | char |
Parámetro que indica si se define el tipo de datos enumerados para la salida de datos de estado activo manualmente. Para obtener más información, consulte Define State Activity Enumeration Type.
Dependencias
Para habilitar este parámetro, habilite Create output for monitoring.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | DoNotAutogenerateEnum |
Valores: | false or 0 (predeterminado) | true or 1 |
Tipos de datos: | logical |
Avanzados
Parámetro que indica si se inicializa la configuración de estado de la tabla de transición de estado en la unidad de tiempo cero en lugar de en el primer evento de entrada. Para obtener más información, consulte Execution of a Chart at Initialization.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | ExecuteAtInitialization |
Valores: | false or 0 (predeterminado) | true or 1 |
Tipos de datos: | logical |
Parámetro que indica si los datos de la tabla de transición de estado saturan en el desbordamiento de enteros. Cuando se desactiva este parámetro, los datos de la tabla de transición de estado se ajustan en el desbordamiento de enteros. Para obtener más información, consulte Handle Integer and Enumeration Overflow for Chart Data.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | SaturateOnIntegerOverflow |
Valores: | true or 1 (predeterminado) | false or 0 |
Tipos de datos: | logical |
Parámetro que indica si se inicializan los datos de salida cada vez que la tabla de transición de estado se activa.
Cuando se selecciona este parámetro, la tabla de transición de estado restablece sus valores de salida cada vez que esta se activa, no solo en la unidad de tiempo 0. La tabla de transición de estado restablece los valores de salida cada vez que una llamada a función, un activador por flanco o un pulso de reloj activan la tabla de transición de estado. Si se establece un valor inicial para un objeto de datos de salida, la salida se restablece a ese valor. En caso contrario, la salida se reestablece en cero. Seleccione este parámetro para:
Asegurarse de que todas las salidas se definen en cada ejecución de la tabla de transición de estado.
Evitar la retención de salidas, es decir, evitar valores de las salidas calculados en ejecuciones anteriores.
Proporcionar a todas las salidas de la tabla de transición de estado un valor inicial significativo.
Para obtener más información, consulte Valor inicial.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | InitializeOutput |
Valores: | false or 0 (predeterminado) | true or 1 |
Tipos de datos: | logical |
Parámetro que indica si la tabla de transición de estado admite datos de tamaño variable. Para obtener más información, consulte Declare Variable-Size Data in Stateflow Charts.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | SupportVariableSizing |
Valores: | true or 1 (predeterminado) | false or 0 |
Tipos de datos: | logical |
Parámetro que indica si se habilita la semántica de superpaso para la tabla de transición de estado. Seleccione este parámetro para permitir que la tabla de transición de estado realice múltiples transiciones en cada unidad de tiempo hasta alcanzar un estado estable. Esta opción no está disponible. Para obtener más información, consulte Super Step Semantics.
Dependencias
Para habilitar este parámetro, establezca Update method en Discrete
.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | EnableNonTerminalStates |
Valores: | false or 0 (predeterminado) | true or 1 |
Tipos de datos: | logical |
Número máximo de transiciones que puede completarse en un superpaso. Para obtener más información, consulte Super Step Semantics.
Dependencias
Para habilitar este parámetro, habilite Enable super step semantics.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | NonTerminalMaxCounts |
Valores: | 1000 (predeterminado) | positive integer |
Tipos de datos: | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 |
Acción que debe realizar Stateflow si un superpaso supera el número máximo de transiciones en un superpaso. Para obtener más información, consulte Super Step Semantics.
Dependencias
Para habilitar este parámetro, habilite Enable super step semantics.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | NonTerminalUnstableBehavior |
Valores: | "Proceed" (predeterminado) | "Throw Error" |
Desde R2023a
Parámetro que indica si la tabla de transición de estado trata los datos no escalares con una dimensión de longitud 1 como tamaño fijo. Cuando selecciona este parámetro, la tabla de transición de estado trata los datos no escalares que tienen al menos una dimensión de longitud 1 como tamaño fijo, independientemente de si habilita la propiedad de datos Variable size. Cuando desactiva este parámetro, la tabla de transición de estado trata los datos no escalares con la propiedad Variable size habilitada como tamaño variable.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | TreatDimensionOfLengthOneAsFixedSize |
Valores: | true or 1 (predeterminado) | false or 0 |
Tipos de datos: | logical |
Lenguaje de acción para programar la tabla de transición de estado, especificado como MATLAB
o C
. Para obtener más información, consulte Diferencias entre C y MATLAB como sintaxis de lenguaje de acción.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | ActionLanguage |
Valores: | "MATLAB" (predeterminado) | "C" |
Semántica de la máquina de estados implementada por la tabla de transición de estados, especificada como Classic
, Mealy
o Moore
. Para obtener más información, consulte Visión general de máquinas de Mealy y Moore.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | StateMachineType |
Valores: | "Classic" (predeterminado) | "Mealy" | "Moore" |
Propiedades de punto fijo
Señales de Simulink heredadas que se desean tratar como objetos fi
de Fixed-Point Designer™, especificadas como uno de estos valores:
Fixed-point
: la tabla de transición de estado trata todas las entradas de punto fijo como objetosfi
.Fixed-point & Integer
: la tabla de transición de estado trata todas las entradas de punto fijo y enteras como objetosfi
.
Este parámetro se aplica solo a las tablas de transición de estado que utilizan MATLAB como lenguaje de acción.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | TreatAsFi |
Valores: | "Fixed-point" (predeterminado) | "Fixed-point & Integer" |
Propiedades del objeto fimath
predeterminado para la tabla de transición de estado, especificadas como uno de estos valores:
Same as MATLAB
: la tabla de transición de estado usa las mismas propiedades del objetofimath
que el objetofimath
predeterminado actual. El cuadro de texto está atenuado y muestra el objetofimath
global actual en formato de solo lectura.Specify other
: especifica su propio objetofimath
en el cuadro de texto.
Para obtener más información, consulte fimath Object Construction (Fixed-Point Designer).
Dependencias
Para habilitar este parámetro, establezca Action language en MATLAB
.
Uso programático
Para establecer el valor de los parámetros de un bloque de manera programática, acceda al objeto Stateflow.StateTransitionTableChart
del bloque y cambie la propiedad del objeto usando la notación de puntos.
Parámetro: | EmlDefaultFimath |
Valores: | "Same as MATLAB Default" (predeterminado) | "Other:UserSpecified" |
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante Simulink® Coder™.
HDL Coder™ ofrece opciones de configuración adicionales que afectan a la implementación de HDL y a la lógica de síntesis.
Puede usar un parámetro ajustable en State Transition Table con el objetivo de generar código HDL. Para obtener más información, consulte Generate DUT Ports for Tunable Parameters (HDL Coder).
Este bloque tiene una sola arquitectura de HDL predeterminada.
Para generar un puerto de salida en el código HDL que muestre el estado activo, seleccione Create output for monitoring de la ventana de propiedades del gráfico. La salida es un tipo de datos enumerados. Consulte Simplificar gráficos de Stateflow incorporando una salida de estado activo.
ConstMultiplierOptimization | Optimización de dígito canónico signado (CSD) u CSD factorizado. El valor predeterminado es |
ConstrainedOutputPipeline | Número de registros que se debe colocar en las salidas desplazando los retardos existentes en el diseño. La canalización distribuida no redistribuye estos registros. El valor predeterminado es |
DistributedPipelining | Distribución de registros de canalización o reprogramación de registros. El valor predeterminado es |
InputPipeline | Número de fases de canalización de entrada que se debe insertar en el código generado. La canalización distribuida y la canalización de salida limitada pueden desplazar estos registros. El valor predeterminado es |
OutputPipeline | Número de fases de canalización de salida que se debe insertar en el código generado. La canalización distribuida y la canalización de salida limitada pueden desplazar estos registros. El valor predeterminado es |
ResetType | Suprime la generación de lógica de restablecimiento. El valor predeterminado es |
SharingFactor | Número de recursos funcionalmente equivalentes que se debe asignar a un único recurso compartido. El valor predeterminado es 0. Consulte también Resource Sharing (HDL Coder). |
El bloque se utiliza en estas optimizaciones de HDL para optimizar la velocidad y el área.
Optimización de velocidad y área
Optimización | Descripción |
---|---|
Distributed Pipelining (HDL Coder) | Canalización distribuida, o reprogramación de registros, es una optimización de velocidad que mueve los retardos existentes en un diseño para reducir la ruta crítica mientras se conserva el comportamiento funcional. |
Resource Sharing (HDL Coder) | Uso compartido de recursos es una optimización de área en la que HDL Coder identifica varios recursos equivalentes funcionalmente y los reemplaza por un único recurso. |
Understand Delay Balancing in HDL Coder (HDL Coder) | Cuando las optimizaciones o las opciones de implementación de bloques introducen retardos a lo largo de la ruta crítica en un modelo, la compensación de retardos detecta la introducción de nuevos retardos en una ruta y, después, inserta los retardos correspondientes en las otras rutas. |
Clock-Rate Pipelining (HDL Coder) | Canalización de la frecuencia de reloj es un marco de optimización en HDL Coder que permite otras optimizaciones de velocidad y área para introducir una latencia en la frecuencia de reloj. |
Adaptive Pipelining (HDL Coder) | La optimización canalización adaptativa crea patrones o combinaciones de bloques con registros que pueden mejorar la frecuencia de reloj alcanzable y reducir el uso de área en las placas FPGA introduciendo registros de canalización en los bloques del diseño. |
Estimación de ruta crítica (HDL Coder) | Para identificar rápidamente la ruta crítica más probable del diseño, use estimación de ruta crítica. La estimación de la ruta crítica acelera el proceso iterativo de encontrar la ruta crítica. Para identificar los bloques que están caracterizados en la estimación de la ruta crítica, consulte Characterized Blocks (HDL Coder). |
Para obtener más información sobre las restricciones, consulte Introduction to Stateflow HDL Code Generation (HDL Coder).
Cuando aplica optimizaciones, el bloque tiene estas limitaciones:
La tabla de transición de estado que tiene la propiedad State Machine Type establecida en
Moore
no admite optimizaciones HDL.Las optimizaciones HDL no se admiten para el bloque que tiene un puerto Trigger.
Generación de código PLC
Genere código de texto estructurado mediante Simulink® PLC Coder™.
Conversión de punto fijo
Diseñe y simule sistemas en punto fijo mediante Fixed-Point Designer™.
Historial de versiones
Introducido en R2012bPara convertir una tabla de transición de estado a gráfico de Stateflow, utilice la función de objeto convertToChart
.
Para establecer la descomposición del estado de una tabla de transición de estado en paralelo, seleccione el estado. En la pestaña Modeling, seleccione Set State Decomposition > Parallel (AND).
Con la nueva propiedad Treat dimensions of length 1 as fixed size, puede especificar cómo las tablas de transición de estado tratan los datos no escalares cuando al menos una dimensión tiene longitud 1. En versiones anteriores a R2023a, las tablas de transición de estado trataban los datos no escalares con al menos una dimensión de longitud 1 como tamaño fijo, independientemente de si se había habilitado la propiedad de datos Variable size.
Exportar el contenido de una tabla de transición de estado como arreglo de estructuras llamando a la función de objeto exportAsStruct
.
El acceso directo para añadir una columna de transición a una tabla de transición de estado es ahora Ctrl+K. En versiones anteriores, el acceso directo era Ctrl+M.
Consulte también
Bloques
Funciones
Objetos
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)