CASE: Estructura selectiva múltiple (S7-300, S7-400) - STEP 7

SCL (S7-300, S7-400)

ft:publication_title
SCL (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
es-ES
CASE: Estructura selectiva múltiple

Descripción

La instrucción "Estructura selectiva múltiple" permite procesar una de varias secuencias de instrucciones en función del valor de una expresión.

El valor de la expresión puede ser un número entero o una secuencia de bits. Al ejecutar la instrucción CASE se compara el valor de la expresión (variable) con los valores de varias constantes. Si el valor de la expresión (variable) coincide con el de una constante, se cumple la condición y se ejecutan las instrucciones que están programadas directamente después de esta constante. Al hacerlo, las constantes pueden adoptar distintos valores.

La instrucción se puede declarar del siguiente modo:

CASE <Variable> OF

<Constante1>: <Instrucciones1>;

<Constante2>: <Instrucciones2>;

<ConstanteX>: <InstruccionesX>; // X >= 3

ELSE <Instrucciones0>;

END_CASE;

Parámetros

La tabla siguiente muestra los parámetros de la instrucción:

Parámetro

Tipo de datos

Área de memoria

Descripción

<Variable>

Secuencias de bits, enteros

I, Q, M, D, L

Valor que se compara con los valores de constantes programados.

<Constante>

Pueden programarse constantes locales y globales.

Secuencias de bits

-

En el caso de una secuencia de bits, las constantes pueden adoptar los siguientes valores:

  • Número binario (p. ej., 2#10)

  • Número octal (p. ej., 8#77)

  • Número hexadecimal (p. ej., 16#AD)

  • Constante sin tipo (p. ej., 1000)

En caso de una variable Byte tipificada, deben programarse constantes Byte (p. ej., BYTE#2).

En caso de una variable Word tipificada, pueden programarse constantes Byte o Word (p. ej., BYTE#2, WORD#2).

En caso de una variable DWord tipificada, pueden programarse constantes Byte, Word o DWord (p. ej., BYTE#2, WORD#2, DWORD#2).

En caso de una variable LWord tipificada, pueden programarse constantes Byte, Word, DWord o LWord (p. ej., BYTE#2, WORD#2, DWORD#2, LWORD#2).

Enteros

En el caso de un número entero, las constantes pueden adoptar los siguientes valores:

  • un número entero (p. ej., 5)

  • un rango de enteros (p. ej., 15 a 20)

  • una enumeración de números enteros y rangos (p. ej., 10, 11, 15..20)

<Instrucción>

-

-

Cualquier instrucción que se ejecuta si el valor de la expresión coincide con el valor de una constante. Una excepción son las instrucciones que están programadas después de ELSE. Estas se ejecutan cuando los valores no coinciden.

Encontrará más información sobre los tipos de datos válidos en "Consulte también".

Si el valor de la expresión coincide con el valor de la primera constante (<Constante1>), se ejecutan las instrucciones (<instrucciones1>) que están programadas directamente después de la primera constante. Luego, el procesamiento del programa continúa después de END_CASE.

Si el valor de la expresión no coindice con el valor de la primera constante (<Constante1), este se compara con el valor de la constante que está programada a continuación. De esta manera la instrucción CASE se ejecuta hasta que coincidan los valores. Si el valor de la expresión no se corresponde con ninguno de los valores programados de las constantes, se ejecutan las instrucciones (<instrucciones0>) que están programadas después de ELSE. ELSE es una parte opcional de la sintaxis y se puede omitir.

La instrucción CASE también se puede anidar sustituyendo un bloque de instrucciones por CASE. END_CASE cierra la instrucción CASE.

Ejemplo

El siguiente ejemplo muestra el funcionamiento de la instrucción:

SCL Copia el código de programa siguiente en el portapapeles.

CASE "Tag_Value" OF

     0 :

          "Tag_1" := 1;

     1,3,5 :

          "Tag_2" := 1;

     6..10 :

          "Tag_3" := 1;

     16,17,20..25 :

          "Tag_4" := 1;

     ELSE

          "Tag_5" := 1;

END_CASE;

La tabla siguiente muestra el funcionamiento de la instrucción con valores de operandos concretos:

Operando

Valores

Tag_Value

0

1, 3 , 5

6, 7, 8, 9, 10

16,17, 20, 21, 22, 23, 24, 25

2

Tag_1

1

-

-

-

-

Tag_2

-

1

-

-

-

Tag_3

-

-

1

-

-

Tag_4

-

-

-

1

-

Tag_5

-

-

-

-

1

1: El operando se pone al estado lógico "1".

-: El estado lógico del operando permanece sin cambios.