Contenu principal

If

Sélectionner l’exécution du sous-système en utilisant une logique semblable à l’instruction if-else

  • If block

Bibliothèques :
Simulink / Ports & Subsystems

Description

Le bloc If, ainsi que les blocs If Action Subsystem qui contiennent un bloc Action Port, implémente la logique if-else pour contrôler l’exécution des sous-systèmes. Pour un exemple qui utilise le bloc If, consultez Select Subsystem Execution.

Model ex_if_block

Exemples

Limitations

Remarque

Les limitations répertoriées dans cette section s’appliquent uniquement aux versions R2025b et antérieures.

Le bloc If possède les limitations suivantes :

  • Il ne supporte pas les paramètres réglables. Les valeurs d’une expression if ou elseif ne peuvent pas être réglées pendant une simulation en mode normal ou accélérateur, ni pendant l’exécution de code généré.

    Pour implémenter des expressions if-else, réglez l’expression hors du bloc If. Par exemple, utilisez le bloc Relational Operator pour évaluer l’expression hors du bloc If ou ajoutez le paramètre réglable comme entrée au bloc If.

  • Il ne supporte pas les classes de stockage personnalisées. Consultez la rubrique Organize Parameter Data into a Structure by Using Struct Storage Class (Embedded Coder).

  • Les expressions if et elseif ne peuvent pas accepter certains opérateurs tels que +, -, * et /.

Ports

Entrée

développer tout

Pour les versions R2026a et ultérieures, vous pouvez modifier les étiquettes des ports d’entrée en fonction des expressions logiques utilisées dans le bloc. Pour modifier l’étiquette de port, passez le curseur sur le texte par défaut u1,u2,...,un et modifiez le texte.

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

Pour les versions R2025b ou antérieures, le bloc accepte uniquement l’étiquette de port d’entrée par défaut u1,u2,...,un. Les entrées u1,u2,...,un doivent avoir le même type de données. Les entrées ne peuvent pas être d’un type défini par l’utilisateur tel qu’un type énuméré.

Le bloc If ne supporte pas directement les types de données à virgule fixe. Cependant, vous pouvez utiliser le bloc Compare To Constant pour contourner cette limitation. Consultez la rubrique Select Subsystem Execution.

Types de données : single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean

Sortie(s)

développer tout

Les sorties des ports if, else et elseif sont des signaux d’action pour les blocs If Action Subsystem.

Paramètres

développer tout

1

Spécifiez un port d’entrée.

entier

Spécifiez le nombre de ports d’entrée. Les ports de bloc sont étiquetés avec un caractère 'u' suivi d’un nombre, 1,2,...,n, où n est égal au nombre d’entrées que vous spécifiez.

Utilisation programmatique

Paramètre de bloc : NumInputs
Type : vecteur de caractères
Valeurs : '1' | entier entre guillemets
Par défaut : '1'

Quand le port if et toutes les expressions de port elseif sont false, le port else envoie un signal d’action pour exécuter le bloc If Action Subsystem relié.

on

Affichez le port else.

off

Masquez le port else.

Utilisation programmatique

Paramètre de bloc : ShowElse
Type : vecteur de caractères
Valeurs : 'on' | 'off'
Par défaut : 'on'

Contrôlez la détection des passages par zéro.

on

Détectez les passages par zéro.

off

Ne détectez pas les passages par zéro.

Utilisation programmatique

Paramètre de bloc : ZeroCross
Type : vecteur de caractères
Valeurs : 'on' | 'off'
Par défaut : 'on'

Depuis R2025a

Sélectionnez ce paramètre pour que seules les instructions if-else soient incluses dans le code généré à partir d’un bloc If .

on

Seules les instructions if-else sont incluses dans le code généré. Cette option empêche l’inclusion d’instructions switch-case dans le code généré.

off

Lorsque ce paramètre est défini à « off », le code généré à partir d’un bloc If peut contenir des instructions switch-case effectuant les mêmes opérations que le bloc If.

Utilisation programmatique

Pour définir la valeur du paramètre du bloc de manière programmatique, utilisez la fonction set_param.

Paramètre de bloc : EnsureIfElseCode
Type : vecteur de caractères
Valeurs : 'on' | 'off'
Par défaut : 'off'

Le bloc If Action Subsystem relié au port if s’exécute quand l’expression if associée est évaluée à true.

u1 > 0

Spécifiez l’envoi d’un signal d’action sur le port de sortie quand l’entrée u1 est supérieure à 0.

Expression logique (depuis R2026a)

Utilisez diverses expressions logiques, y compris des expressions utilisant :

  • Des paramètres réglables.

  • Des expressions MATLAB® générales comme x1 > x2 + 5.

  • Des objets de données comme Simulink.Parameter et Simulink.Signal avec des classes de stockage personnalisées. Pour plus d’informations, consultez Create and Apply Storage Class Defined in User-Defined Package (Embedded Coder).

  • Un type de données à virgule fixe.

  • Un type de données énumérées.

  • Des tableaux de structures MATLAB.

  • Des expressions contenant :

    • Des fonctions arithmétiques : ceil, floor, abs et sign.

    • Des fonctions trigonométriques : sin, cos, tan, asin, acos, atan, atan2, sinh, cosh et tanh.

    • Des fonctions exponentielles, logarithmiques et racines : log, log10, exp et sqrt.

Expression logique (R2025b et versions antérieures)

Remarque

À partir de la version R2025a, pour modifier l’expression if par défaut (u1 > 0), utilisez le tableau Expressions. Pour une expression complexe comprenant plusieurs entrées et opérateurs, sélectionnez l’expression if et modifiez-la dans la zone Expression editor.

Pour les versions antérieures à la version R2025a, ce paramètre figure en tant que If expressions dans la boîte de dialogue du bloc. Vous pouvez spécifier des expressions logiques avec ce paramètre.

Cependant, dans toutes les versions de Simulink®, cette expression apparaît sur le bloc If adjacent au port de sortie if.

L’expression ne peut inclure que les opérateurs <, <=, ==, ~=, >, >=, &, |, ~, () et unary-minus. Les opérateurs tels que +, -, *, / et ^ ne sont pas autorisés. L’expression ne doit pas contenir d’expressions de type de données, par exemple int8(6), et ne doit pas faire référence à des variables d’espace de travail dont le type de données est différent de double ou de single.

Utilisation programmatique

Paramètre de bloc : IfExpression
Type : vecteur de caractères
Valeurs : 'u1 > 0' | expression logique entre guillemets
Par défaut : 'u1 > 0'

Le bloc If Action Subsystem relié à un port elseif s’exécute quand l’expression elseif associée est évaluée à true et que toutes les expressions if et elseif sont fausses.

vide

Expressions logiques non spécifiées.

Liste des expressions logiques (depuis R2026a)

  • Utilisez diverses expressions logiques qui n’étaient pas supportées auparavant, y compris des expressions utilisant :

    • Des paramètres réglables.

    • Des expressions MATLAB générales comme x1 > x2 + 5.

    • Des objets de données comme Simulink.Parameter et Simulink.Signal avec des classes de stockage personnalisées. Pour plus d’informations, consultez Create and Apply Storage Class Defined in User-Defined Package (Embedded Coder).

    • Un type de données à virgule fixe.

    • Un type de données énumérées.

    • Des tableaux de structures MATLAB.

    • Des expressions contenant :

      • Des fonctions arithmétiques : ceil, floor, abs et sign.

      • Des fonctions trigonométriques : sin, cos, tan, asin, acos, atan, atan2, sinh, cosh et tanh.

      • Des fonctions exponentielles, logarithmiques et racines : log, log10, exp et sqrt.

Expressions logiques (R2025b et versions antérieures)

Remarque

À partir de la version R2025a, pour ajouter et modifier des expressions elseif, utilisez le tableau Expressions. Utilisez les boutons d’action à gauche du tableau pour ajouter, supprimer et déplacer des expressions. Le tableau vous permet de rédiger chaque expression elseif séparément plutôt que sous forme de liste séparée par des virgules. Vous pouvez ainsi organiser les expressions selon vos exigences de modélisation. Pour une expression complexe comprenant plusieurs entrées et opérateurs, sélectionnez la ligne qui contient l’expression elseif en question et modifiez-la dans la zone Expression editor.

Pour les versions antérieures à la version R2025a, ce paramètre figure en tant que Else expressions dans la boîte de dialogue du bloc. Dans ces versions, spécifiez une liste d’expressions logiques séparées par des virgules.

Cependant, dans toutes les versions de Simulink, les expressions apparaissent sur le bloc If sous le port if et au-dessus du port else quand vous cochez la case Show else condition.

Les expressions ne peuvent inclure que les opérateurs <, <=, ==, ~=, >, >=, &, |, ~, () et unary-minus. Les opérateurs tels que +, -, *, / et ^ ne sont pas autorisés. Les expressions ne doivent pas contenir d’expressions de type de données, par exemple int8(6), et ne doivent pas faire référence à des variables d’espace de travail dont le type de données est différent de double ou de single.

Utilisation programmatique

Paramètre de bloc : ElseIfExpressions
Type : vecteur de caractères
Valeurs : '' | liste d’expressions logiques séparées par des virgules et placées entre guillemets
Par défaut : ''

Caractéristiques des blocs

Types de données

Boolean | double | integer | single

Traversée directe

oui

Signaux multidimensionnels

non

Signaux de taille variable

non

Détection des passages à zéro

oui

En savoir plus

développer tout

Capacités étendues

développer tout

Génération de code C/C++
Générez du code C et C++ avec Simulink® Coder™.

Historique des versions

Introduit avant R2006a

développer tout