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

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

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 le support pour les types de données en virgule fixe sur 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

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 d’expressions logiques

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

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