Contenuto principale

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Switch

Commutare l'output tra il primo input e il terzo in base al valore del secondo input

  • Switch block

Librerie:
Simulink / Commonly Used Blocks
Simulink / Signal Routing
HDL Coder / Commonly Used Blocks
HDL Coder / Signal Routing

Descrizione

Tipi di input del blocco

Il blocco Switch passa attraverso il primo o il terzo input in base al valore del secondo input. Il primo e il terzo input sono chiamati input dei dati. Il secondo input è chiamato input di controllo. Specificare la condizione in base alla quale il blocco passa il primo input utilizzando i parametri Criteria for passing first input e Threshold.

Per propagare immediatamente a ritroso un tipo di dato di output noto alla prima e alla terza porta di input, impostare il parametro Output data type su Inherit: Inherit via internal rule e selezionare la casella di spunta Require all data port inputs to have the same data type.

Suggerimento

Per la propagazione a ritroso Inherit: Inherit via internal rule, deve essere selezionato il parametro Require all data port inputs to have the same data type (Richiedere che tutti gli input della porta dati abbiano lo stesso tipo di dato). In caso contrario, il blocco non effettua automaticamente la propagazione a ritroso del tipo di dato di output alla prima e alla terza porta di output.

Limitazioni sugli input dei dati

Se si seleziona Allow different data input sizes, le grandezze dei due input dei dati possono essere diverse. Tuttavia, questo blocco non supporta segnali di input a grandezza variabile. Pertanto, la grandezza di ciascun input non può cambiare durante la simulazione.

Se gli input dei dati al blocco Switch sono bus, i nomi degli elementi di entrambi i bus devono essere uguali. L'utilizzo degli stessi nomi degli elementi garantisce che il bus di output abbia i medesimi nomi degli elementi, indipendentemente dal bus di input selezionato dal blocco. Per garantire che il modello soddisfi questo requisito, utilizzare un oggetto bus per definire i bus e impostare la diagnostica Element name mismatch su error. Per ulteriori informazioni, vedere Model Configuration Parameters: Connectivity Diagnostics.

Aspetto dell'icona del blocco

L'icona del blocco aiuta a identificare Criteria for passing first input e Threshold senza dover aprire la finestra di dialogo del blocco.

Per informazioni sull'ordine delle porte per i vari orientamenti del blocco, vedere Identify Port Location on Rotated or Flipped Block.

Comportamento del blocco per l'input di controllo booleano

Quando l'input di controllo è un segnale Boolean, utilizzare una di queste combinazioni di criterio e valore di soglia:

  • u2 >= Threshold, dove il valore di soglia è uguale a 1

  • u2 > Threshold, dove il valore di soglia è uguale a 0

  • u2 ~=0

In caso contrario, il blocco Switch ignora la soglia e utilizza l'input booleano per il routing del segnale. Per un input di controllo di 1, il blocco passa il primo input e per un input di controllo di 0, il blocco passa il terzo input. In questo caso, l'icona del blocco cambia dopo la fase di compilazione e utilizza T e F per etichettare rispettivamente il primo e il terzo input.

Tipo di dato supportato

L'input di controllo può essere di qualsiasi tipo di dato supportato da Simulink®, inclusi i tipi in virgola fissa e enumerati. L'input di controllo non può essere complesso. Se l'input di controllo è enumerato, il parametro Threshold deve avere un valore dello stesso tipo enumerato.

Gli input di dati possono essere di qualsiasi tipo di dato supportato da Simulink. Se uno degli input dei dati è di tipo enumerato, l'altro deve essere dello stesso tipo enumerato.

Quando l'output è di tipo enumerato, entrambi gli input dei dati devono utilizzare lo stesso tipo enumerato dell'output.

Per ulteriori informazioni, vedere Data Types Supported by Simulink.

Esempi

Porte

Input

espandi tutto

Primo dei due input dei dati. Il blocco propaga il primo o il secondo input dei dati all'output. Il blocco seleziona quale input passare in base all'input di controllo. Specificare la condizione affinché l'input di controllo passi il primo input utilizzando i parametri Criteria for passing first input e Threshold.

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

Segnale di controllo utilizzato dal blocco per determinare se passare il primo o il secondo input dei dati all'output. Se l'input di controllo soddisfa la condizione impostata nel parametro Criteria for passing first input, il blocco passa il primo input dei dati. In caso contrario, il blocco passa il secondo input dei dati.

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

Secondo dei due input dei dati. Il blocco propaga il primo o il secondo input dei dati all'output. Il blocco seleziona quale input passare in base all'input di controllo. Specificare la condizione affinché l'input di controllo passi il primo o il secondo input utilizzando i parametri Criteria for passing first input e Threshold.

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

Output

espandi tutto

Segnale di output propagato dal primo o dal secondo segnale di input, in base al valore del segnale di controllo.

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

Parametri

espandi tutto

Principale

Selezionare la condizione in base alla quale il blocco passa il primo input dei dati. Se l'input di controllo soddisfa la condizione impostata nel parametro Criteria for passing first input, il blocco passa il primo input. In caso contrario, il blocco passa il secondo segnale di input dei dati dall'input Port_3.

u2 >= Threshold

Verifica se l'input di controllo è maggiore di o uguale al valore di soglia.

u2 > Threshold

Verifica se l'input di controllo è maggiore del valore di soglia.

u2 ~= 0

Verifica se l'input di controllo è diverso da zero.

Nota

Il blocco Switch non supporta la modalità u2 ~= 0 per i tipi di dato enumerati.

Suggerimenti

Quando l'input di controllo è un segnale booleano, utilizzare una di queste combinazioni di condizione e valore di soglia:

  • u2 >= Threshold, dove il valore di soglia è uguale a 1

  • u2 > Threshold, dove il valore di soglia è uguale a 0

  • u2 ~= 0

In caso contrario, il blocco Switch ignora i valori di soglia e utilizza il valore booleano per il routing del segnale. Per un valore di 1, il blocco passa il primo input, mentre per un valore di 0, il blocco passa il terzo input. Un messaggio di avviso che descrive questo comportamento appare inoltre nella finestra di comando di MATLAB®.

Utilizzo programmatico

Parametro dei blocchi: Criteria
Tipo: vettore di caratteri
Valore: 'u2 >= Threshold' | 'u2 > Threshold' | 'u2 ~= 0'
Impostazione predefinita: 'u2 > Threshold'

Assegnare la soglia utilizzata in Criteria for passing first input che determina quale input il blocco passa all'output. Threshold deve essere maggiore di Output minimum e minore di Output maximum.

Utilizzare le parentesi per specificare una soglia non scalare. Ad esempio, sono valide le seguenti voci:

  • [1 4 8 12]

  • [MyColors.Red, MyColors.Blue]

Dipendenze

Impostando Criteria for passing first input su u2 ~= 0, questo parametro viene disabilitato.

Utilizzo programmatico

Parametro dei blocchi: Threshold
Tipo: vettore di caratteri
Valore: scalare
Impostazione predefinita: '0'

Selezionare per abilitare il rilevamento dello zero-crossing. Per ulteriori informazioni, vedere Zero-Crossing Detection.

Utilizzo programmatico

Parametro dei blocchi: ZeroCross
Tipo: vettore di caratteri | stringa
Valori: 'off' | 'on'
Impostazione predefinita: 'on'

Attributi del segnale

Data Type Assistant aiuta a impostare gli attributi dei dati. Per utilizzare Data Type Assistant, fare clic su the Show data type assistant button. Per ulteriori informazioni, vedere Specify Data Types Using Data Type Assistant.

Richiedere che tutti gli input dei dati abbiano lo stesso tipo di dato.

Utilizzo programmatico

Parametro dei blocchi: InputSameDT
Tipo: vettore di caratteri
Valore: 'off' | 'on'
Impostazione predefinita: 'off'

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

Specificare il tipo di dato di output.

Inherit: Inherit via internal rule

Utilizza le seguenti regole per determinare il tipo di dato di output.

Tipo di dato della prima porta di inputTipo di dato di output
Ha un intervallo positivo maggiore rispetto alla terza porta di inputEreditato dalla prima porta di input
Ha lo stesso intervallo positivo della terza porta di inputEreditato dalla terza porta di input
Ha un intervallo positivo minore rispetto alla terza porta di input
È un valore booleano e la terza porta di input è uint8
È uint8 e la terza porta di input è un valore booleano
È un valore booleano e l'altro è int8Impostato su un valore booleano
È uint8 e l'altro è un valore booleano
Tipi di dato di due porte di inputTipo di dato di output
Presenta un tipo di input come valore booleano e un altro come uint8Impostato sul tipo di dato della terza porta dati
Presenta un input come valore booleano e un altro come int8Impostato su un valore booleano
Inherit: Inherit via back propagation

Adotta il tipo di dato dal blocco di output.

Inherit: Inherit same as first input

Utilizza il tipo di dato della prima porta di input dei dati.

double

Specifica che il tipo di dato di output è double.

single

Specifica che il tipo di dato di output è single.

half

Specifica che il tipo di dato di output è half.

int8

Specifica che il tipo di dato di output è int8.

uint8

Specifica che il tipo di dato di output è uint8.

int16

Specifica che il tipo di dato di output è int16.

uint16

Specifica che il tipo di dato di output è uint16.

int32

Specifica che il tipo di dato di output è int32.

uint32

Specifica che il tipo di dato di output è uint32.

int64

Specifica che il tipo di dato di output è int64.

uint64

Specifica che il tipo di dato di output è uint64.

fixdt(1,16,0)

Specifica che il tipo di dato di output è in virgola fissa fixdt(1,16,0).

fixdt(1,16,2^0,0)

Specifica che il tipo di dato di output è in virgola fissa fixdt(1,16,2^0,0).

Enum: <class name>

Utilizza un tipo di dato enumerato, ad esempio, Enum: BasicColors.

Simulink.ImageType(480,640,3)

Utilizza un oggetto Simulink.ImageType (Computer Vision Toolbox) se è installato Computer Vision Toolbox™.

string

Specifica il tipo di dato di output come stringa.

<data type expression>

Utilizza un oggetto tipo di dato, ad esempio, Simulink.NumericType.

Suggerimenti

Quando l'output è di tipo enumerato, entrambi gli input dei dati devono utilizzare lo stesso tipo enumerato dell'output.

Utilizzo programmatico

Parametro dei blocchi: OutDataTypeStr
Tipo: vettore di caratteri
Valori: 'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | '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> | Simulink.ImageType(480,640,3) | 'string' | '<data type expression>'
Impostazione predefinita: 'Inherit: Inherit via internal rule'

Selezionare questo parametro per evitare che gli strumenti in virgola fissa sovrascrivano i tipi di dato specificati in questo blocco. Per ulteriori informazioni, vedere Lock the Output Data Type Setting (Fixed-Point Designer).

Utilizzo programmatico

Parametro dei blocchi: LockScale
Tipo: vettore di caratteri
Valori: 'off' | 'on'
Impostazione predefinita: 'off'

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'

Selezionare questa casella di spunta per accettare segnali di input di grandezze diverse. Il blocco propaga la grandezza del segnale di input al segnale di output. Se i due input dei dati sono segnali a grandezza variabile, la grandezza massima dei segnali può essere uguale o diversa.

Utilizzo programmatico

Parametro dei blocchi: AllowDiffInputSizes
Tipo: vettore di caratteri
Valore: 'on' | 'off'
Impostazione predefinita: 'off'

Caratteristiche del blocco

Tipi di dati:

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

Passaggio diretto

Segnali multidimensionali

Segnali di dimensioni variabili

Rilevamento zero-crossing

Funzionalità estese

espandi tutto

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