Contenuto principale

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

Nota

Le limitazioni elencate in questa sezione si applicano solo alla release R2025b e versioni precedenti.

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

A partire dalla release R2026a, è possibile modificare le etichette delle porte di input in base alle espressioni logiche utilizzate all'interno del blocco. Per modificare l'etichetta della porta, soffermarsi con il cursore sul testo predefinito u1,u2,...,un e modificarlo.

The default port label u1 of the If block is changed to a new label sig1.

Per la release R2025b o versioni precedenti, il blocco accetta solo l'etichetta predefinita della porta di input u1,u2,...,un. Gli input u1,u2,...,un devono avere lo stesso tipo di dato. 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 dato in virgola fissa. Tuttavia, è possibile utilizzare il blocco Compare To Constant per aggirare questa limitazione. Vedere 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 (dalla release R2026a)

Utilizzare un intervallo di espressioni logiche, comprese quelle che utilizzano:

  • Parametri sincronizzabili.

  • Espressioni generali di MATLAB®, come x1 > x2 + 5.

  • Oggetti dati come Simulink.Parameter e Simulink.Signal con classi di storage personalizzate. Per ulteriori informazioni, vedere Create and Apply Storage Class Defined in User-Defined Package (Embedded Coder).

  • Tipo di dato in virgola fissa.

  • Tipo di dato enumerato.

  • Array di strutture di MATLAB.

  • Espressioni con:

    • Funzioni aritmetiche: ceil, floor, abs e sign.

    • Funzioni trigonometriche: sin, cos, tan, asin, acos, atan, atan2, sinh, cosh e tanh.

    • Funzioni esponenziali, logaritmiche e radicali: log, log10, exp e sqrt.

Espressione logica (release R2025b e precedenti)

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. È possibile specificare le espressioni logiche utilizzando questo parametro.

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 dato, ad esempio int8(6) e non deve fare riferimento a variabili del workspace il cui tipo di dato 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 (dalla release R2026a)

  • Utilizzare un intervallo di espressioni logiche precedentemente non supportate, comprese quelle che utilizzano:

    • Parametri sincronizzabili.

    • Espressioni generali di MATLAB, come x1 > x2 + 5.

    • Oggetti dati come Simulink.Parameter e Simulink.Signal con classi di storage personalizzate. Per ulteriori informazioni, vedere Create and Apply Storage Class Defined in User-Defined Package (Embedded Coder).

    • Tipo di dato in virgola fissa.

    • Tipo di dato enumerato.

    • Array di strutture di MATLAB.

    • Espressioni con:

      • Funzioni aritmetiche: ceil, floor, abs e sign.

      • Funzioni trigonometriche: sin, cos, tan, asin, acos, atan, atan2, sinh, cosh e tanh.

      • Funzioni esponenziali, logaritmiche e radicali: log, log10, exp e sqrt.

Espressioni logiche (release R2025b e precedenti)

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 dato, ad esempio int8(6) e non devono fare riferimento a variabili del workspace il cui tipo di dato 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

Ulteriori informazioni

espandi tutto

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