CASE_OF
Utilisez CASE_OF pour sélectionner quoi faire en fonction d'une valeur numérique.
Opérandes
CASE numeric_expression OF
selector1: statement;
selectorN: statement; ELSE
Texte structuré
Opérande | Type | Format | Saisir |
|---|---|---|---|
Numeric_ expression | SINT INT DINT REAL | Expression de balise | Étiquette ou expression qui est évaluée pour produire un nombre (expression numérique) |
Selector | SINT INT DINT REAL | Immédiat | Même type que numeric_expression |
IMPORTANT:
Si vous utilisez des valeurs REAL, utilisez une plage de valeurs pour un sélecteur car une valeur REAL aura plus de chance d'être à l'intérieur d'une plage de valeurs que de correspondre exactement à une valeur spécifique.
Description
La syntaxe est décrite dans le tableau.

Voilà la syntaxe pour saisir des valeurs de sélecteurs.
Quand le sélecteur est | Saisir |
Une valeur | value: statement |
Des valeurs multiples et distinctes | value1, value2, valueN : <statement> Utilisez une virgule (,) pour séparer chaque valeur. |
Une plage de valeurs | value1..valueN : <statement> Utilisez deux points (..) pour identifier la plage. |
Des valeurs distinctes plus une plage de valeurs | valuea, valueb, value1..valueN : <statement> |
La construction CASE est similaire à une instruction switch dans les langages de programmation C ou C++. Avec la construction CASE, l'automate exécute seulement les instructions qui associées avec la première valeur de sélecteur correspondante. L'exécution s'arrête toujours après les instructions de ce sélecteur puis passe à l'instruction END_CASE.
Affecte les indicateurs d'état mathématique
Non
Défauts majeurs/mineurs
Aucun
Exemple
Si vous voulez | Saisissez ce texte structuré |
If numéro de recette = 1 alors ingrédient A sortie 1 = ouverte (1) Ingrédient B sortie 4 = ouverte (1) | CASE recipe_number OF |
1 : Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1; | |
Si numéro de recette = 2 ou 3 alors Ingrédient A sortie 4 = ouverte (1) Ingrédient B sortie 2 = ouverte (1) | 2,3 : Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1; |
If numéro de recette = 4, 5, 6 ou 7 alors Ingrédient A sortie 4 = ouverte (1) Ingrédient B sortie 2 = ouverte (1) | 4..7: Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1; |
If numéro de recette = 8, 11, 12 ou 13 alors Ingrédient A sortie 1 = ouverte (1) Ingrédient B sortie 4 = ouverte (1) | 8,11..13 Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1; |
Sinon toutes les sorties = fermées (0) | ELSE |
Ingredient_A.Outlet_1 [:=]0; Ingredient_A.Outlet_4 [:=]0; Ingredient_B.Outlet_2 [:=]0; Ingredient_B.Outlet_4 [:=]0; | |
END_CASE; |
Le [:=] dit à l'automate de mettre les étiquettes de sortie à zéro chaque fois que l'automate fait ce qui suit :
Il entre dans le mode EXÉCUTION.
Il quitte l'étape d'un SFC, si le SFC est configuré pour se réinitialiser automatiquement. Cela applique seulement à l'intégration de l'affectation dans l'action de l'étape ou à l'utilisation de l'action pour appeler une routine de texte structuré via une instruction JSR.
Fournir une réponse