Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

Chart

Implemente una lógica de control con una máquina de estados finitos

  • Biblioteca:
  • Stateflow

  • Chart block

Descripción

Una máquina de estados finitos es una representación de un sistema (reactivo) basado en eventos. En los sistemas basados en eventos, el sistema responde a un evento realizando una transición de un estado (modo) a otro. Dicha transición se produce si la condición que define el cambio es verdadera.

Un gráfico de Stateflow® es una representación gráfica de una máquina de estados finitos. Los estados y las transiciones constituyen los elementos básicos del sistema. También puede representar diagramas de flujo sin estado.

Por ejemplo, puede utilizar gráficos de Stateflow para controlar una planta física en respuesta a eventos como sensores de temperatura y de presión, relojes y eventos basados en usuarios.

También puede usar una máquina de estados para representar la transmisión automática de un automóvil. La transmisión dispone de los siguientes estados operativos: estacionamiento, marcha atrás, neutro, conducción y baja. Cuando el conductor mueve la palanca de cambios de una posición a otra, el sistema realiza una transición de un estado a otro, por ejemplo, de estacionamiento a marcha atrás.

Los gráficos de Stateflow pueden usar MATLAB o C como el lenguaje de acción para implementar la lógica de control.

Puertos

Entrada

expandir todo

Cuando crea datos de entrada en el Panel de símbolos, 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

Salida

expandir todo

Cuando crea datos de salida en el Panel de símbolos, 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

Parámetros

expandir todo

Los parámetros de la pestaña Code Generation (Generación de código) requieren Simulink® Coder™ o Embedded Coder®.

Principales

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: vector de caracteres
Valor: 'FromPortIcon' | 'FromPortBlockName' | 'SignalName'
Valor predeterminado: 'FromPortIcon'

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: vector de caracteres
Valor: 'ReadWrite' | 'ReadOnly' | 'NoReadOrWrite'
Valor predeterminado: 'ReadWrite'

Cuando se determina el orden de ejecución de los métodos de bloque, provoca que Simulink trate el gráfico como una unidad.

desactivado

Cuando se determina el orden de ejecución de un método de bloque, trata todos los bloques del gráfico como si estuvieran al mismo nivel en la jerarquía del modelo que el gráfico. Este tratamiento jerárquico puede provocar que la ejecución de los métodos de bloques del gráfico se entrelace con la ejecución de métodos de bloques externos al gráfico.

activado

Cuando se determina el orden de ejecución de los métodos de bloque, trata el gráfico como una unidad. Por ejemplo, cuando Simulink necesita calcular la salida del gráfico, Simulink invoca los métodos de salida de todos los bloques del gráfico antes de invocar los métodos de salida de otros bloques situados en el mismo nivel que el bloque del gráfico.

Dependencia

Si selecciona este parámetro, habilitará los parámetros Minimize algebraic loop occurrences, Sample time y Function packaging. Function packaging requiere el software Simulink Coder.

Uso programático

Parámetro: TreatAsAtomicUnit
Tipo: vector de caracteres
Valor: 'off' | 'on'
Valor predeterminado: 'off'

Consulte también

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.

Dependencia

Para habilitar este parámetro, seleccione el parámetro Treat as atomic unit.

Uso programático

Parámetro: MinAlgLoopOccurrences
Tipo: vector de caracteres
Valor: 'off' | 'on'
Valor predeterminado: 'off'

Especifique si todos los bloques de este gráfico deben ejecutarse con la misma frecuencia o si pueden ejecutarse a distintas frecuencias.

  • Si los bloques del gráfico pueden ejecutarse a distintas frecuencias, especifique el tiempo de muestreo del gráfico como heredado (-1).

  • Si se deben ejecutar todos los bloques a la misma frecuencia, especifique el tiempo de muestreo que corresponda a dicha frecuencia como valor del parámetro Sample time.

  • Si alguno de los bloques del gráfico especifica un tiempo de muestreo distinto (que no sea -1 ni inf), Simulink se muestra un mensaje de error cuando actualiza o simula el modelo. Por ejemplo, suponga que todos los bloques del gráfico deben ejecutarse 5 veces por segundo. Para garantizar esa frecuencia, especifique el tiempo de muestreo del gráfico como 0.2. En este ejemplo, si alguno de los bloques del gráfico especifica un tiempo de muestreo que no sea 0.2, -1 ni inf, Simulink se muestra un error cuando actualiza o simula el modelo.

-1

Especifique el tiempo de muestreo heredado. Si los bloques del gráfico pueden ejecutarse a distintas frecuencias, utilice este tiempo de muestreo.

[Ts 0]

Especifique el tiempo de muestreo periódico.

Dependencia

Para habilitar este parámetro, seleccione el parámetro Treat as atomic unit.

Uso programático

Parámetro: SystemSampleTime
Tipo: vector de caracteres
Valor: '-1' | '[Ts 0]'
Valor predeterminado: '-1'

Cuando se propagan condiciones de variantes desde bloques Variant Source o a bloques Variant Sink, provoca que Simulink trate el gráfico como una unidad.

activado

Simulink trata el gráfico como una unidad cuando se propagan condiciones de variantes desde bloques Variant Source o a bloques Variant Sink. Por ejemplo, cuando Simulink calcula la condición de variante del gráfico, propaga dicha condición a todos los bloques del gráfico.

desactivado

Simulink trata todos los bloques del gráfico como si estuvieran al mismo nivel en la jerarquía del modelo que el gráfico cuando determina su condición de variante.

Uso programático

Parámetro: TreatAsGroupedWhenPropagatingVariantConditions
Tipo: vector de caracteres
Valor: 'on' | 'off'
Valor predeterminado: 'on'

Generación de código

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 este ajuste generan funciones que pueden tener argumentos basados en el ajuste de 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). 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.

Consejos

  • 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 como Reusable function. Es mejor usar una, porque al usar ambas se crean dos funciones reutilizables, una para cada designación. Los resultados de estas opciones solo difieren cuando no es posible reutilizarlas. Seleccionar Auto no permite controlar la función ni el nombre del archivo del código del gráfico.

  • Las opciones Reusable function y Auto 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 en Use subsystem name, Use function name o User 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.

  • Para habilitar este parámetro, seleccione Treat as atomic unit.

  • Establecer este parámetro en Nonreusable function o en Reusable 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 destino de un sistema basado en ERT)

    • Sección de la memoria para funciones de ejecución (requiere Embedded Coder y un archivo de destino de un sistema 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 destino de un sistema basado en ERT).

Uso programático

Parámetro: RTWSystemCode
Tipo: 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 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 antes de R2006a