Chart
Implementar una lógica de control con una máquina de estados finitos
Bibliotecas:
Stateflow
Descripción
El bloque Chart es una representación gráfica de una máquina de estados finitos basada en un diagrama de transición de estado. En un gráfico de Stateflow®, los estados y las transiciones forman los componentes básicos de un sistema lógico secuencial. Los estados corresponden a los modos de funcionamiento y las transiciones representan rutas entre estados. Para obtener más información, consulte Modelar máquinas de estados finitos con gráficos de Stateflow.
Para implementar la lógica de control, los gráficos de Stateflow 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.
Las propiedades de los gráficos especifican cómo interactúa el gráfico de Stateflow con el modelo de Simulink®. Puede modificar las propiedades del gráfico en Property Inspector, Model Explorer o el cuadro de diálogo de propiedades del gráfico. Para obtener más información, consulte Especificar las propiedades de los gráficos de Stateflow. Como alternativa, puede modificar las propiedades del gráfico de forma programática usando objetos Stateflow.Chart
. Para obtener más información sobre la interfaz programática de Stateflow, consulte Visión general de la API de Stateflow.
Ejemplos
Diseñar un juego con Stateflow
Este ejemplo muestra cómo implementar el juego de Tetris utilizando un gráfico de Stateflow®. Este modelo es una versión rediseñada de la clásica demo de Stateflow sf_tetris
. El nuevo diseño incorpora estos paradigmas de programación:
Model a Fitness Tracker
Implement a fitness tracker by using temporal logic and messages.
Puertos
Entrada
Port_1 — Puerto de entrada
escalar | vector | matriz
Cuando crea datos de entrada en el panel de Symbols, Stateflow crea puertos de entrada. Los datos de entrada que cree tienen un puerto de entrada correspondiente que aparece una vez haya creado los datos.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
Salida
Port_1 — Puerto de salida
escalar | vector | matriz
Cuando crea datos de salida en el panel de Symbols, Stateflow crea puertos de salida. Los datos de salida que cree tienen un puerto de salida correspondiente que aparece una vez haya creado los datos.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
Parámetros
Los parámetros de la pestaña Code Generation (Generación de código) requieren Simulink Coder™ o Embedded Coder®.
Principales
Show port labels — Selecciona cómo mostrar las etiquetas de puerto
FromPortIcon
(predeterminado) | none
| FromPortBlockName
| SignalName
Seleccione cómo mostrar las etiquetas de puerto en el icono del bloque Chart.
none
No muestra las etiquetas de puerto.
FromPortIcon
Si el icono de puerto correspondiente muestra un nombre de señal, muestra el nombre de señal en el bloque Chart. De lo contrario, muestra el nombre del bloque del puerto.
FromPortBlockName
Muestra el nombre del bloque del puerto correspondiente en el bloque Chart.
SignalName
Si existe un nombre de señal, muestra el nombre de la señal conectada al puerto del bloque Chart. De lo contrario, muestra el nombre del bloque del puerto correspondiente.
Uso programático
Parámetro: ShowPortLabels |
Tipo: escalar de cadena o vector de caracteres |
Valor: "none" "FromPortIcon" | "FromPortBlockName" | "SignalName" |
Valor predeterminado: "FromPortIcon" |
Read/Write permissions — Selecciona el acceso al contenido del gráfico
ReadWrite
(predeterminado) | ReadOnly
| NoReadOrWrite
Controle el acceso de los usuarios al contenido del gráfico.
ReadWrite
Habilita la apertura y la modificación del contenido del gráfico.
ReadOnly
Habilita la apertura pero no la modificación del gráfico. Si el gráfico se encuentra en una biblioteca de bloques, puede crear y abrir enlaces al gráfico, y puede crear y modificar copias locales del gráfico, pero no puede cambiar los permisos ni modificar el contenido de la instancia de la biblioteca original.
NoReadOrWrite
Deshabilita la apertura o la modificación del gráfico. Si el gráfico se encuentra en una biblioteca, puede crear enlaces al gráfico en un modelo, pero no puede abrir, modificar, cambiar permisos ni crear copias locales del gráfico.
Uso programático
Parámetro: Permissions |
Tipo: escalar de cadena o vector de caracteres |
Valor: "ReadWrite" | "ReadOnly" | "NoReadOrWrite" |
Valor predeterminado: "ReadWrite" |
Minimize algebraic loop occurrences — Controla la eliminación de bucles algebraicos
desactivado (predeterminado) | activado
- desactivado
No intenta eliminar los bucles algebraicos artificiales que incluyan la subgráfico atómica.
- activado
Intenta eliminar los bucles algebraicos artificiales que incluyan la subgráfico atómica.
Uso programático
Parámetro: MinAlgLoopOccurrences |
Tipo: escalar de cadena o vector de caracteres |
Valor: "off" | "on" |
Valor predeterminado: "off" |
Sample time — Especifica un intervalo temporal
-1
(predeterminado) | Ts
| 0
Especifique el tiempo de muestreo del gráfico de Stateflow. No se recomienda utilizar Sample time para establecer el tiempo de muestreo del gráfico de Stateflow. En su lugar, establezca el tiempo de muestreo a través de las propiedades del gráfico de Stateflow. Para obtener más información, consulte Propiedades del gráfico de Stateflow.
-1
Especifique el tiempo de muestreo existente.
Ts
Especifique el tiempo de muestreo discreto.
0
Especifique el tiempo de muestreo continuo.
Uso programático
Parámetro: SystemSampleTime |
Tipo: escalar de cadena o vector de caracteres |
Valor: "-1" | "[Ts 0]"
|
Valor predeterminado: "-1" |
Generación de código
Function packaging — Selecciona el formato de código
Auto
(predeterminado) | Inline
| Nonreusable function
| Reusable function
Seleccione el formato del código generado para los subgráficos (no virtuales) atómicos.
Auto
Simulink Coder selecciona el formato óptimo para el sistema según el tipo y el número de instancias del gráfico que haya en el modelo.
Inline
Simulink Coder inserta el gráfico sin condiciones.
Nonreusable function
Simulink Coder genera de forma explícita una función independiente en un archivo independiente. Los gráficos con esta configuración generan funciones que pueden tener argumentos en función de la configuración del parámetro Function interface (Simulink). Puede nombrar la función y el archivo generados utilizando los parámetros Function name (Simulink) y File name (no extension) (Simulink), respectivamente. Estas funciones no son de reentrada.
Reusable function
Simulink Coder genera una función con argumentos que permite reutilizar código del gráfico cuando un modelo incluye múltiples instancias del gráfico.
Esta opción genera una función con argumentos que permite reutilizar código del gráfico en el código generado de una jerarquía de referencia de modelos que incluye múltiples instancias de un gráfico en los modelos a los que se hace referencia. En este caso, el gráfico debe encontrarse en una biblioteca.
Sugerencias
Si desea que se representen múltiples instancias de un gráfico como una única función reutilizable, puede designar cada una de ellas como
Auto
o comoReusable function
. Es mejor usar una, porque cuando se usan ambas, se crean dos funciones reutilizables, una para cada designación. Los resultados de estas opciones solo difieren cuando no es posible reutilizarlas. SeleccionarAuto
no permite controlar la función ni el nombre del archivo del código del gráfico.Las opciones
Reusable function
yAuto
determinan si existen múltiples instancias de un gráfico y si se puede reutilizar el código. Las opciones se comportan de manera diferente cuando no es posible reutilizar el código. En este caso,Auto
produce código insertado o, si las circunstancias impiden la inserción, funciones independientes para cada instancia del gráfico.Si selecciona
Reusable function
mientras el código generado se encuentre bajo el control de versiones, ajuste File name options enUse subsystem name
,Use function name
oUser specified
. De lo contrario, los nombres de los archivos de código cambian siempre que modifique el modelo, lo que impide el control de versiones de sus archivos.
Dependencia
Este parámetro requiere Simulink Coder.
Establecer este parámetro en
Nonreusable function
o enReusable function
habilita los parámetros siguientes:Function name options
File name options
Sección de la memoria para inicializar/terminar funciones (requiere Embedded Coder y un archivo de sistema objetivo basado en ERT)
Sección de la memoria para funciones de ejecución (requiere Embedded Coder y un archivo de sistema objetivo basado en ERT)
Establecer este parámetro en
Nonreusable function
, habilita Function with separate data (requiere una licencia para Embedded Coder y un archivo de sistema objetivo basado en ERT).
Uso programático
Parámetro: RTWSystemCode |
Tipo: escalar de cadena o vector de caracteres |
Valor: "Auto" | "Inline" | "Nonreusable function" | "Reusable function" |
Valor predeterminado: "Auto" |
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante Simulink® Coder™.
Generación de código HDL
Genere código VHDL, Verilog y SystemVerilog para diseños FPGA y ASIC mediante HDL 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.
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.
Para insertar un registro de salida que retarde la salida del gráfico en un ciclo de simulación, utilice la propiedad de bloque OutputPipeline (HDL Coder).
ClockDrivenOutput | Active las salidas controladas por reloj para evitar que la lógica combinatoria controle la salida y permitir una actualización inmediata de la salida cuando la señal de reloj y el estado cambien. El valor predeterminado es |
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 |
InstantiateFunctions | Genera una entidad VHDL® |
LoopOptimization | Desenrolla, secuencia o no optimiza los bucles. El valor predeterminado es |
MapPersistentVarsToRAM | Asigna los arreglos persistentes a la RAM. 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). |
VariablesToPipeline | Advertencia
Inserte un registro de canalización en la salida de la variable o variables de MATLAB especificadas. Especifique la lista de variables como vector de caracteres, con espacios que separen las variables. |
Este bloque admite la generación de código para señales complejas.
Para obtener más información sobre las restricciones en el uso de los gráficos, consulte Introduction to Stateflow HDL Code Generation (HDL Coder).
Generación de código PLC
Genere código de texto estructurado mediante Simulink® PLC Coder™.
UseExternalDefinition | Suprime la definición del bloque en el código generado. El valor predeterminado es |
Conversión de punto fijo
Diseñe y simule sistemas en punto fijo mediante Fixed-Point Designer™.
Historial de versiones
Introducido antes de R2006aR2023b: Convertir a un gráfico
Para convertir a una tabla de transición de estado, utilice la función de objeto convertToSTT
.
Consulte también
Bloques
Funciones
Objetos
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)