Condicionais suportadas e especificadas pela IEC-61131-3
|
NOTA!
Verificar se equipamento possui suporte a condicionais!
|
IF (SE)
A instrução possibilita que um grupo de instruções possa ser executado somente se, a expressão booleana a ela associada for verdadeira. Se a condição for falsa, somente o grupo de instruções após a palavra-chave ELSE serão executados, caso ela estiver implementada.
Descrição |
Exemplo |
IF ... THEN ...
ELSIF ... THEN ...
ELSE ... END_IF |
D := B * B - 4.0 * A * C; IF D < 0.0 THEN N:= 0; ELSIF D = 0.0 THEN N:=1; X1:= - B/(2.0+A); ELSE N:=2; X1:=(- B + FB_SQRT(D))/(2.0*A); X2:=(- B - FB_SQRT(D))/(2.0*A); END_IF; |
CASE (CASO)
A instrução consiste em um seletor e grupos de instruções. Cada grupo de instruções é rotulado por um ou mais literais, valores enumerados ou subintervalos. O primeiro caso que atender o valor do seletor, terá seu grupo de instruções executado. Caso o valor do seletor não ocorra, a sequência de comandos após a palavra-chave ELSE deve ser executada. Caso contrário, nenhuma das sequências de instruções deve ser executada.
Os tipos de dados desses rótulos devem corresponder ao tipo de dados da variável especificada no seletor.
Descrição |
Exemplo |
CASE ... OF ... ELSE ... END_CASE |
C:=0; CASE A OF 1: B:= 10; 2: B:= 20; 3,5 B:= 30; 8..10 B:= 40; ELSE B:= 50; C:=1; END_CASE |
FOR (DE ATÉ)
A instrução possibilita que uma sequência de instruções seja executada repetidamente, enquanto uma progressão de valores é atribuída a sua variável de controle. A instrução FOR incrementa ou decrementa a variável de controle de um valor inicial até um valor final determinado pelo valor de uma expressão. Se a construção BY for omitida, o valor de incremento será padronizado para 1. O valor inicial e o valor final da variável de controle devem ser expressões do mesmo tipo inteiro (por exemplo, SINT, INT ou DINT).
Descrição |
Exemplo |
FOR ... TO ... BY ... DO ... END_FOR |
FOR I:=1 TO 100 BY 2 DO IF A[I] > 50 THEN B := 1; ELSE B := 0; END_IF END_IF END_FOR |
WHILE (ENQUANTO)
Na instrução a sequência de instruções agrupadas até a palavra-chave END_WHILE, são executadas repetidamente até que a expressão booleana a ela associada seja falsa. Se inicialmente a expressão for falsa, o grupo de instruções não será executado.
Descrição |
Exemplo |
WHILE ... DO ... END_WHILE |
J:=0; WHILE J <= 100 & A[J] > 50 DO B:= B+2; END_WHILE |
REPEAT (REPITA ATÉ)
A instrução faz com que a sequência de instruções agrupadas até a palavra-chave UNTIL seja executada repetidamente pelo menos uma única vez, até que a condição booleana associada a ela seja verdadeira.
Descrição |
Exemplo |
REPEAT ... UNTIL ... END_REPEAT |
J:=0; REPEAT J:= J+2; UNTIL J > 100 OR A[J] > 50; END_REPEAT |
CONTINUE (CONTINUAR)
A instrução deve ser usada para pular as instruções restantes do laço de iteração, localizadas após a palavra-chave CONTINUE até o terminador do laço (END FOR, END WHILE ou END REPEAT).
Descrição |
Exemplo |
CONTINUE |
J:=1; WHILE (J <= 100 AND A[J] <= 50) DO IF (J MOD 3 = 0) THEN CONTINUE; END_IF; J:=J+1; END_WHILE; |
EXIT (SAIR)
A instrução deve ser usada para encerrar as iterações antes que a condição de término seja satisfeita.
Quando a instrução EXIT estiver localizada iterações aninhadas, a saída deve ser do laço mais interno no qual a palavra-chave EXIT está localizada, ou seja, o controle deve passar para a próxima instrução após o primeiro terminador de loop (END FOR, END WHILE ou END REPEA 'I') após a SAÍDA
declaração.
Descrição |
Exemplo |
EXIT |
FOR I:=1 TO 100 BY 2 DO IF A[I] > 50 THEN B := 1; EXIT; END_IF END_IF END_FOR |