Contenu principal

Switch

Basculer la sortie entre la première entrée et la troisième entrée en fonction de la valeur de la deuxième entrée

  • Switch block

Bibliothèques :
Simulink / Commonly Used Blocks
Simulink / Signal Routing
HDL Coder / Commonly Used Blocks
HDL Coder / Signal Routing

Description

Types d’entrées de bloc

Le bloc Switch transmet la première entrée ou la troisième entrée en fonction de la valeur de la deuxième entrée. La première entrée et la troisième entrée sont connues sous le nom d’entrées de données, tandis que la deuxième entrée est appelée entrée de contrôle. Spécifiez la condition selon laquelle le bloc doit transmettre la première entrée en utilisant les paramètres Criteria for passing first input et Threshold.

Pour rétropropager immédiatement un type de données de sortie connu vers les premier et troisième ports d’entrée, définissez le paramètre Output data type sur Inherit: Inherit via internal rule et cochez la case Require all data port inputs to have the same data type.

Conseil

Pour la rétropropagation Inherit: Inherit via internal rule, le paramètre Require all data port inputs to have the same data type doit être sélectionné. Sans cela, le bloc ne rétropropage pas automatiquement le type de données de sortie vers les premier et troisième ports de sortie.

Limitations des entrées de données

Les tailles des deux entrées de données peuvent être différentes si vous sélectionnez Allow different data input sizes. Cependant, ce bloc ne supporte pas les signaux d’entrée de taille variable. Par conséquent, la taille de chaque entrée ne peut pas être modifiée pendant la simulation.

Si les entrées de données vers le bloc Switch sont des bus, les noms d’élément doivent être identiques pour les deux bus. En effet, l’utilisation des mêmes noms d’élément garantit que le bus de sortie possède les mêmes noms d’élément, quel que soit le bus d’entrée sélectionné par le bloc. Pour garantir que votre modèle répond à cette exigence, utilisez un objet bus pour définir les bus et définissez le diagnostic Element name mismatch sur error. Pour plus d’informations, consultez Model Configuration Parameters: Connectivity Diagnostics.

Apparence de l’icône du bloc

L’icône de bloc vous aide à identifier les valeurs Criteria for passing first input et Threshold sans avoir à ouvrir la boîte de dialogue du bloc.

Pour plus d’informations sur l’ordre des ports pour différentes orientations de bloc, consultez Identify Port Location on Rotated or Flipped Block.

Comportement du bloc pour l’entrée de contrôle booléenne

Lorsque l’entrée de contrôle est un signal Boolean, utilisez l’une des combinaisons de critères et de valeur de seuil ci-dessous :

  • u2 >= Threshold, où la valeur de seuil est égale à 1

  • u2 > Threshold, où la valeur de seuil est égale à 0

  • u2 ~=0

Sans cela, le bloc Switch ignore le seuil et utilise l’entrée booléenne pour l’acheminement du signal. Pour une entrée de contrôle de 1, le bloc transmet la première entrée, tandis que pour une entrée de contrôle de 0, il transmet la troisième entrée. L’icône de bloc change alors après le délai de compilation et utilise T et F pour étiqueter la première entrée et la troisième entrée, respectivement.

Support des types de données

L’entrée de contrôle peut être de n’importe quel type de données supporté par Simulink®, y compris les types à virgule fixe et énumérés. L’entrée de contrôle ne peut pas être complexe. Si l’entrée de contrôle est énumérée, le paramètre Threshold doit être une valeur du même type énuméré.

Les entrées de données peuvent être de n’importe quel type de données supporté par Simulink. Si l’une des entrées de données est d’un type énuméré, l’autre entrée de données doit être du même type énuméré.

Lorsque la sortie est d’un type énuméré, les deux entrées de données doivent utiliser le même type énuméré que la sortie.

Pour plus d’informations, consultez Data Types Supported by Simulink.

Exemples

Ports

Entrée(s)

développer tout

Première entrée de données. Le bloc propage la première entrée de données ou la deuxième entrée de données à la sortie. Le bloc sélectionne l’entrée à transmettre en fonction de l’entrée de contrôle. Spécifiez la condition en fonction de laquelle l’entrée de contrôle doit transmettre la première entrée en utilisant les paramètres Criteria for passing first input et Threshold.

Types de données : single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Signal de contrôle que le bloc utilise pour déterminer si la première entrée de données ou la deuxième entrée de données doit être transmise à la sortie. Si l’entrée de contrôle répond à la condition définie par le paramètre Criteria for passing first input, le bloc transmet la première entrée de données. Sans cela, le bloc transmet la deuxième entrée de données.

Types de données : single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Deuxième entrée de données. Le bloc propage la première entrée de données ou la deuxième entrée de données à la sortie. Le bloc sélectionne l’entrée à transmettre en fonction de l’entrée de contrôle. Spécifiez la condition en fonction de laquelle l’entrée de contrôle doit transmettre la deuxième entrée en utilisant les paramètres Criteria for passing first input et Threshold.

Types de données : single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Sortie(s)

développer tout

Signal de sortie propagé à partir du premier signal d’entrée ou du deuxième signal d’entrée, en fonction de la valeur du signal de contrôle.

Types de données : single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image

Paramètres

développer tout

Paramètres principaux

Sélectionnez la condition selon laquelle le bloc doit transmettre la première entrée de donnés. Si l’entrée de contrôle répond à la condition définie par le paramètre Criteria for passing first input, le bloc transmet la première entrée. Sans cela, le bloc transmet le deuxième signal d’entrée de données depuis le Port_3 d’entrée.

u2 >= Threshold

Vérifie si l’entrée de contrôle est supérieure ou égale à la valeur de seuil.

u2 > Threshold

Vérifie si l’entrée de contrôle est supérieure à la valeur de seuil.

u2 ~= 0

Vérifie si l’entrée de contrôle est non nulle.

Remarque

Le bloc Switch ne supporte pas le mode u2 ~= 0 pour les types de données énumérés.

Conseil

Lorsque l’entrée de contrôle est un signal booléen, utilisez l’une des combinaisons de condition et de valeur de seuil ci-dessous :

  • u2 >= Threshold, où la valeur de seuil est égale à 1

  • u2 > Threshold, où la valeur de seuil est égale à 0

  • u2 ~= 0

Sans cela, le bloc Switch ignore les valeurs de seuil et utilise la valeur booléenne pour l’acheminement du signal. Pour une valeur de 1, le bloc transmet la première entrée, alors que pour une valeur de 0, il transmet la troisième entrée. Un message d’avertissement décrivant ce comportement apparaît également dans la fenêtre de commande MATLAB®.

Utilisation programmatique

Paramètre de bloc : Criteria
Type : vecteur de caractères
Valeur : 'u2 >= Threshold' | 'u2 > Threshold' | 'u2 ~= 0'
Par défaut : 'u2 > Threshold'

Affectez le seuil utilisé dans le paramètre Criteria for passing first input qui détermine l’entrée que le bloc doit transmettre à la sortie. La valeur Threshold doit être supérieure à la valeur Output minimum et inférieure à la valeur Output maximum.

Pour spécifier un seuil non scalaire, utilisez des crochets. Par exemple, les entrées suivantes sont valides :

  • [1 4 8 12]

  • [MyColors.Red, MyColors.Blue]

Dépendances

La définition de Criteria for passing first input sur u2 ~= 0 désactive ce paramètre.

Utilisation programmatique

Paramètre de bloc : Threshold
Type : vecteur de caractères
Valeur : scalaire
Par défaut : '0'

Sélectionnez pour activer la détection des passages par zéro. Pour plus d’informations, consultez Zero-Crossing Detection.

Utilisation programmatique

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

Signal Attributes

Data Type Assistant vous aide à définir les attributs de données. Pour utiliser Data Type Assistant, cliquez sur the Show data type assistant button. Pour plus d’informations, consultez Specify Data Types Using Data Type Assistant.

Exigez que toutes les entrées de données aient le même type de données.

Utilisation programmatique

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

Valeur inférieure de la plage de sortie vérifiée par le logiciel.

Le logiciel utilise la valeur minimale pour effectuer les opérations suivantes :

Conseils

La valeur Output minimum ne sature pas et ne coupe pas le signal de sortie réel. Utilisez le bloc Saturation à la place.

Utilisation programmatique

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

Paramètre : OutMin
Valeurs : '[]' (par défaut) | scalar in quotes

Valeur supérieure de la plage de sortie vérifiée par le logiciel.

Le logiciel utilise la valeur maximale pour effectuer les opérations suivantes :

Conseils

La valeur Output maximum ne sature pas et ne coupe pas le signal de sortie réel. Utilisez le bloc Saturation à la place.

Utilisation programmatique

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

Paramètre : OutMax
Valeurs : '[]' (par défaut) | scalar in quotes

Spécifiez le type de données de sortie.

Inherit: Inherit via internal rule

Les règles suivantes sont utilisées pour déterminer le type de données de sortie.

Type de données du premier port d’entréeType de données de sortie
A une plage positive plus élevée que le troisième port d’entréeHérité du premier port d’entrée
A la même plage positive que le troisième port d’entréeHérité du troisième port d’entrée
A une plage positive plus faible que le troisième port d’entrée
Est une valeur booléenne et le troisième port d’entrée est uint8
Est uint8 et le troisième port d’entrée est une valeur booléenne
Est une valeur booléenne et un autre type est int8Défini sur une valeur booléenne
Est uint8 et un autre type est une valeur booléenne
Type de données des deux ports d’entréeType de données de sortie
A un type d’entrée défini comme une valeur booléenne et un autre défini sur uint8Défini sur le type de données du troisième port de données
A une entrée définie comme une valeur booléenne et une autre définie sur int8Défini sur une valeur booléenne
Inherit: Inherit via back propagation

Adopte le type de données du bloc de sortie.

Inherit: Inherit same as first input

Utilise le type de données du premier port d’entrée de données.

double

Indique que le type de données de sortie est double.

single

Indique que le type de données de sortie est single.

half

Indique que le type de données de sortie est half.

int8

Indique que le type de données de sortie est int8.

uint8

Indique que le type de données de sortie est uint8.

int16

Indique que le type de données de sortie est int16.

uint16

Indique que le type de données de sortie est uint16.

int32

Indique que le type de données de sortie est int32.

uint32

Indique que le type de données de sortie est uint32.

int64

Indique que le type de données de sortie est int64.

uint64

Indique que le type de données de sortie est uint64.

fixdt(1,16,0)

Indique que le type de données de sortie est fixdt(1,16,0) à virgule fixe.

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

Indique que le type de données de sortie est fixdt(1,16,2^0,0) à virgule fixe.

Enum: <class name>

Utilise un type de données énuméré, par exemple Enum: BasicColors.

Simulink.ImageType(480,640,3)

Utilise un objet Simulink.ImageType (Computer Vision Toolbox) si vous possédez Computer Vision Toolbox™.

string

Indique que le type de données de sortie est chaîne de caractères.

<data type expression>

Utilise un objet de type de données, par exemple un objet Simulink.NumericType.

Conseil

Lorsque la sortie est d’un type énuméré, les deux entrées de données doivent utiliser le même type énuméré que la sortie.

Utilisation programmatique

Paramètre de bloc : OutDataTypeStr
Type : vecteur de caractères
Valeurs : '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>'
Par défaut : 'Inherit: Inherit via internal rule'

Sélectionnez ce paramètre pour empêcher les outils à virgule fixe de remplacer les types de données que vous spécifiez sur ce bloc. Pour plus d’informations, consultez Lock the Output Data Type Setting (Fixed-Point Designer).

Utilisation programmatique

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

Choisissez l’un des modes d’arrondi ci-après.

Ceiling

Arrondit les nombres positifs et négatifs à l’infini positif. Équivalent de la fonction ceil de MATLAB.

Convergent

Arrondit le nombre à la valeur représentable la plus proche. En cas d’égalité, arrondit à l’entier pair le plus proche. Équivalent de la fonction convergent de Fixed-Point Designer™.

Floor

Arrondit les nombres positifs et négatifs à l’infini négatif. Équivalent de la fonction floor de MATLAB.

Nearest

Arrondit le nombre à la valeur représentable la plus proche. En cas d’égalité, arrondit à l’infini positif. Équivalent de la fonction nearest de Fixed-Point Designer.

Round

Arrondit le nombre à la valeur représentable la plus proche. En cas d’égalité, arrondit les nombres positifs à l’infini positif et arrondit les nombres négatifs à l’infini négatif. Équivalent de la fonction round de Fixed-Point Designer.

Simplest

Choisit automatiquement entre l’arrondi à l’entier inférieur ou égal le plus proche et l’arrondi à zéro afin de générer un code d’arrondi aussi efficace que possible.

Zero

Arrondit le nombre à zéro. Équivalent de la fonction fix de MATLAB.

Utilisation programmatique

Paramètre de bloc : RndMeth
Type : vecteur de caractères
Valeurs : 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
Par défaut : 'Floor'

Voir aussi

Pour plus d’informations, consultez Rounding Modes (Fixed-Point Designer).

Indiquez si les overflows provoquent une saturation ou un wrap.

  • on : les overflows saturent jusqu’à la valeur minimale ou maximale que le type de données peut représenter.

  • off : les overflows réintègrent jusqu’à la valeur appropriée que le type de données peut représenter.

Par exemple, la valeur maximale que l’entier signé de 8 bits int8 peut représenter est 127. Tout résultat d’opération de bloc supérieur à cette valeur maximale provoque un overflow de l’entier de 8 bits.

  • Lorsque ce paramètre est sélectionné, la sortie du bloc sature à 127. De même, la sortie du bloc sature à une valeur de sortie minimale de -128.

  • Lorsque ce paramètre est désactivé, le logiciel interprète la valeur à l’origine de l’overflow comme un entier int8, ce qui peut produire un résultat inattendu. Par exemple, un résultat de bloc de 130 (binaire 1000 0010) exprimé comme int8 est -126.

Conseils

  • Envisagez de sélectionner ce paramètre lorsque votre modèle présente un risque d’overflow et que vous souhaitez profiter d’une protection explicite contre la saturation dans le code généré.

  • Envisagez d’effacer ce paramètre si vous souhaitez optimiser l’efficacité de votre code généré. Effacer ce paramètre vous aide également à éviter de spécifier de manière trop détaillée la façon dont un bloc doit gérer les signaux hors de portée. Pour plus d’informations, consultez Troubleshoot Signal Range Errors.

  • Lorsque vous sélectionnez ce paramètre, la saturation s’applique à chaque opération interne sur le bloc et pas seulement à la sortie ou au résultat.

  • En général, le processus de génération de code peut détecter les circonstances dans lesquelles l’overflow n’est pas possible. Lorsque l’overflow n’est pas possible, le générateur de code ne produit pas de code de saturation.

Utilisation programmatique

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

Paramètre : SaturateOnIntegerOverflow
Valeurs : 'off' (par défaut) | 'on'

Cochez cette case pour autoriser les signaux d’entrée de taille différente. Le bloc propage la taille du signal d’entrée au signal de sortie. Si les deux entrées de données sont des signaux de taille variable, la taille maximale des signaux peut être égale ou différente.

Utilisation programmatique

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

Caractéristiques des blocs

Types de données

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

Traversée directe

oui

Signaux multidimensionnels

oui

Signaux de taille variable

oui

Détection des passages à zéro

oui

Capacités étendues

développer tout

Génération de code PLC
Générez du texte structuré avec Simulink® PLC Coder™.

Conversion en virgule fixe
Concevez et simulez des systèmes en virgule fixe avec Fixed-Point Designer™.

Historique des versions

Introduit avant R2006a