Contenido principal

Data Type Conversion

Convertir señales de entrada al tipo de datos especificado

  • Data Type Conversion block

Bibliotecas:
Simulink / Commonly Used Blocks
Simulink / Signal Attributes
HDL Coder / Commonly Used Blocks
HDL Coder / HDL Floating Point Operations
HDL Coder / Signal Attributes

Descripción

El bloque Data Type Conversion convierte una señal de entrada de cualquier tipo de datos de Simulink® al tipo de datos que especifique.

Nota

Para controlar el tipo de datos de salida especificando parámetros de bloque o para heredar un tipo de datos de un bloque descendente, utilice el bloque Data Type Conversion. Para heredar un tipo de datos desde una señal diferente del modelo, utilice el bloque Data Type Conversion Inherited.

Convertir señales de punto fijo

Cuando se realiza la conversión entre tipos de datos de punto fijo, el parámetro Input and output to have equal controla el comportamiento del bloque. Este parámetro no cambia el comportamiento del bloque cuando:

  • La entrada y la salida no tienen un tipo de datos de punto fijo.

  • La entrada o la salida tienen un tipo de datos de punto fijo con escalado trivial.

Para obtener más información sobre números de punto fijo, consulte Números de punto fijo en Simulink (Fixed-Point Designer).

Para convertir una señal de un tipo de datos a otro intentando preservar el valor real de la señal de entrada, seleccione la configuración predeterminada Real World Value (RWV). El bloque tiene en cuenta los límites impuestos por el escalado de la entrada y la salida e intenta generar una salida con un valor real igual.

Para cambiar el valor real de la señal de entrada realizando una reinterpretación de escalado del valor entero almacenado, seleccione Stored Integer (SI). Dentro de los límites de los tipos de datos especificados, el bloque intenta preservar el valor entero almacenado de la señal durante la conversión. Se recomienda especificar los tipos de datos de entrada y salida usando la misma longitud de palabra y representación de signo. De este modo, se garantiza que el bloque solo cambie el escalado de la señal. Especificar una representación de signo o longitud de palabra diferentes para la entrada y la salida podría producir resultados inesperados, como pérdida de rango o extensiones de signo inesperadas. Para ver un ejemplo, consulte Convertir tipos de datos a modelos de Simulink.

Si selecciona Stored Integer (SI), el bloque no realiza una reinterpretación de bit a bajo nivel de una señal de entrada de punto flotante. Por ejemplo, si la entrada es single y tiene el valor 5, los bits que almacenan la entrada en la memoria se proporcionan en hexadecimal con el siguiente comando.

num2hex(single(5))
40a00000

No obstante, el bloque Data Type Conversion no trata el valor entero almacenado como 40a00000, sino como el valor real, 5. Después de la conversión, el valor entero almacenado de la salida es 5.

Convertir señales enumeradas

Utilice un bloque Data Type Conversion para convertir señales enumeradas de la siguiente manera:

  1. Para convertir una señal de tipo enumerado en una señal de cualquier tipo numérico.

    Los enteros subyacentes de todos los valores enumerados que se introducen en el bloque Data Type Conversion deben encontrarse dentro del rango del tipo numérico. De lo contrario, se produce un error durante la simulación.

  2. Para convertir una señal de cualquier tipo entero en una señal de tipo enumerado.

    El valor que se introduce en el bloque Data Type Conversion debe coincidir con el valor subyacente de un valor enumerado. De lo contrario, se produce un error durante la simulación.

    Puede activar el parámetro Saturate on integer overflow para que Simulink utilice el valor predeterminado del tipo enumerado cuando el valor que se introduce en el bloque no coincida con el valor subyacente de un valor enumerado. Consulte Type Casting for Enumerations (Simulink Coder).

No se puede utilizar un bloque Data Type Conversion en estos casos:

  • Para convertir una señal numérica no entera en una señal enumerada.

  • Para convertir una señal compleja en una señal enumerada, independientemente de los tipos de datos de las partes reales e imaginarias de la señal completa.

Consulte Simulink Enumerations para obtener información sobre cómo trabajar con tipos enumerados.

Ejemplos

expandir todo

En este ejemplo se muestran tres métodos diferentes para convertir tipos de datos del modelo utilizando los bloques Data Type Conversion y Data Type Conversion Inherited. En este modelo, un bloque Sine Wave genera la señal de entrada. El bloque Sine Wave solo produce como salida tipos de datos de doble precisión, por lo que para generar una onda sinusoidal con un tipo de datos simple, se debe realizar una conversión de tipo de datos.

En la primera fila, el bloque Data Type Conversion Inherited utiliza el tipo de datos del bloque Constant (simple) como tipo de datos de referencia y convierte la onda sinusoidal en simple.

En la segunda fila, el bloque Data Type Conversion tiene el tipo de datos de salida establecido en single y la onda sinusoidal se ha convertido en consecuencia.

En la tercera fila, el bloque Data Type Conversion1 tiene el tipo de datos de salida establecido en Inherit: Inherit via back propagation. Dado que el bloque posterior Gain2 tiene un tipo de datos simple, el bloque Data Type Conversion1 convierte la onda sinusoidal en un tipo de datos simple.

Puertos

Entrada

expandir todo

Señal de entrada, especificada como un escalar, un vector, una matriz o un arreglo N-D. La entrada puede ser cualquier señal con valor real o completo. Si la entrada es real, la salida es real. Si la entrada es compleja, la salida es compleja. El bloque convierte la señal de entrada en el tipo Output data type especificado.

Cuando convierta tipos de datos de punto fijo, utilice el parámetro Input and output to have equal para determinar si la conversión se realiza según el valor Real World Value (RWV) o Stored Integer (SI) de la señal. Para obtener más información, consulte Convertir señales de punto fijo.

Tipos de datos: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated

Salida

expandir todo

Señal de salida, convertida al tipo de datos especificado, con las mismas dimensiones que la señal de entrada.

Tipos de datos: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated

Parámetros

expandir todo

Valor inferior del rango de salida que comprueba el software.

El software usa el mínimo para realizar lo siguiente:

Sugerencias

Output minimum no satura ni recorta la señal de salida real. Use el bloque Saturation en su lugar.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: OutMin
Valores: '[]' (predeterminado) | scalar in quotes

Valor superior del rango de salida que comprueba el software.

El software usa el valor máximo para realizar lo siguiente:

Sugerencias

Output maximum no satura ni recorta la señal de salida real. Use el bloque Saturation en su lugar.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: OutMax
Valores: '[]' (predeterminado) | scalar in quotes

Elija el tipo de datos para la salida. El tipo puede heredarse, especificarse directamente o expresarse como un objeto de tipo de datos, como Simulink.NumericType.

Uso programático

Parámetro de bloque: OutDataTypeStr
Tipo: vector de caracteres
Valores: 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'Enum: <class name>' | '<data type expression>'
Predeterminado: 'Inherit: Inherit via back propagation'

Seleccione este parámetro para evitar que las herramientas de punto fijo anulen el tipo de datos de Output que se especificó en el bloque. Para obtener más información, consulte Use Lock Output Data Type Setting (Fixed-Point Designer).

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: LockScale
Valores: 'off' (predeterminado) | 'on'

Especifique qué tipo de entrada y salida debe ser igual, en el contexto de representación de datos de punto fijo.

  • Real World Value (RWV): especifica el objetivo de hacer que el valor Real World Value (RWV) de la entrada sea igual al valor Real World Value (RWV) de la salida.

  • Stored Integer (SI): especifica el objetivo de hacer que el valor Stored Integer (SI) de la entrada sea igual al valor Stored Integer (SI) de la salida.

Uso programático

Parámetro de bloque: ConvertRealWorld
Tipo: vector de caracteres
Valores: 'Real World Value (RWV)' | 'Stored Integer (SI)'
Predeterminado: 'Real World Value (RWV)'

Elija uno de estos modos de redondeo.

Ceiling

Redondea tanto números positivos como negativos hacia infinito positivo. Equivalente a la función ceil de MATLAB®.

Convergent

Redondea el número al valor representable más cercano. Si se produce un empate, redondea al entero par más cercano. Equivalente a la función convergent de Fixed-Point Designer™.

Floor

Redondea tanto números positivos como negativos hacia infinito negativo. Equivalente a la función floor de MATLAB.

Nearest

Redondea el número al valor representable más cercano. Si se produce un empate, redondea hacia infinito positivo. Equivalente a la función nearest de Fixed-Point Designer.

Round

Redondea el número al valor representable más cercano. Si se produce un empate, redondea los números positivos al infinito positivo y redondea los números negativos hacia infinito negativo. Equivalente a la función round de Fixed-Point Designer.

Simplest

Elige automáticamente entre el redondeo hacia abajo y el redondeo hacia cero para generar código de redondeo que sea lo más eficiente posible.

Zero

Redondea el número hacia cero. Equivalente a la función fix de MATLAB.

Uso programático

Parámetro de bloque: RndMeth
Tipo: vector de caracteres
Valores: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
Predeterminado: 'Floor'

Consulte también

Para obtener más información, consulte Rounding Modes (Fixed-Point Designer).

Especifique si los desbordamientos saturan o ajustan valores.

  • on: los desbordamientos saturan al valor mínimo o máximo que el tipo de datos puede representar.

  • off: los desbordamientos se ajustan al valor adecuado que el tipo de datos puede representar.

Por ejemplo, el valor máximo que el entero de 8 bits int8 con signo puede representar es 127. Cualquier resultado de la operación del bloque mayor que este valor máximo provocará el desbordamiento del entero de 8 bits.

  • Con el parámetro seleccionado, la salida del bloque satura a 127. De forma similar, la salida del bloque satura a un valor de salida mínimo de -128.

  • Con este parámetro desactivado, el software interpreta que el valor que genera el desbordamiento es int8, que puede provocar un resultado no intencionado. Por ejemplo, un resultado del bloque de 130 (binario 1000 0010) expresado como int8, es -126.

Sugerencias

  • Considere la posibilidad de seleccionar este parámetro cuando su modelo tenga un desbordamiento posible y desee una protección explícita de saturación en el código generado.

  • Considere la posibilidad de desactivar este parámetro cuando desee optimizar la eficiencia del código generado. Desactivar este parámetro también ayuda a evitar especificar cómo trata un bloque las señales fuera de rango. Para obtener más información, consulte Troubleshoot Signal Range Errors.

  • Cuando se selecciona este parámetro, la saturación se aplica a cada operación interna del bloque, no solo a la salida o al resultado.

  • Por lo general, el proceso de generación de código puede detectar cuándo el desbordamiento no es posible. En este caso, el generador de código no produce código de saturación.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: SaturateOnIntegerOverflow
Valores: 'off' (predeterminado) | 'on'

Especifique el intervalo de tiempo entre muestreos. Para heredar el tiempo de muestreo, establezca este parámetro en -1. Para obtener más información, consulte Especificar el tiempo de muestreo.

Dependencias

Este parámetro solo es visible si se establece en un valor distinto de -1. Para obtener más información, consulte, Blocks for Which Sample Time Is Not Recommended.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: SampleTime
Valores: "-1" (predeterminado) | scalar or vector in quotes

Selecciona la categoría de datos que desee especificar.

  • Inherit: reglas de herencia para tipos de datos. Seleccionar Inherit activa un menú secundario o cuadro de texto a la derecha donde se puede seleccionar el modo de herencia.

  • Built in: tipos de datos integrados. Cuando selecciona Built in, se activa un menú secundario o cuadro de texto a la derecha donde se puede seleccionar un tipo de datos integrado.

  • Fixed point: tipos de datos de punto fijo. Cuando selecciona Fixed point, se activan parámetros adicionales que se pueden usar para especificar un tipo de datos de punto fijo.

  • Expression: expresiones que evalúan los tipos de datos. Cuando selecciona Expression, se activa un menú secundario o cuadro de texto a la derecha, donde se puede introducir la expresión.

Para obtener más información, consulte Specify Data Types Using Data Type Assistant.

Dependencias

Para activar este parámetro, haga clic en el botón Show data type assistant.

Seleccione el modo de anulación del tipo de datos para esta señal.

  • Cuando selecciona Inherit, Simulink hereda la configuración de anulación del tipo de datos de su contexto, es decir, del bloque, el objeto Simulink.Signal o el gráfico de Stateflow® en Simulink que está utilizando la señal.

  • Cuando selecciona Off, Simulink ignora la configuración de anulación del tipo de datos de su contexto y usa el tipo de datos de punto fijo especificado para la señal.

Para obtener más información, consulte Specify Data Types Using Data Type Assistant en la documentación de Simulink.

Dependencias

Para activar este parámetro, establezca Mode en Built in o Fixed point.

Sugerencias

La capacidad de desactivar la anulación del tipo de datos para un tipo de datos individual proporciona más control sobre el tipo de datos del modelo cuando aplica la anulación de tipo de datos. Por ejemplo, puede utilizar esta opción para garantizar que el tipo de datos cumplen los requisitos de los bloques descendentes independientemente de la configuración de la anulación del tipo de datos.

Especifique si datos de punto fijo con o sin signo. Los datos con signo pueden representar valores positivos y negativos, pero los datos sin signo solo representan valores positivos.

  • Signed especifica los datos de punto fijo con signo.

  • Unsigned especifica los datos de punto fijo sin signo.

Para obtener más información, consulte Specify Data Types Using Data Type Assistant.

Dependencias

Para activar este parámetro, establezca Mode en Fixed point.

Especifique el método para escalar los datos de punto fijo para evitar condiciones de desbordamiento y reducir los errores de cuantización. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Mode en Fixed point.

Especifique el tamaño en bits de la palabra que contiene el entero cuantizado. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Mode en Fixed point.

Especifique la longitud de fracción para el tipo de datos de punto fijo como un entero positivo o negativo. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Scaling en Binary point.

Especifique la inclinación para el tipo de datos de punto fijo. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Scaling en Slope and bias.

Especifique el sesgo para el tipo de datos de punto fijo como un número real cualquiera. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Scaling en Slope and bias.

Características del bloque

Tipos de datos

Boolean | double | enumerated | fixed point | half | integer | single

Paso directo

Señales multidimensionales

Señales de tamaño variable

Detección de cruce por cero

no

Más acerca de

expandir todo

Capacidades ampliadas

expandir todo

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