• Nenhum resultado encontrado

5 PLCs e Norma IEC 61131-3

5.4 Linguagens de programação textuais

5.4.1 Instruction List (IL)

IL é uma linguagem de baixo nível semelhante a Assembly. É uma linguagem popular para algoritmos relativamente simples. Apesar de ser considerada por muitos a mais aborrecida de programar, é a mais rápida a executar. Consiste numa sequencia de instruções que são executadas pela ordem por que se encontram. Cada instrução deve começar numa nova linha e deve conter um operador com um ou mais operandos (separados por vírgulas). Esta linguagem possui um acumulador, que guarda um valor a ser usado pelos operadores. A Tabela 5.1 apresenta uma lista de operadores desta linguagem com a respectiva descrição e exemplo de utilização.

Tabela 5.1: Operadores da linguagem IL.

Operador Descrição Exemplo

LD Load: Carrega o valor do operando no acumulador.

LD 5

Acumulador fica com valor 5. ST Store: Armazena o valor do acumulator para a

variável do operando.

LD 5 ST Var

Var fica com o valor 5 AND Realiza a operação AND com o acumulator e

com o operando.

LD true AND false

Acumulador fica com valor

false.

ANDN Realiza a operação AND com o acumulator e com a negação do operando.

LD true ANDN false

Acumulador fica com valor

true.

OR Realiza a operação OR com o acumulator e com o operando.

LD false OR true

PLCs e Norma IEC 61131-3

Acumulador fica com valor

true.

ORN Realiza a operação OR com o acumulator e com a negação do operando.

LD false ORN true

Acumulador fica com valor

false.

NOT O valor actual do acumulador é negado. LD true NOT ST Var

Var fica com valor false. ADD Adição do acumulador e do operando. O

resultado é copiado para o acumulador

LD 6 ADD 2 ST Var

Var fica com o valor 8. SUB Subtracção do acumulator e do operando. O

resultado é copiado para o acumulador.

LD 6 SUB 2 ST Var

Var fica com o valor 4. MUL Multiplicação do acumulator e do operando. O

resultado é copiado para o acumulador.

LD 6 MUL 2 ST Var

Var fica com o valor 12. DIV Divisão do acumulator pelo operando. O

resultado é copiado para o acumulador.

LD 6 DIV 2 ST Var

Var fica com o valor 3. GT Greater than (>): Verifica se o acumulador é

maior que o operando. Em caso afirmativo, o acumulador fica com o valor true, caso contrário

false.

LD 2 GT 1

Acumulador fica com valor

true.

GE Greater of equal (>=): Verifica se o acumulador é maior ou igual do que o operando. Em caso afirmativo, o acumulador fica com o valor true, caso contrário false.

LD 2 GE 2

Acumulador fica com valor

true.

EQ Equal (=): Verifica se o acumulador é igual ao operando. Em caso afirmativo, o acumulador fica com o valor true, caso contrário false.

LD 2 EQ 2

PLCs e Norma IEC 61131-3

true.

NE Not equal (<>): Verifica se o acumulador é diferente do operando. Em caso afirmativo, o acumulador fica com o valor true, caso contrário

false.

LD 2 NE 2

Acumulador fica com valor false.

LE Less or equal (<=): Verifica se o acumulador é menor ou igual ao operando. Em caso afirmativo, o acumulador fica com o valor true, caso contrário false;

LD 1 LE 2

Acumulador fica com valor

true.

LT Less than(<): Verifica se o acumulador é menor do que o operando. Em caso afirmativo, o acumulador fica com o valor true, caso contrário

false;

LD 1 LE 2

Acumulador fica com valor

true.

JMP Salto incondicional para uma etiqueta JMP FLAG JMPC Salto condicional para uma etiqueta. O salto é

concretizado se o valor do acumulador for true.

LD Var EQ 5

JMPC FLAG

O salto para a eiqueta FLAG é concretizado se a Var possuir o valor 5.

JMPCN Salto condicional para uma etiqueta, after a check if the accumuluator is FALSE

LD Var EQ 5

JMPCN FLAG

O salto para a eiqueta FLAG é concretizado se o valor de Var for diferente de 5.

CAL Faz a chamada a uma Function Block. CALL F_TRIG(Var); RET Retorno incondicional do POU e regresso ao

POU que o chamou.

RETC Retorno condicional do POU e regresso ao POU que o chamou, se o valor do acumulador for true. RETCN Retorno condicional do POU e regresso ao POU

que o chamou, se o valor do acumulador for

false.

5.4.2 Structured Text (ST)

ST é uma linguagem de alto nível que se assemelha a PASCAL. É uma linguagem de grande flexibilidade para algoritmos de controlo.

PLCs e Norma IEC 61131-3

A atribuição de um valor a uma variável é feito colocando “:=” (dois pontos e igual) e o valor de atribuição a seguir ao nome da variável a que se pretende atribuir o valor:

VariavelExemplo := 5;

Neste exemplo, é atribuído o valor 5 a VariavelExemplo. A tabela que se segue, apresenta a lista dos operador desta linguagem.

Tabela 5.2: Operadores da linguagem ST.

Operação Símbolo Exemplo

Negação -, NOT Var1 := -5;

Var2 := NOT Var3;

Exponenciação ** Var := 2**2;

Var fica com o valor 4 (o mesmo que 2 ao quadrado). Multiplicação * ResultadoMultiplicacao := a * b;

Divisão / ResultadoDivisao := a / b;

Adição + ResultadoAdicao := a + b;

Subtracção - ResultadoSubtraccao := a – b; Comparação <, >, <=, >= ResultadoComparação := Var > 3;

É atribuido o valor true à variável ResultadoComparação se Var for maior que 3, ou false em caso contrário.

Igualdade = ResultadoIgualdade := Var = 3;

É atribuido o valor true à variável ResultadoIgualdade se Var for igual a 3, ou false se for diferente.

Desigualdade <> ResultadoDesigualdade := Var <> 3;

É atribuido o valor true à variável ResultadoDesigualdade se Var for diferente de 3, ou false em caso contrário.

Operador 'e' &, AND Var = a AND b; Operador 'ou'

exclusivo

XOR Var = a XOR b;

Operador 'ou'' OR Var = a OR b;

A tabela está ordenada por ordem decrescente de precedência. No entanto, podem ser usados parêntesis para alterar a sua ordem de precedência:

VarResultado := (Var1 + Var2) * Var3; VarResultado2 := Var4 = (Var5 AND Var6);

PLCs e Norma IEC 61131-3

No primeiro exemplo, o uso dos parêntesis faz com que a soma tenha precedência sobre a multiplicação. E no segundo exemplo, o operador 'e' (AND) tem precedência sobre o operador de igualdade ('=') devido aos parêntesis.

As instruções da linguagem ST estão sumarizadas na Tabela 5.3

Tabela 5.3: Instruções da linguagem ST.

Tipo de instrução Exemplos

IF IF a < b THEN

c := 0; ELSE

c := 1; END_IF

CASE CASE var OF

1: c := 1; 2: c := 2; 3: c := 3; ELSE c := 4; END_CASE FOR FOR i := 1 TO 10 DO a[i] := 0; END_FOR

WHILE WHILE var < 10 DO

var := var + 1; END_WHILE REPEAT REPEAT var := var + 1; UNTIL var = 10 END_REPEAT

5.5 Desenvolvimento e execução de um programa PLC

Documentos relacionados