Contenuto principale

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

If

Selezionare l'esecuzione del sottosistema utilizzando una logica simile alla dichiarazione if-else

  • If block

Librerie:
Simulink / Ports & Subsystems

Descrizione

Il blocco If, insieme ai blocchi If Action Subsystem che contengono un blocco Action Port implementa la logica if-else per controllare l'esecuzione del sottosistema. Per un esempio che utilizza il blocco If, vedere Select Subsystem Execution.

Model ex_if_block

Esempi

Limitazioni

Il blocco If presenta le seguenti limitazioni:

  • Non supporta parametri sincronizzabili. I valori di un'espressione if o elseif non possono essere sincronizzati durante una simulazione in modalità normale o di accelerazione, né durante l'esecuzione del codice generato.

    Per implementare espressioni if-else sincronizzabili, sincronizzare l'espressione al di fuori del blocco If. Ad esempio, utilizzare il blocco Relational Operator per valutare l'espressione al di fuori del blocco If o aggiungere il parametro sincronizzabile come input al blocco If.

  • Non supporta classi di archiviazione personalizzate. Vedere Organize Parameter Data into a Structure by Using Struct Storage Class (Embedded Coder).

  • L'espressione if e le espressioni elseif non possono accettare determinati operatori, come +, -, * e /.

Porte

Input

espandi tutto

Gli input u1,u2,...,un devono avere lo stesso tipo di dati. Gli input non possono essere di un tipo definito dall'utente, come ad esempio di tipo enumerato.

Il blocco If non supporta direttamente i tipi di dati in virgola fissa. Tuttavia, è possibile utilizzare il blocco Compare To Constant per aggirare questa limitazione. Vedere Supporto del tipo di dati in virgola fissa in Select Subsystem Execution.

Tipi di dati: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean

Output

espandi tutto

Gli output delle porte if, else e elseif sono segnali di azione per i blocchi If Action Subsystem.

Parametri

espandi tutto

1

Specificare una porta di input.

intero

Specificare il numero di porte di input. Le porte del blocco sono etichettate con un carattere 'u' seguito da un numero 1,2,...,n, dove n corrisponde al numero di input specificati dall'utente.

Utilizzo programmatico

Parametro dei blocchi: NumInputs
Tipo: vettore di caratteri
Valori: '1' | numero intero tra virgolette
Impostazione predefinita: '1'

Quando la porta if e tutte le espressioni della porta elseif sono false, la porta else invia un segnale di azione per eseguire il blocco If Action Subsystem collegato.

on

Mostra la porta else.

off

Nasconde la porta else.

Utilizzo programmatico

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

Controllare il rilevamento dello zero-crossing.

on

Rilevare gli zero-crossing.

off

Non rilevare gli zero-crossing.

Utilizzo programmatico

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

Da R2025a

Selezionare questo parametro per assicurarsi che nel codice generato da un blocco If siano incluse solo dichiarazioni if-else.

on

Nel codice generato sono incluse solo dichiarazioni if-else. Questa opzione impedisce l'inclusione di dichiarazioni switch-case nel codice generato.

off

Quando questo parametro è impostato su off, il codice generato da un blocco If potrebbe contenere dichiarazioni switch-case, che eseguono le stesse operazioni del blocco If.

Utilizzo programmatico

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

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

Il blocco If Action Subsystem collegato alla porta if viene eseguito quando l'espressione if associata viene valutata come true.

u1 > 0

Specificare l'invio di un segnale di azione sulla porta di output quando l'input u1 è maggiore di 0.

espressione logica

Nota

A partire dalla release R2025a, per modificare l'espressione if predefinita (u1 > 0), utilizzare la tabella Expressions. Per un'espressione complessa con più input e operatori, selezionare l'espressione if e modificarla nella casella Expression editor.

Per le versioni precedenti alla release R2025a, questo parametro appare come If expressions nella finestra di dialogo del blocco. Utilizzando questo parametro, è possibile specificare le espressioni logiche.

Tuttavia, in tutte le versioni di Simulink®, questa espressione appare sul blocco If adiacente alla porta di output if.

L'espressione può includere solo gli operatori <, <=, ==, ~=, >, >=, &, |, ~, () e unary-minus. Operatori come +, -, *, / e ^ non sono consentiti. L'espressione non deve contenere espressioni del tipo di dati, ad esempio int8(6) e non deve fare riferimento a variabili del workspace il cui tipo di dati sia diverso da double o single.

Utilizzo programmatico

Parametro dei blocchi: IfExpression
Tipo: vettore di caratteri
Valori: 'u1 > 0' | espressione logica tra virgolette
Impostazione predefinita: 'u1 > 0'

Il blocco If Action Subsystem collegato a una porta elseif viene eseguito quando l'espressione elseif associata viene valutata come true e tutte le altre espressioni if e elseif sono false.

vuoto

Espressioni logiche non specificate.

elenco delle espressioni logiche

Nota

A partire dalla release R2025a, per aggiungere e modificare le espressioni elseif, utilizzare la tabella Expressions. Utilizzare i pulsanti di azione a sinistra della tabella per aggiungere, eliminare e spostare le espressioni. La tabella consente di scrivere ogni espressione elseif separatamente piuttosto che in un elenco separato da virgole e di organizzare le espressioni in base alle esigenze di modellazione. Per un'espressione complessa con più input e operatori, selezionare la riga contenente l'espressione elseif e modificarla nella casella Expression editor.

Per le versioni precedenti alla release R2025a, questo parametro appare come Else expressions nella finestra di dialogo del blocco. In queste versioni, specificare un elenco di espressioni logiche separate da virgole.

Tuttavia, in tutte le versioni di Simulink, le espressioni appaiono sul blocco If sotto la porta if e sopra la porta else quando si seleziona la casella di spunta Show else condition.

Le espressioni possono includere solo gli operatori <, <=, ==, ~=, >, >=, &, |, ~, () e unary-minus. Operatori come +, -, *, / e ^ non sono consentiti. Le espressioni non devono contenere espressioni del tipo di dati, ad esempio int8(6) e non devono fare riferimento a variabili del workspace il cui tipo di dati sia diverso da double o single.

Utilizzo programmatico

Parametro dei blocchi: ElseIfExpressions
Tipo: vettore di caratteri
Valori: '' | elenco di espressioni logiche tra virgolette e separate da virgole
Impostazione predefinita: ''

Caratteristiche del blocco

Tipi di dati:

Boolean | double | integer | single

Passaggio diretto

Segnali multidimensionali

no

Segnali di dimensioni variabili

no

Rilevamento zero-crossing

Funzionalità estese

espandi tutto

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

Cronologia versioni

Introduzione prima di R2006a

espandi tutto