CASE_OF
Use CASE_OF para seleccionar qué hacer con base en un valor numérico.
Operandos
CASE numeric_expression OF
selector1: statement;
selectorN: statement; ELSE
Texto estructurado
Operando | Tipo | Formato | Introducir |
|---|---|---|---|
Numeric_ expression | SINT INT DINT REAL | Expresión de etiqueta | Etiqueta o expresión que evalúa hasta un número (expresión numérica) |
Selector | SINT INT DINT REAL | Inmediato | Mismo tipo que numeric_expression |
IMPORTANTE:
Si usa valores de tipo REAL, use un rango de valores para un selector porque un valor REAL tiene mayor probabilidad de estar dentro de un rango de valores que una coincidencia exacta de un valor específico.
Descripción
La sintaxis se describe en la tabla.

Estas son las sintaxis para introducir los valores de selector.
Cuando el selector es | Introducir |
Un valor | value: statement |
Varios valores distintos | value1, value2, valueN : <statement> Use una coma (,) para separar cada valor. |
Un rango de valores | value1..valueN : <statement> Use dos puntos (..) para identificar el rango. |
Valores diferentes más un rango de valores | valuea, valueb, value1..valueN : <statement> |
La contrucción CASE es similar a una instrucción de interruptor en los lenguajes de programación C o C++. En la construcción CASE, el controlador solo ejecuta las instrucciones asociadas al primer valor de selector coincidente. La ejecución siempre se interrumpe después de las instrucciones de ese selector y va a la instrucción END_CASE.
Afecta a las marcas de estado matemáticas
No
Fallos mayores/menores
Ninguno
Ejemplo
Si quiere esto | Introduzca este texto estructurado |
Si número de receta = 1, entonces Salida 1 de Ingrediente A = abierta (1) Salida 4 de Ingrediente B = abierta (1) | CASE recipe_number OF |
1: Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1; | |
Si número de receta = 2 o 3, entonces Salida 4 de Ingrediente A = abierta (1) Salida 2 de Ingrediente B = abierta (1) | 2,3: Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1; |
Si número de receta = 4, 5, 6 o 7, entonces Salida 4 de Ingrediente A = abierta (1) Salida 2 de Ingrediente B = abierta (1) | 4..7: Ingredient_A.Outlet_4 :=1; Ingredient_B.Outlet_2 :=1; |
Si número de receta = 8, 11, 12 o 13, entonces Salida 1 de Ingrediente A = abierta (1) Salida 4 de Ingrediente B = abierta (1) | 8,11..13 Ingredient_A.Outlet_1 :=1; Ingredient_B.Outlet_4 :=1; |
De lo contrario, todas las salidas = cerradas (0) | ELSE |
Ingredient_A.Outlet_1 [:=]0; Ingredient_A.Outlet_4 [:=]0; Ingredient_B.Outlet_2 [:=]0; Ingredient_B.Outlet_4 [:=]0; | |
END_CASE; |
[:=] también indica al controlador que borre las etiquetas de salida cuando el controlador hace lo siguiente:
Pasa al modo Marcha.
Deja el paso de un SFC si configura el SFC para el restablecimiento automático. Esto solo se aplica si se incrusta la asignación en la acción del paso o se usa la acción para llamar una rutina de texto estructurado mediante una instrucción JSR.
Entregue su opinión