Contenuto principale

Data Type Conversion

Convertire il segnale di input nel tipo di dato specificato

  • Data Type Conversion block

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

Descrizione

Il blocco Data Type Conversion converte un segnale di input di qualsiasi tipo di dato di Simulink® nel tipo di dato specificato.

Nota

Per controllare il tipo di dato di output specificando i parametri del blocco o per ereditare un tipo di dato da un blocco a valle, utilizzare il blocco Data Type Conversion. Per ereditare un tipo di dato da un segnale diverso nel modello, utilizzare il blocco Data Type Conversion Inherited.

Conversione di segnali in virgola fissa

Quando si effettua la conversione tra tipi di dato in virgola fissa, il parametro Input and output to have equal controlla il comportamento del blocco. Questo parametro non modifica il comportamento del blocco quando:

  • L'input e l'output non hanno un tipo di dato in virgola fissa.

  • L'input o l'output ha un tipo di dato in virgola fissa con ridimensionamento semplice.

Per ulteriori informazioni sui numeri in virgola fissa, vedere Fixed-Point Numbers in Simulink (Fixed-Point Designer).

Per convertire un segnale da un tipo di dato a un altro cercando di preservare il valore reale del segnale di input, selezionare Real World Value (RWV), l'impostazione predefinita. Il blocco considera i limiti imposti dal ridimensionamento dell'input e dell'output e cerca di generare un output con valore reale equivalente.

Per modificare il valore reale del segnale di input eseguendo una reinterpretazione del ridimensionamento del valore intero memorizzato, selezionare Stored Integer (SI). Entro i limiti dei tipi di dato specificati, il blocco cerca di preservare il valore intero memorizzato del segnale durante la conversione. Una best practice consiste nello specificare i tipi di dato di input e di output utilizzando la stessa lunghezza di parola e lo stesso segno. In questo modo si garantisce che il blocco modifichi solo il ridimensionamento del segnale. Specificare un segno o una lunghezza di parola diversi per l'input e per l'output potrebbe produrre risultati imprevisti, come la perdita di intervallo o estensioni di segno impreviste. Per un esempio, vedere Conversione dei tipi di dato nei modelli di Simulink.

Se si seleziona Stored Integer (SI), il blocco non esegue una reinterpretazione dei bit di livello inferiore di un segnale di input in virgola mobile. Ad esempio, se l'input è single e ha valore 5, i bit che memorizzano l'input nella memoria sono indicati in esadecimale dal seguente comando.

num2hex(single(5))
40a00000

Tuttavia, il blocco Data Type Conversion non tratta il valore intero memorizzato come 40a00000, ma piuttosto come il valore reale 5. Dopo la conversione, il valore intero da memorizzare dell'output è 5.

Conversione di segnali enumerati

Utilizzare un blocco Data Type Conversion per convertire i segnali enumerati come segue:

  1. Per convertire un segnale di tipo enumerato in un segnale di qualsiasi tipo numerico.

    I numeri interi sottostanti di tutti i valori enumerati in input al blocco Data Type Conversion devono rientrare nell'intervallo del tipo numerico. In caso contrario, si verifica un errore durante la simulazione.

  2. Per convertire un segnale di qualsiasi tipo di numero intero in un segnale di tipo enumerato.

    Il valore in input al blocco Data Type Conversion deve corrispondere al valore sottostante di un valore enumerato. In caso contrario, si verifica un errore durante la simulazione.

    È possibile abilitare il parametro Saturate on integer overflow in modo che Simulink utilizzi il valore predefinito del tipo enumerato quando il valore in input al blocco non corrisponde al valore sottostante di un valore enumerato. Vedere Type Casting for Enumerations (Simulink Coder).

Nei casi seguenti, non è possibile utilizzare un blocco Data Type Conversion:

  • Per convertire un segnale numerico non intero in un segnale enumerato.

  • Per convertire un segnale complesso in un segnale enumerato, indipendentemente dai tipi di dato delle parti reali e immaginarie del segnale complesso.

Per informazioni sull'utilizzo dei tipi enumerati, vedere Simulink Enumerations.

Esempi

espandi tutto

Questo esempio mostra tre diversi metodi per convertire i tipi di dato nel modello utilizzando i blocchi Data Type Conversion e Data Type Conversion Inherited. In questo modello, un blocco Sine Wave genera il segnale di input. Il blocco Sine Wave genera solo tipi di dato a doppia precisione, quindi per generare un'onda sinusoidale con un tipo di dato a precisione singola è necessario eseguire una conversione del tipo di dato.

Nella prima riga, il blocco Data Type Conversion Inherited utilizza il tipo di dato proveniente dal blocco Constant (a precisione singola) come tipo di dato di riferimento e converte l'onda sinusoidale nel tipo a precisione singola.

Nella seconda riga, il blocco Data Type Conversion ha il tipo di dato di output impostato su single e l'onda sinusoidale viene convertita di conseguenza.

Nella terza riga, il blocco Data Type Conversion1 ha il tipo di dato di output impostato su Inherit: Inherit via back propagation. Poiché il blocco Gain2 a valle ha un tipo di dato a precisione singola, il blocco Data Type Conversion1 converte l'onda sinusoidale in un tipo di dato a precisione singola.

Porte

Input

espandi tutto

Segnale di input, specificato come scalare, vettore, matrice o array N-D. L'input può essere qualsiasi segnale con valore reale o complesso. Se l'input è reale, l'output è reale. Se l'input è complesso, l'output è complesso. Il blocco converte il segnale di input nel Output data type specificato.

Quando si effettua la conversione di tipi di dato in virgola fissa, utilizzare il parametro Input and output to have equal per determinare se la conversione avviene in base al valore Real World Value (RWV) o Stored Integer (SI) del segnale. Per ulteriori informazioni, vedere Conversione di segnali in virgola fissa.

Tipi di dati: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated

Output

espandi tutto

Segnale di output, convertito nel tipo di dato specificato, con le stesse dimensioni del segnale di input.

Tipi di dati: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated

Parametri

espandi tutto

Valore inferiore dell'intervallo di output controllato dal software.

Il software utilizza il minimo per eseguire:

Suggerimenti

Output minimo non satura e non taglia il segnale di output effettivo. Utilizzare invece il blocco Saturation.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param.

Parametro: OutMin
Valori: '[]' (predefinito) | scalar in quotes

Valore superiore dell'intervallo di output controllato dal software.

Il software utilizza il valore massimo per eseguire:

Suggerimenti

Output massimo non satura e non taglia il segnale di output effettivo. Utilizzare invece il blocco Saturation.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param.

Parametro: OutMax
Valori: '[]' (predefinito) | scalar in quotes

Scegliere il tipo di dato per l'output. Il tipo può essere ereditato, specificato direttamente o espresso come oggetto del tipo di dato, come Simulink.NumericType.

Utilizzo programmatico

Parametro dei blocchi: OutDataTypeStr
Tipo: vettore di caratteri
Valori: '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>'
Impostazione predefinita: 'Inherit: Inherit via back propagation'

Selezionare questo parametro per evitare che gli strumenti in virgola fissa sovrascrivano il tipo di dati di Output specificato nel blocco. Per ulteriori informazioni, vedere Use Lock Output Data Type Setting (Fixed-Point Designer).

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param.

Parametro: LockScale
Valori: 'off' (predefinito) | 'on'

Specificare quale tipo di input e di output devono essere uguali, nel contesto della rappresentazione dei dati in virgola fissa.

  • Real World Value (RWV): specifica l'obiettivo di rendere il Real World Value (RWV) dell'input uguale al Real World Value (RWV) dell'output.

  • Stored Integer (SI): specifica l'obiettivo di rendere il valore Stored Integer (SI) dell'input uguale al valore Stored Integer (SI) dell'output.

Utilizzo programmatico

Parametro dei blocchi: ConvertRealWorld
Tipo: vettore di caratteri
Valori: 'Real World Value (RWV)' | 'Stored Integer (SI)'
Impostazione predefinita: 'Real World Value (RWV)'

Scegliere uno dei seguenti metodi di arrotondamento.

Ceiling

Arrotonda i numeri positivi e negativi verso l'infinito positivo. Equivale alla funzione MATLAB® ceil.

Convergent

Arrotonda il numero al valore rappresentabile più vicino. In caso di parità, arrotonda al numero intero pari più vicino. Equivale alla funzione Fixed-Point Designer™ convergent.

Floor

Arrotonda i numeri positivi e negativi verso l'infinito negativo. Equivale alla funzione MATLAB floor.

Nearest

Arrotonda il numero al valore rappresentabile più vicino. In caso di parità, arrotonda verso l'infinito positivo. Equivale alla funzione Fixed-Point Designer nearest.

Round

Arrotonda il numero al valore rappresentabile più vicino. In caso di parità, arrotonda i numeri positivi verso l'infinito positivo e i numeri negativi verso l'infinito negativo. Equivale alla funzione Fixed-Point Designer round.

Simplest

Sceglie automaticamente tra l'arrotondamento per difetto e l'arrotondamento verso lo zero per generare un codice di arrotondamento il più efficiente possibile.

Zero

Arrotonda il numero verso lo zero. Equivale alla funzione MATLAB fix.

Utilizzo programmatico

Parametro dei blocchi: RndMeth
Tipo: vettore di caratteri
Valori: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
Impostazione predefinita: 'Floor'

Vedere anche

Per ulteriori informazioni, vedere Rounding Modes (Fixed-Point Designer).

Specificare se gli overflow devono saturare o avvolgersi.

  • on: gli overflow saturano fino al valore minimo o massimo che il tipo di dato può rappresentare.

  • off: gli overflow si avvolgono al valore appropriato che il tipo di dato può rappresentare.

Ad esempio, il valore massimo che il numero intero con segno a 8 bit int8 può rappresentare è 127. Qualsiasi risultato dell'operazione sul blocco superiore a questo valore massimo causa un overflow dell'intero a 8 bit.

  • Con questo parametro selezionato, l'output del blocco si satura a 127. In modo analogo, l'output del blocco si satura a un valore di output minimo di -128.

  • Se questo parametro è cancellato, il software interpreta il valore che causa l'overflow come int8, che può produrre un risultato non desiderato. Ad esempio, un risultato del blocco di 130 (binario 1000 0010) espresso come int8 è -126.

Suggerimenti

  • Considerare la possibilità di selezionare questo parametro quando il modello presenta un possibile overflow e si desidera una protezione esplicita dalla saturazione nel codice generato.

  • Considerare la possibilità di cancellare questo parametro quando si desidera ottimizzare l'efficienza del codice generato. La cancellazione di questo parametro aiuta inoltre a evitare di specificare in modo eccessivo il modo in cui un blocco gestisce i segnali fuori intervallo. Per ulteriori informazioni, vedere Troubleshoot Signal Range Errors.

  • Quando si seleziona questo parametro, la saturazione si applica a ogni operazione interna sul blocco, non solo all'output o al risultato.

  • In generale, il processo di generazione di codice può rilevare quando l'overflow non è possibile. In questo caso, il generatore di codice non produce codice di saturazione.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param.

Parametro: SaturateOnIntegerOverflow
Valori: 'off' (predefinito) | 'on'

Specificare l'intervallo di tempo tra i campionamenti. Per ereditare il tempo di campionamento, impostare questo parametro su -1. Per ulteriori informazioni, vedere Specifica del tempo di campionamento.

Dipendenze

Questo parametro è visibile solo se è stato impostato su un valore diverso da -1. Per saperne di più, vedere Blocks for Which Sample Time Is Not Recommended.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param.

Parametro: SampleTime
Valori: "-1" (predefinito) | scalar or vector in quotes

Selezionare la categoria di dati da specificare.

  • Inherit: regole di ereditarietà per i tipi di dato. Selezionando Inherit, si abilita un secondo menu/casella di testo sulla destra in cui è possibile selezionare la modalità di ereditarietà.

  • Built in: tipi di dato integrati. Selezionando Built in, si abilita un secondo menu/casella di testo sulla destra in cui è possibile selezionare un tipo di dato integrato.

  • Fixed point: tipi di dato in virgola fissa. Selezionando Fixed point si abilitano ulteriori parametri che è possibile utilizzare per specificare un tipo di dato in virgola fissa.

  • Expression: espressioni che restituiscono tipi di dato. Selezionando Expression, si abilita un secondo menu/casella di testo sulla destra in cui è possibile inserire l'espressione.

Per ulteriori informazioni, vedere Specify Data Types Using Data Type Assistant.

Dipendenze

Per abilitare questo parametro, fare clic sul pulsante Show data type assistant.

Selezionare la modalità di sovrascrittura del tipo di dati per questo segnale.

  • Quando si seleziona Inherit, Simulink eredita l'impostazione di sovrascrittura del tipo di dato dal suo contesto, ossia dal blocco, dall'oggetto di Simulink.Signal o dal diagramma Stateflow® in Simulink che sta utilizzando il segnale.

  • Quando si seleziona Off, Simulink ignora l'impostazione di sovrascrittura del tipo di dato del suo contesto e utilizza il tipo di dato in virgola fissa specificato per il segnale.

Per ulteriori informazioni, vedere Specify Data Types Using Data Type Assistant nella documentazione di Simulink.

Dipendenze

Per abilitare questo parametro, impostare Mode su Built in o Fixed point.

Suggerimenti

La possibilità di disattivare la sovrascrittura del tipo di dati per un singolo tipo di dati offre un maggiore controllo sui tipi di dati del modello quando si applica la sovrascrittura degli stessi. Ad esempio, è possibile utilizzare questa opzione per garantire che i tipi di dati soddisfino i requisiti dei blocchi a valle, indipendentemente dall'impostazione di sovrascrittura del tipo di dati.

Specificare se i dati in virgola fissa sono con segno o senza segno. I dati con segno possono rappresentare valori positivi e negativi, mentre quelli senza segno rappresentano solo valori positivi.

  • Signed specifica che il dato in virgola fissa è con segno.

  • Unsigned specifica che il dato in virgola fissa è senza segno.

Per ulteriori informazioni, vedere Specify Data Types Using Data Type Assistant.

Dipendenze

Per abilitare questo parametro, impostare Mode su Fixed point.

Specificare il metodo per il ridimensionamento dei dati in virgola fissa per evitare condizioni di overflow e minimizzare gli errori di quantizzazione. Per ulteriori informazioni, vedere Specifying a Fixed-Point Data Type.

Dipendenze

Per abilitare questo parametro, impostare Mode su Fixed point.

Specificare la dimensione in bit della parola che contiene il numero intero quantizzato. Per ulteriori informazioni, vedere Specifying a Fixed-Point Data Type.

Dipendenze

Per abilitare questo parametro, impostare Mode su Fixed point.

Specificare la lunghezza della frazione per il tipo di dato in virgola fissa come numero intero positivo o negativo. Per ulteriori informazioni, vedere Specifying a Fixed-Point Data Type.

Dipendenze

Per abilitare questo parametro, impostare Scaling su Binary point.

Specificare la pendenza per il tipo di dato in virgola fissa. Per ulteriori informazioni, vedere Specifying a Fixed-Point Data Type.

Dipendenze

Per abilitare questo parametro, impostare Scaling su Slope and bias.

Specificare il bias per il tipo di dato in virgola fissa come qualsiasi numero reale. Per ulteriori informazioni, vedere Specifying a Fixed-Point Data Type.

Dipendenze

Per abilitare questo parametro, impostare Scaling su Slope and bias.

Caratteristiche del blocco

Tipi di dati:

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

Passaggio diretto

Segnali multidimensionali

Segnali di dimensioni variabili

Rilevamento zero-crossing

no

Ulteriori informazioni

espandi tutto

Funzionalità estese

espandi tutto

Generazione di codice C/C++
Genera codice C e C++ con Simulink® Coder™.

Generazione di codice PLC
Genera codice di testo strutturato con Simulink® PLC Coder™.

Conversione a virgola fissa
Progetta e simula sistemi a virgola fissa con Fixed-Point Designer™.

Cronologia versioni

Introduzione prima di R2006a