Condicionais suportadas e especificadas pela IEC-61131-3
|
NOTA!
Verificar se equipamento possui suporte a condicionais!
|
Condicional - IF
A instrução IF possibilita que um grupo de instruções possa ser executado somente se, a expressão booleana a ela associada for verdadeira. Caso retorne falso, as condições subsequentes definidas com ELSIF, caso existam, são verificadas. Se alguma delas for verdadeira, as instruções correspondentes ao seu THEN são executadas. Caso todas as condições sejam falsas, as instruções definidas após ELSE são executadas.
Portanto, no máximo apenas uma única expressão da instrução IF será executada. As cláusulas ELSIF e ELSE são opcionais.
IF <expressão booleana> THEN
<instruções>
ELSIF <condition> THEN
<instruções>
ELSE
<instruções>
END_IF
|
|---|
Exemplo
O exemplo abaixo exibe uma lógica onde um ventoinha de resfriamento deve operar com base nas condições de temperatura:
| • | Se a temperatura for inferior a 25°C, a ventoinha permanece desligado. |
| • | Se a temperatura estiver entre 25°C e 40°C, a ventoinha opera em velocidade média. |
| • | Se a temperatura for superior a 40°C, a ventoinha opera em velocidade alta e um alarme é ativado. |
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 |
|---|
Condicional - CASE
A instrução CASE funciona como um seletor de grupos de instruções. Cada grupo é identificado por um ou mais literais, valores enumerados ou intervalos. Quando o valor do seletor corresponde a um dos casos, o grupo de instruções associado a esse caso é executado. Se o valor do seletor não corresponder a nenhum dos casos, a sequência de comandos após a palavra-chave ELSIF, caso existam, são verificadas. Se alguma delas for verdadeira, as instruções correspondentes ao seu THEN são executadas. NormalCaso todas as condições sejam falsas, as instruções definidas após ELSE são executadas.
Os tipos de dados desses rótulos devem corresponder ao tipo de dados da variável especificada no seletor.IF será executada. As cláusulas ELSIF e ELSE são opcionais.
CASE <expressão> OF
<label_1>
<instruções>
<label_2, label_3>
<instruções>
<label_4..label_7>
<instruções>
ELSE
<instruções>
END_CASE
|
|---|
Exemplo
O exemplo abaixo ilustra uma lógica em que um valor de entrada é determinado pela posição de uma chave seletora de oito posições:
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 |
|---|