You are on page 1of 20

INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE GOIS (IFG) CAMPUS JATA

CONTROLADORES LGICOS PROGRAMVEIS (CLPs)


Linguagem de Lista de Instrues

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (LI) Prof. Dr. Andr Luiz

Lista de Instrues

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. 3

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa As instrues so executadas no contedo do acumulador.

Lista de Instrues (LI)

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*) 4

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 S R AND & OR XOR ADD SUB MUL DIV GT GE EQ NE LT LE Operando Descrio/ significado Carrega o operando para o acumulador Armazena o contedo do acumulador no local 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

BOOL BOOL N, ( N, ( N, ( N, (

( ( ( ( ( (

(<=) 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
6

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 ST
Figura 2 Soluo exemplo 2

I1 Q1

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 ST
Figura 3 Soluo do exemplo 3.

I1 Q1

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 LDN AND AND ST Ladder I1 I2 I3 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 OR ORN ST
Figura 5 Soluo exemplo 5.

I1 I2 I3 Q1

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 8

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

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. Lista de Instrues LD ORN ANDN S Ladder I1 I2 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.

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Lista de Instrues LD ORN ANDN R Ladder I.1 I.2 I.3 Q.1

Figura 7 Soluo exemplo 7.

6 Operaes adiadas.
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 LD AND(N ORN ) ST Q.1 Lista de Instrues I.1 I.2 I.3

Figura 8 Soluo exemplo 8. 10

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

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 Ento, ao final da segunda linha temos: %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 11 Pilha: %IX1 AND( Acumulador: %IX2

Na terceira linha feita a operao OR %IX3 com o contedo atual do acumulador, neste caso

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa LD %IX1 (nota1)

Lista de Instrues (LI)

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 OR( LD AND( LD OR ) a3 a4 a2 a1 (*acumulador = a1; *) (*pilha: {}; *) (*OR adiado*) (*acumulador =a2*) (*pilha: {a1 OR};*) A(*AND adiado*) (*acumulador = a3*) (*pilha: {a1 OR; A2 AND};*) (*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: {};*) 12

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa OR ST a6 resultado (*acumulador = a1+(a2(a3+a4)a5)+a6;*) (*resultado = acumulador*)

Lista de Instrues (LI)

Exemplo 10: Dada a equao lgica Q1= (I1. I2) + (I3. I4), implemente, em Ladder e em Lista de Instrues. Ladder LD AND OR( ANDN ) ST Q.1 Lista de Instrues I.1 I.2 I.3 I.4

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. Ladder

13

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI) Lista de Instrues

LD AND ST LD ANDN OR ST

I1 I2 M1 I3 I4 M1 Q1

Figura 11 Implementao da equao (I1.

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

Exemplo 11: Dada a equao lgica Q1 = (I1+I2).(I3+I4), implemente em Ladder e LI. Ladder LD ORN AND(N OR ) ST Q1

Lista de Instrues I1 I2 I3 I4

Figura 12 Soluo do exemplo 11

14

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

A Figura 13 exibe a soluo para o exemplo anterior, utilizando rels auxiliares. Ladder Lista de Instrues LD ORN ST LDN OR AND ST
Figura 13 Soluo do exemplo 11 com o uso de rels auxiliares.

I1 I2 M1 I3 I4 M1 Q1

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 LD AND OR(N AND(N OR ) ) ST Q1

Lista de Instrues I1 I2 I3 I4 I5

15

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

Figura 14 Soluo do exemplo 12.

A figura 15 descreve outra soluo para o exemplo 12, agora utilizando rels auxiliares. Lista de Instrues LD AND ST LDN OR ANDN OR ST Ladder I1 I2 M1 I4 I5 I3 M1 Q1

Figura 15 Soluo do exemplo 12 com rels.

16

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

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 LD LDI AND ANI OR ORI OUT Mitsubishi 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 Lista de Instrues CAL T1 (IN:=%IX1, PT:= T#20s) LD ST T1.Q %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

17

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Lista de Instrues (*Network 0*) LD TON ST %I0.0 T1, 100 %Q0.0

Lista de Instrues (LI)

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 TON LD = I0.0 T1, 100 T1 Q0.0

(*Network 1*)

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 Lista de Instrues BLK LD IN OUT_BLK LD ST END_BLK
Figura 19 CLPs da famlia Twido Ladder e Lista de Instruo

%TM1 %I0.1

Q %Q0.3

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

18

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

TON (Timer On Delay) atraso associado a execuo da lgica de entrada (opo padro); TOF (Timer Off Delay) no regatilhvel) aps a execuo da lgica de entrada, as sadas correspondentes sero executadas segundo o atraso definido no temporizador (opo

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 ST T1.Q %QX1

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

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 LD CTU C2, 20 (*Network 1*) LD = C2 Q0.0 I0.0 I0.1

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

19

6 Perodo de Engenharia Eltricaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Lista de Instrues (LI)

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

BLK LD R LD AND CU

Lista de Instrues %C8 %I1.1 %I1.2 %M0

END_BLK LD ST %C8.D %Q0.0

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

20

You might also like