Condicionales compatibles y especificadas por IEC-61131-3.
|
¡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 |
|---|