Camino:  Programación > Texto Estructurado > Conceitos >

Conditionales

Previous pageReturn to chapter overviewNext page

Condicionales compatibles y especificadas por IEC-61131-3.

wpshelp_common_fig_note

¡NOTA!

 

¡Comprueba si el equipo admite condicionales!

 

 

Conditionale - IF

 

La sentencia IF permite que un grupo de instrucciones se ejecute solo si la expresión booleana asociada se evalúa como verdadera. Si se evalúa como falsa, se verifican las condiciones posteriores definidas con ELSIF. Si alguna de estas condiciones es verdadera, se ejecutan las instrucciones correspondientes dentro de su bloque THEN. Si todas las condiciones son falsas, se ejecutan las instrucciones dentro del bloque ELSE, si está presente.

 

Por lo tanto, como máximo solo se ejecutará una única expresión de la sentencia IF. Las cláusulas ELSIF y ELSE son opcionales.

 

 

IF <expresión booleana> THEN

 

   <instrucciones>

 

ELSIF <condición> THEN

 

   <instrucciones>

 

ELSE

 

   <instrucciones>

 

END_IF

 

 

 

Ejemplo

 

El siguiente ejemplo demuestra la lógica para operar un ventilador de enfriamiento según las condiciones de temperatura:

Si la temperatura es inferior a 25 °C, el ventilador permanece apagado.
Si la temperatura está entre 25 °C y 40 °C, el ventilador funciona a velocidad media.
If the temperature is higher than 40°C, the fan operates at high speed and an alarm is activated.
Si la temperatura es superior a 40 °C, el ventilador funciona a alta velocidad y se activa una alarma.

 

 

VAR

   alarm : BOOL;

   temperature : USINT;

   fanSpeed : USINT;

END_VAR

 

IF temperature < 25 THEN

   fanSpeed := 0;

   alarm := FALSE;

ELSIF temperature >= 25 AND temperature <= 40 THEN

   fanSpeed := 50;

   alarm := FALSE;

ELSE

   fanSpeed := 100;

   alarm := TRUE;

END_IF

 

 

Conditionale - CASE

 

La sentencia CASE funciona como un selector de grupos de instrucciones, donde cada grupo está identificado por uno o más literales, valores enumerados o subrangos. Cuando el valor del selector coincide con un caso, se ejecuta el grupo correspondiente de instrucciones. Si no se encuentra ninguna coincidencia, se ejecutan las instrucciones que siguen a la palabra clave ELSE (si está presente). De lo contrario, no se ejecuta ninguna instrucción..

 

Los tipos de datos de estas etiquetas deben coincidir con el tipo de dato de la variable especificada en el selector.

 

 

 

CASE <expresión> OF

 

   <label_1>

     

       <instrucciones>

 

   <label_2, label_3>

     

       <instrucciones>

 

   <label_4..label_7>

     

       <instrucciones>

 

   ELSE

 

       <instrucciones>

 

END_CASE

 

 

 

Ejemplo

 

El siguiente ejemplo ilustra la lógica en la que un valor de entrada está determinado por la posición de un interruptor selector de ocho posiciones:

 

VAR

   selectorSwitch : USINT;

   input : USINT;

END_VAR

 

CASE selectorSwitch OF

  0..3:

       input := 25;

   4:

       input := 35;

   5, 6:

       input := 40;

   ELSE

       input := 50;

END_CASE