Você está na página 1de 17

INSTITUTO FEDERAL DE EDUCAO, CINCIA E

TECNOLOGIA DE GOIS (IFG)


CAMPUS JATA

CONTROLADORES LGICOS
PROGRAMVEIS (CLPs)
Linguagem de Lista de Instrues

Prof. Dr. Andr Luiz

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

1 Introduo
A linguagem de Lista de Instrues (LI), tambm comumente referenciada pelo nome original da
lngua inglesa, Instruction List (IL), define mnemnicos (auxiliar de memria) como feito na
linguagem assembly utilizada nos microprocessadores e microcontroladores. Os mnemnicos
representam operaes lgicas booleanas e comandos de transferncia de dados.
Em relao as demais linguagens, apresenta as seguintes caractersticas:
Vantagens

Correspondncia entre comandos da linguagem e as instrues assembly do CLP,


facilitando a estimativa do tempo de execuo do programa.

Documentao mais compacta do que a equivalente com rels.

Desvantagens

Necessidade de familiarizao do operador com lgebra booleana.

Necessidade de uma certa noo de programao em assembly.

normalmente difcil e trabalhoso realizar eventuais alteraes no cdigo j implementado.

A LI a linguagem ideal para resolver problemas simples e pequenos em que existem poucas
quebras no fluxo de execuo do programa. , portanto, particularmente adequada para CLPs de
pequeno porte.
Essa linguagem pode ser usada para descrever o comportamento de:

Funes;

Blocos de funes;

Programas

2 - Principos bsicos
A linguagem de Lista de Instrues semelhante ao cdigo assembly com comandos load e store.
Ela usa o conceito de acumulador para armazenar os resultados intermedirios.

Cada instruo utiliza ou modifica o valor de um nico registrador denominado registro de


resultado ou acumulador.
2

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

As instrues so executadas no contedo do acumulador.

O operador indica o tipo de operao a ser feito entre o resultado atual contido no
acumulador e o operando.

O resultado da operao armazenado no prprio acumulador.

3 - Sintaxe
As regras principais de formao de um programa em linguagem de Lista de Instrues so:

Cada instruo deve comear em uma nova linha

Cada instruo pode ser precedida por um rtulo (elemento opcional) que indicado com
um nome seguido de dois pontos :.

Uma instruo composta de operador e operandos ( instruo = operador + operandos).

O operador pode ou no incluir um modificador.

Caso seja necessria a incluso de mais de um operando, estes devem ser separados por
vrgulas.

Se for desejada a incluso de comentrio, ele deve ser o ltimo elemento da linha.

Um comentrio iniciado pela seqncia de caracteres (* e terminado pela seqncia*).

Linhas em branco podem ser inseridas entre instrues.

Um comentrio pode ser colocado em linha sem instrues.

Esta estrutura pode ser verificada na Figura 1e no exemplo 1.

Figura 1 Estrutura de uma linha de instruo da linguagem LI.

Exemplo 1:
Rtulo
Incio

Operador
LD
AND

Operando
% IX1
% MX3

Comentrio
(* boto pressionado?*)
(* comando vlido*)
3

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

ST
% QX1
(* liga o motor)
O valor da entrada % IX1 carregado para o acumulador, em seguida feita um operao lgica
AND entre o contedo do acumulador e da memria % MX3. O resultado transferido para a sada
%QX1.

4. Rtulo (etiqueta)
Cada instruo pode ser precedida por um rtulo, que um nome seguido do caractere :. Ele
tambm pode ser colocado em uma linha que no contenha nenhuma instruo. Os rtulos so
utilizados como operandos PR certas instrues tais como saltos. A sua nomenclatura deve obedecer a
seguintes regras:

O comprimento no deve exceder 16 caracteres.

O primeiro caractere deve ser uma letra.

Os caracteres restantes podem ser letras, nmeros ou smbolo _ (sublinhado).

No pode haver no mesmo programa dois rtulos iguais.

5 - Modificadores de instrues
A lista a seguir representa os modificadores permitidos para as instrues da linguagem. Devem ser
anexados aps o nome da instruo, sem caractere separador.

N = inverso lgica do operando;

( = operao adiada;

C = operao condicional.

O Modificador N indica que o operando deve ser invertido antes de ser utilizado pela instruo.
Por exemplo, a instruo ANDN % IX1 interpretada como o contedo de %IX1 invertido e com o
valor de resultado feita ma operao lgica AND com o acumulador.
O Modificador abrir parnteses ( indica que a avaliao da instruo deve ser adiada at que seja
encontrado o prximo fechar parnteses ).

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

O modificador C indica que a instruo deve ser executada somente se o contedo atual do
acumulador tiver lgico verdadeiro (ou diferente de zero para tipos no booleanos). O modificador
C pode ser combinado com o modificador N para indicar que a instruo no deve ser executada,
a menos que o resultado seja falso (ou 0 para tipos no booleanos).
A tabela 1.1 apresenta os principais comandos da linguagem de Lista de Instrues.
Operador Modificador
LD
N
ST
N

Operando

S
R
AND
&
OR
XOR
ADD
SUB
MUL
DIV
GT
GE

BOOL
BOOL

(
(

especificado pelo operando


Faz com que o valor do operando seja 1
Faz com que o valor do operando seja 0
Funo booleana AND
Funo booleana AND
Funo booleana OR
Funo booleana OU - Exclusivo
Soma
Subtrao
Multiplicao
Diviso
Comparao (Greater Than) maior que (>)
Comparao (Greater or Equal) maior ou igual que

(
(
(
(

(>=)
Comparao (Equl to) igual a (=)
Comparao (Not Equal) diferente de (< >)
Comparao (Less Than) menor que (<)
Comparao (Less or Equal) menor ou igual que

N, (
N, (
N, (
N, (

EQ
NE
LT
LE

Descrio/ significado
Carrega o operando para o acumulador
Armazena o contedo do acumulador no local

(<=)
JMP
C, N
Nome do rtulo
Desvia para o rtulo Nome_do_Rtulo
CAL
C, N
Nome da Funo Invoca a execuo de um bloco de funes
RET
C, N
Retorna de uma funo ou bloco de funo.
Tabela 1 Principais operadores da linguagem de Lista de Instrues.

5.1 - Operador LD
Mnemnico da palavra inglesa LOAD

Operao: carrega um valor para o acumulador.

Modificador: N

Operando: expresso constante.

5.2 - Operador ST
5

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Mnemnico da palavra inglesa STORE

Operao: transfere o contedo do acumulador para uma varivel.

Modificador: N

Operando: varivel interna ou de usurio

Exemplo 2: Implemente um programa em Ladder e em Lista de instrues (LI) que tenha a tarefa de
acender a lmpada L sempre que a chave CH fechar.
Soluo: Um programa simples no qual a atuao de uma entrada causa a atuao de uma sada, isto
, utiliza as duas instrues principais que so leitura de varivel (LD) e atribuio de valor (ST), ter
o seguinte aspecto , em Ladder e LI.
Ladder
Lista de Instrues
LD

I1

ST

Q1

Figura 2 Soluo exemplo 2

O processador efetua a leitura de I1 continuamente e executa um programa que atribui o valor lido
sada Q1. Assim, se a chave CH for fechada, far com que I1 passe ao nvel lgico 1, o que vai faze
com que L tambm passe ao nvel lgico 1, atuando sobre a sada e, conseqentemente, acedendo a
lmpada L.
Exemplo 3: Para um contato A do tipo NF, preciso fazer a leitura de varivel negada LDN,
conforme visto a seguir:
Ladder
Lista de Instrues
LDN

I1

ST

Q1

Figura 3 Soluo do exemplo 3.

Neste caso, a partir da instruo LDN, o processador efetua a leitura de complemento lgico de I1 e
atribui o valor lido sada Q1.

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Exemplo 4: Operao E (AND) Dada a equao lgica L= I1. I2. I3, implemente a funo lgica
no diagrama Ladder e em Lista de Instrues.
Soluo:
Lista de Instrues

Ladder
LDN

I1

AND

I2

AND

I3

ST

Q1

Figura 4 Soluo exemplo 4.

Exemplo 5: Operao OU (OR) Dada a equao lgica Q1= I1+ I2+ I3, implemente a funo
lgica no diagrama Ladder e em Lista de Instrues.
Soluo:
Ladder
Lista de Instrues
LD

I1

OR

I2

ORN

I3

ST

Q1

Figura 5 Soluo exemplo 5.

5.3. Operador S
uma instruo de memorizao. A letra S mnemnico da palavra inglesa set.
Operao: Fora uma varivel booleana a ir para o estado lgico 1 se o acumulador estiver com o
valor VERDADEIRO (nvel Lgico 1). Nenhuma operao realizada se o operador estiver com o
valor lgico FALSO (nvel lgico 0).

Modificador: nenhum.

Operando: varivel booleana interna ou de sada

Exemplo 6: Faa o diagrama Ladder e a lista de Instrues correspondentes a dois contatos I1 e I2,
NA e NF respectivamente, em paralelo, e um contato I3, NF, em srie com ambos. O outro lado do
contato I3 est conectado bobina do tipo set de um rel Q1 de auto reteno.

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Lista de Instrues

Ladder
LD

I1

ORN

I2

ANDN

I3

Q1

Figura 6 Soluo exemplo 6

5.4. Operador R
um opeador que serve para limpar o contedo da memria. Faz com que o contedo da
memria v para o valor zero. A letra R um mnemnico da palavra inglesa reset.
Operao: fora uma varivel booleana a ir para o valor lgico 0 se o valor do acumulador for
VERDADEIRO ( nvel lgico 1). Nenhuma operao realizada se o valor do acumulador for FALSO
(nvel lgico 0).

Modificador: Nenhum.

Operando: Varivel lgica binria interna ou de sada.

Ps: 1 A instruo R (reset) existe apenas em programas de CLP e no em um circuito eltrico de


chaves ou rels.
2 A instruo R (reset) sempre trabalha com a instruo S (set) e vice versa.
Exemplo 7: Faa o diagrama Ladder ea lista de Instrues correspondentes a dois contatos I.1 e I.2,
NA e NF respectivamente, em paralelo, e um contato I.3, NF, em srie com ambos. O outro lado do
contato I.3 est conectado bobina do tipo reset de um rel Q.1 de auto reteno.
Lista de Instrues

Ladder
LD

I.1

ORN

I.2

ANDN

I.3

Q.1

Figura 7 Soluo exemplo 7.

6 Operaes adiadas.
8

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Como a linguagem LI s possui um registrador, certas operaes podem ser adiadas para alterar a
ordem natural da execuo das instrues. Os parnteses so utilizados para representa as operaes
adiadas.

( = indica que a instruo anterior deve ser adiada;

) = indica que a operao anteriormente adiada deve agora ser executada.

Exemplo 8:
Ladder

Lista de Instrues
LD

I.1

AND(N

I.2

ORN

I.3

)
ST

Q.1

Figura 8 Soluo exemplo 8.


Para anlise da execuo do exemplo fornecido, preciso definir o conceito de pilha (stack). Para
facilitar a compreenso, faamos uma analogia com uma pilha de pratos. Ao empilhar diversos pratos,
o ltimo empilhado ser o primeiro a ser retirado. Este conceito tambm conhecido pela sua
abreviao da lngua inglesa LIFO Last Input First Output.
Ao encontrar o modificador (, o contedo do acumulador e o operador so colocados na pilha. Da
mesma maneira, quando o operador ) encontrado, retira-se o ultimo elemento da pilha e executa-se
a operao adiada com o contedo atual do acumulador.
executada da seguinte maneira:
LD

%IX1

O contedo da entrada %IX1 transferido para o acumulador


A Instruo seguinte :
AND

(%IX2

Ao encontrar o operador AND (, o contedo do acumulador e a operao adiada so movidos


para a pilha e o operando seguinte (%IX2) copiado para o acumulador
9

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Ento, ao final da segunda linha temos:

Pilha: %IX1 AND(

Acumulador: %IX2

Na terceira linha feita a operao OR %IX3 com o contedo atual do acumulador, neste caso
%IX2.
Na quarta linha, ao encontrar o operador ), retirado o contedo da pilha (%IX1) e executada a
operao adiada (AND) com o resultado atual do acumulador. Finalmente o resultado transferido
para a sada pela instruo: ST

%QX1.

Existem duas maneiras vlidas para implementar a operao adiada do exemplo anterior:
carregamento explcito do operador ou forma simplificada.
Num
1

Descrio/exemplo
Carregamento explcito do operador
AND (N
LD

%IX1 (nota1)

ORN %IX3
2

)
Forma simplificada
AND (N
%IX2
ORN

%IX3

)
Nota 1: No formato 1 o operador LD pode ser modificado ou substitudo por outra operao ou
chamada de funo.
Figura 9: Duas maneiras de programa instrues adiadas.
Exemplo 9:
Deseja-se avaliar o resultado da seguinte expresso lgica:
Res:= a1+(a2(a3+a4) a5) + a6
Como pode ser observado, algumas expresses so avaliadas antes das outras, especificadas com a
utilizao de parntese para indicar a maior prioridade. Uma implementao em LI pode ser:
LD

a1

(*acumulador = a1; *)
(*pilha: {}; *)

OR(
LD

(*OR adiado*)
a2

(*acumulador =a2*)
10

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

(*pilha: {a1 OR};*)


AND(
LD

A(*AND adiado*)
a3

(*acumulador = a3*)
(*pilha: {a1 OR; A2 AND};*)

OR

a4

(*resultado = a3 OR a4; *)
(*executa o ltimo elemento da pilha (a2 AND)*)
(*com o contedo atual do acumulador*)
(*acumulador = a2 AND (a3 OR a4;*)
(*pilha: {a1 OR}*)

AND

a5

(*acumulador = a2 (a3+a4) a5*)


(*executa o ultimo elemento da pilha a1 OR*)
(*com o contedo atual do acumulador *)
(*acumulador = a1+(a2(a3+a4)a5);*)

ST

resultado

(*pilha: {};*)

OR

a6

(*acumulador = a1+(a2(a3+a4)a5)+a6;*)

ST

resultado

(*resultado = acumulador*)

Exemplo 10: Dada a equao lgica Q1= (I1. I2) + (I3. I4), implemente, em Ladder e em Lista de
Instrues.
Ladder

Lista de Instrues
LD

I.1

AND

I.2

OR(

I.3

ANDN

I.4

)
ST

Q.1

Figura 10: Soluo do exemplo 10

Este mesmo programa pode ser reescrito utilizando rels auxiliares, isto , regies de memria
interna utilizadas para armazenamento temporrio de informaes identificadas como M1, M2, M3 e
assim sucessivamente. vantajoso, quanto clareza do programa, porm desvantajoso em relao ao
uso da quantidade de memria.
Desta maneira, o programa anterior pode ser refeito apresentando o mesmo comportamento sob o
ponto de vista lgico, conforme ilustra a Figura.
11

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Ladder
Lista de Instrues

Figura 11 Implementao da equao (I1.

LD

I1

AND

I2

ST

M1

LD

I3

ANDN

I4

OR

M1

ST

Q1

I2) + (I3. I4), em Ladder e LI.

Exemplo 11: Dada a equao lgica Q1 = (I1+I2).(I3+I4), implemente em Ladder e LI.


Ladder

Lista de Instrues
LD

I1

ORN

I2

AND(N

I3

OR

I4

)
ST

Q1

Figura 12 Soluo do exemplo 11

A Figura 13 exibe a soluo para o exemplo anterior, utilizando rels auxiliares.


Ladder

12

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Lista de Instrues
LD

I1

ORN

I2

ST

M1

LDN

I3

OR

I4

AND

M1

ST

Q1

Figura 13 Soluo do exemplo 11 com o uso de rels auxiliares.

Exemplo 12: Dada a equao lgica Q1 = I1.I2 + I3(I4+I5), implemente em Ladder e LI.
Soluo: A figura 14 mostra a soluo.
Ladder

Lista de Instrues
LD

I1

AND

I2

OR(N

I3

AND(N

I4

OR

I5

)
)
ST

Q1

Figura 14 Soluo do exemplo 12.

Lista de Instrues

A figura 15 descreve outra soluo para o


12, agora utilizando rels auxiliares.

LD

I1

AND

I2

ST

M1

LDN

I4

OR

I5

ANDN

I3

OR

M1

ST

Q1

exemplo

13

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Ladder

Figura 15 Soluo do exemplo 12 com rels.

7 - Mnemnicos de alguns fabricantes


Antes do surgimento IEC 61131-3, cada fabricante utilizava seu prprio conjunto de mnemnicos.
Embora muito parecidos entre si, eram diferentes de um fabricante para outro. Assim, antes de
implementar um programa em linguagem de LI em uma aplicao real, deve-se realizar um estudo
detalhado do manual do fabricante para determinar os mnemnicos equivalentes norma IEC 61131-3.
A ttulo de exemplo, na tabela 2 so fornecidos os mnemnicos de alguns fabricantes.
IEC 61131-3
LD
LDN
AND
ANDN
OR
ORN
ST

Mitsubishi
LD
LDI
AND
ANI
OR
ORI
OUT

OMRON
LD
LD NOT
AND
AND NOT
OR
OR NOT
OUT

SIEMENS S7-200
LD
LDN
A
AN
O
ON
=

Tabela 2 Mnemnicos de alguns fabricantes e seus correspondentes na norma IEC 61131-3

8 Temporizadores.
A Figura 16 encontra se a implementao de um temporizador no CLP IPC PS1 (Festo).
Ladder

14

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Lista de Instrues
CAL T1 (IN:=%IX1, PT:= T#20s)
LD

T1.Q

ST

%QX1

Figura 16 Implementao de um temporizador TON no CLP da Festo IPC PS1 Professional

A figura 17 mostra outra implementao em controlador que segue a norma IEC 61131-3
Ladder
Lista de Instrues
(*Network 0*)
LD

%I0.0

TON

T1, 100

ST

%Q0.0

Figura 17 Implementao de um temporizador TON no CLP que segue a norma IEC 61131-3

A figura 18 exibe a implementao nos CLPs S7-200 da Siemens.


Ladder
Lista de Instrues
(*Network 0*)
LD

I0.0

TON

T1, 100

(*Network 1*)
LD

T1

Q0.0

Figura 18 Implementao da funo TON no CLP S7-200 da Siemens em Ladder e em LI

A figura 19 exibe a implementao dos CLPs da famlia Twido


Ladder

15

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)


Lista de Instrues
BLK

%TM1

LD

%I0.1

IN
OUT_BLK
LD

ST

%Q0.3

END_BLK
Figura 19 CLPs da famlia Twido Ladder e Lista de Instruo

As instrues podem conter todos os tipos de operador de entrada padro, tais como:

TON (Timer On Delay) atraso associado a execuo da lgica de entrada (opo


padro);

TOF (Timer Off Delay) -

aps a execuo da lgica de entrada, as sadas

correspondentes sero executadas segundo o atraso definido no temporizador (opo


no regatilhvel)

TP (Timer Pulse) - aps a execuo da lgica de entrada, as sadas correspondentes


sero executadas segundo o atraso definido no temporizador (opo regatilhvel).

9 Contadores.
Os blocos podem ser chamados de vrias maneiras e os fabricantes tm alguma liberdade de
implementao.
Pela norma IEC 61131-3 as funes podem ser chamadas diretamente, sem a necessidade de um
operador que as preceda. De fato, o nome da funo pode ser considerado um operador. Os parmetros
passados so: o endereo do contador, o contato que est ligado entrada reset e o valor de PV.
Ladder
Lista de Instrues
CAL T1 (IN:=%IX1, PT:= T#20s)
LD

T1.Q

ST

%QX1

Figura 20 Implementao de um contador crescente em um CLP que segue a norma IEC 61131-3

16

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Outra forma ainda seguida pela Siemens na sua linha de CLPs de pequeno porte (S7-200). A
figura 21 ilustra uma possvel implementao nesses controladores.
Ladder
Lista de Instrues
(*Network 0*)
LD

I0.0

LD

I0.1

CTU C2, 20
(*Network 1*)
LD

C2

Q0.0

Figura 21 Implementao de um contador crescente no CLP S7-200 da Siemens

A figura 22 exibe a implementao dos CLPs da famlia Twido para um contador de ordem
crescente.

BLK

Lista de Instrues
%C8

LD

%I1.1

R
LD

%I1.2

AND

%M0

CU
END_BLK
LD

%C8.D

ST

%Q0.0

Figura 22 Implementao de um contador crescente no CLP Twido da Schneider.

17

Você também pode gostar