Contenido principal

Especificar el tamaño de los datos de Stateflow

En los gráficos de Stateflow®, el tamaño de los datos determina la asignación de memoria, afecta al rendimiento de la simulación y garantiza la compatibilidad entre los gráficos de Stateflow y los bloques de Simulink® conectados. Una especificación incorrecta del tamaño puede generar errores de compilación, fallos en el tiempo de ejecución o un comportamiento inesperado.

En un gráfico de Stateflow de un modelo de Simulink, especifique el tamaño de un objeto de datos utilizando Property Inspector o la API de Stateflow.

Compatibilidad entre el ámbito de los datos y el método para especificar el tamaño

Puede especificar el tamaño de los datos especificando un valor numérico o una expresión de MATLAB, o decidiendo heredar el tamaño de Simulink. El método que utilice para especificar el tamaño depende del ámbito de los datos.

Ámbito de los datosHeredar el tamañoUtilizar valores numéricosUtilizar expresiones de MATLAB
LocalSolo en gráficos que utilizan MATLAB como lenguaje de acción
ConstanteNo
Parámetro
Entrada
Salida
Memoria del almacén de datosNoNo

Para obtener más información acerca del ámbito de los datos, consulte Especificar el ámbito y el tipo de datos de Stateflow.

Especificar el tamaño de los datos utilizando valores numéricos

Cuando especifique el tamaño de los datos introduciendo valores numéricos, siga las directrices siguientes.

Tipo de datosEspecificación de tamañoEjemplo
EscalarIntroduzca 1 o deje el campo vacío1
Vector columna (n×1)Introduzca el número de filas5
Vector fila (1×n)Introduzca [1 n][1 5]
Matriz (n×m)Introduzca [n m][3 4]
Arreglo de N dimensionesIntroduzca [d₁ d₂ ⋯ dₙ][2 3 4]

En gráficos que utilizan C como lenguaje de acción, los vectores de Stateflow de una dimensión son compatibles con los vectores fila o columna de Simulink del mismo tamaño. Por ejemplo, un dato de entrada de Stateflow de tamaño 3 es compatible con:

  • Un vector fila de Simulink de tamaño [1 3]

  • Un vector columna de Simulink de tamaño [3 1]

Especificar el tamaño de los datos utilizando expresiones

Puede especificar el tamaño de los datos usando expresiones de MATLAB que se evalúen como especificaciones de tamaño válidas. Las expresiones ofrecen flexibilidad para gráficos que requieren una especificación dinámica del tamaño según parámetros u otros datos.

Las expresiones pueden contener:

  • Valores numéricos y constantes.

  • Parámetros y variables.

  • Operaciones aritméticas (+, -, *, /).

  • Llamadas a funciones de MATLAB. Por ejemplo, size, length, floor.

Las expresiones deben evaluarse como valores enteros positivos para cada dimensión.

El tipo de los valores debe ser compatible, como enteros con enteros, escalares con tipos compatibles.

Los valores enumerados deben incluir el prefijo de tipo. Por ejemplo, Colors.Red, no Red.

Limitaciones de las expresiones

No se pueden utilizar expresiones de MATLAB para:

  • Especificar el tamaño heredado de los datos. En otras palabras, las expresiones no pueden evaluarse como -1.

  • Especificar el tamaño de los datos de entrada de Stateflow que acepten datos basados en tramas de Simulink. Para obtener más información, consulte Sample- and Frame-Based Concepts (DSP System Toolbox).

Estos ejemplos son expresiones de MATLAB válidas para especificar el tamaño de los datos del gráfico:

  • K+3, donde K es una constante o parámetro de Stateflow en el nivel de gráfico.

  • N/2, donde N es una variable en el área de trabajo base de MATLAB®.

  • [P Q], donde P y Q son parámetros de Simulink. Los gráficos que utilizan C como lenguaje de acción propagan estas dimensiones simbólicas en todo el modelo. Consulte Propagar dimensiones simbólicas de los datos de Stateflow.

  • 2*Colors.Red, donde Red es un valor enumerado de tipo Colors.

  • size(u), donde u es una variable en el nivel de gráfico. La función size permite especificar el tamaño de un objeto de datos en base al tamaño de otro objeto de datos. Este tipo de expresión es útil en un gráfico de biblioteca que se reutiliza con datos de tamaños diferentes. En otras situaciones, puede mejorar la claridad del gráfico evitando la función size y especificando el tamaño de los datos directamente.

  • floor((a*b)/c), donde a y c son escalares de tipo int16 y b es un escalar de tipo double.

  • [fi(2,1,16,2) fi(4,1,16,2)]. Esta expresión especifica un tamaño de datos de [2 4] llamando a la función fi (Fixed-Point Designer). Esta función devuelve números con signo de punto fijo con una longitud de palabra de 16 y una longitud de fracción de 2.

Heredar el tamaño de los datos

Para configurar que un objeto de datos de Stateflow herede el tamaño de una señal de Simulink o de su definición en el gráfico, especifique un tamaño de –1. Este enfoque resulta útil cuando:

  • El tamaño de los datos está determinado por la señal de Stateflow conectada.

  • Desea mantener la flexibilidad para los gráficos reutilizables.

  • El tamaño puede cambiar según la configuración del modelo.

Después de simular o crear el modelo, puede encontrar el tamaño heredado de los datos en Model Explorer, en la columna CompiledSize.

Propagar dimensiones simbólicas de los datos de Stateflow

Cuando selecciona el parámetro de configuración Allow symbolic dimension specification del modelo, los gráficos que utilizan C como lenguaje de acción pueden propagar dimensiones simbólicas en todo el modelo.

Propagar dimensiones simbólicas de los datos de Stateflow

Cuando selecciona el parámetro de configuración Allow symbolic dimension specification del modelo, los gráficos que utilizan C como lenguaje de acción pueden propagar las dimensiones simbólicas de los datos de Stateflow en todo el modelo. Si tiene Embedded Coder®, las dimensiones simbólicas van en el código generado para objetivos ERT. Especifique el tamaño de las dimensiones simbólicas utilizando parámetros de Simulink con una de estas clases de almacenamiento:

  • Define o ImportedDefine con un archivo de encabezado especificado

  • CompilerFlag

  • Una clase de almacenamiento personalizada definida por el usuario que defina los datos como una macro en un archivo de encabezado especificado

Para obtener más información, consulte Allow symbolic dimension specification (Simulink) y Implement Symbolic Dimensions for Array Sizes in Generated Code (Embedded Coder).

Los gráficos de Stateflow que utilizan MATLAB como lenguaje de acción no admiten la propagación de dimensiones simbólicas. Para especificar el tamaño de los datos utilizando parámetros de Simulink, desactive la casilla Allow symbolic dimension specification.

Consulte también

(Fixed-Point Designer) |

Temas