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.
En Property Inspector, puede establecer la propiedad Size, como se describe en Establecer propiedades de datos.
Con la API de Stateflow, puede establecer la propiedad
Size.
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 datos | Heredar el tamaño | Utilizar valores numéricos | Utilizar expresiones de MATLAB |
|---|---|---|---|
| Local | Solo en gráficos que utilizan MATLAB como lenguaje de acción | Sí | Sí |
| Constante | No | Sí | Sí |
| Parámetro | Sí | Sí | Sí |
| Entrada | Sí | Sí | Sí |
| Salida | Sí | Sí | Sí |
| Memoria del almacén de datos | Sí | No | No |
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 datos | Especificación de tamaño | Ejemplo |
|---|---|---|
| Escalar | Introduzca 1 o deje el campo vacío | 1 |
| Vector columna (n×1) | Introduzca el número de filas | 5 |
| Vector fila (1×n) | Introduzca [1 n] | [1 5] |
| Matriz (n×m) | Introduzca [n m] | [3 4] |
| Arreglo de N dimensiones | Introduzca [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, dondeKes una constante o parámetro de Stateflow en el nivel de gráfico.N/2, dondeNes una variable en el área de trabajo base de MATLAB®.[P Q], dondePyQson 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, dondeRedes un valor enumerado de tipoColors.size(u), dondeues una variable en el nivel de gráfico. La funciónsizepermite 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ónsizey especificando el tamaño de los datos directamente.floor((a*b)/c), dondeaycson escalares de tipoint16ybes un escalar de tipodouble.[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ónfi(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:
DefineoImportedDefinecon un archivo de encabezado especificadoCompilerFlagUna 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
fi (Fixed-Point Designer) | size