You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Programação <strong>de</strong> CLPs por<br />
<strong>Diagramas</strong> <strong>de</strong> <strong>Contato</strong><br />
1. <strong>Diagramas</strong> <strong>de</strong> <strong>Contato</strong><br />
2. Um CLP Genérico<br />
3. Instruções <strong>de</strong> Entrada e Saída<br />
4. Instruções Booleanas<br />
5. Circuitos <strong>de</strong> Intertravamento<br />
6. Detecção <strong>de</strong> Borda<br />
7. Temporizadores<br />
8. Contadores<br />
9. Exemplo<br />
1/20
1. <strong>Diagramas</strong> <strong>de</strong> <strong>Contato</strong><br />
Os diagramas <strong>de</strong> contato são uma forma <strong>de</strong> programação <strong>de</strong><br />
CLPs por meio <strong>de</strong> símbolos gráficos, representando contatos<br />
(contacts) e bobinas (coils).<br />
Os contatos e bobinas correspon<strong>de</strong>m a variáveis booleanas<br />
armazenadas na memória intermediária do CLP.<br />
Os contatos e bobinas são conectados por ligações (links) em<br />
ramos (rungs) como num diagrama <strong>de</strong> lógica a relé.<br />
As expressões booleanas calculadas a cada ciclo <strong>de</strong><br />
varredura do CLP correspon<strong>de</strong>m à avaliação lógica<br />
seqüencial do diagrama <strong>de</strong> contatos.<br />
Um contato é representado como abaixo, on<strong>de</strong> se i<strong>de</strong>ntifica<br />
um contato, associado à variável booleana A, interna ao CLP,<br />
e suas ligações.<br />
A<br />
--||--<br />
Os contatos são usados como acesso ao estado <strong>de</strong> uma<br />
variável interna no cálculo <strong>de</strong> expressões booleanas.<br />
<strong>Contato</strong><br />
normalment<br />
e aberto<br />
<strong>Contato</strong><br />
normalment<br />
e fechado<br />
A<br />
--||--<br />
A<br />
--|/|--<br />
O estado da ligação à direita é<br />
copiado para a ligação à esquerda<br />
se o estado <strong>de</strong> A é verda<strong>de</strong>iro. Caso<br />
contrário, o estado da ligação à<br />
direita é falso.<br />
O estado da ligação à direita é<br />
copiado para a ligação à esquerda<br />
se o estado <strong>de</strong> A é falso, caso<br />
contrário, o estado da ligação à<br />
direita é verda<strong>de</strong>iro.<br />
2/20
<strong>Contato</strong><br />
sensível à<br />
transição<br />
positiva<br />
A<br />
--|P|--<br />
O estado da ligação à direita é<br />
verda<strong>de</strong>iro por um ciclo <strong>de</strong><br />
varredura se o estado da ligação à<br />
esquerda é verda<strong>de</strong>iro e uma<br />
transição positiva da variável A é<br />
<strong>de</strong>tectada.<br />
Uma bobina é representada como na figura abaixo, on<strong>de</strong><br />
i<strong>de</strong>ntifica-se uma bobina, associada a uma variável booleana<br />
Q.<br />
Q<br />
--( )--<br />
As bobinas alteram os estados das variáveis associadas.<br />
Bobina<br />
normal<br />
Q<br />
--( )--<br />
Bobina<br />
negativa Q<br />
--(\)--<br />
Bobina<br />
Latch<br />
(Set)<br />
Bobina<br />
Latch<br />
(Reset)<br />
Bobina<br />
sensível<br />
à<br />
transição<br />
positiva<br />
Q<br />
--(S)--<br />
Q<br />
--(R)--<br />
Q<br />
--(P)--<br />
O estado da ligação da esquerda é<br />
copiado para a variável Q e para a<br />
ligação à direita.<br />
O estado da ligação à esquerda é<br />
copiado para a ligação à direita, e a<br />
negação do estado da ligação à<br />
esquerda é copiada para a variável<br />
Q.<br />
O estado <strong>de</strong> Q passa para<br />
verda<strong>de</strong>iro quando a ligação à<br />
esquerda vai para verda<strong>de</strong>iro, e não<br />
se altera em caso contrário.<br />
O estado <strong>de</strong> Q passa para falso<br />
quando a ligação à direita vai para<br />
verda<strong>de</strong>iro, e não se altera em caso<br />
contrário.<br />
O estado <strong>de</strong> Q passa para<br />
verda<strong>de</strong>iro por um ciclo <strong>de</strong><br />
varredura cada vez que a ligação à<br />
esquerda vai <strong>de</strong> falso para<br />
verda<strong>de</strong>iro.<br />
3/20
2. Um CLP genérico<br />
Para fins <strong>de</strong> ilustração <strong>de</strong> diversos aspectos da programação<br />
por diagramas <strong>de</strong> contato, introduz-se um CLP ilustrativo:<br />
Informações sobre o CLP:<br />
I0 I1 I2 I3 I4 I5 I6 I7 GND<br />
CLP<br />
Genérico<br />
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 GND<br />
• 8 entradas a relé, en<strong>de</strong>reçadas pelas variáveis I0 a I7<br />
• 8 saídas a relé, en<strong>de</strong>reçadas pelas variáveis Q0 a Q7<br />
• Variáveis auxiliares, en<strong>de</strong>reçadas por F0, F1, ...<br />
• Temporizadores, en<strong>de</strong>reçados por T0, T1, ...<br />
• Contadores, en<strong>de</strong>reçados por C0, C1, ...<br />
4/20
3. Instruções <strong>de</strong> entrada e saída<br />
I0 I1 I2 I3 I4 I5 I6 I7 GND<br />
CLP<br />
Genérico<br />
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 GND<br />
Programa básico <strong>de</strong> entrada e saída<br />
Leitura <strong>de</strong> variável negada<br />
Atribuição <strong>de</strong> valor invertido<br />
| I0 Q0 |<br />
|--||------( )--|<br />
| |<br />
| I0 Q0 |<br />
|--|/|-----( )--|<br />
| |<br />
| I0 Q0 |<br />
|--||------(/)--|<br />
| |<br />
5/20<br />
CH<br />
Lam<br />
p<br />
- +<br />
Vc<br />
R S<br />
~
Lógica duplamente invertida<br />
| I0 Q0 |<br />
|--|/|-----(/)--|<br />
| |<br />
As entradas po<strong>de</strong>m também ser <strong>de</strong> natureza invertida, como<br />
contatos e botoeiras normalmente fechadas (NF).<br />
O uso <strong>de</strong> contatos NF no diagrama <strong>de</strong> contatos facilita a<br />
manutenção quando pela disponibilida<strong>de</strong> <strong>de</strong> LEDs no painel<br />
do CLP.<br />
6/20
4. Instruções Booleanas<br />
Operação ‘E’<br />
Operação ‘OU’<br />
Lógica elaborada<br />
| I1 I2 I3 Q0 |<br />
|--||----||----||----( )--|<br />
| |<br />
| I1 Q1 |<br />
|--||--|--( )--|<br />
| I2 | |<br />
|--||--| |<br />
| I3 | |<br />
|--||--| |<br />
| I0 I1 I4 I5 Q0 |<br />
|--||-----||--|--||--|--||----( )--|<br />
| I2 I3 | | |<br />
|--||-----||--| | |<br />
| I1 I2 | |<br />
|--||--|--||--|------| |<br />
| I6 | I7 | |<br />
|--||--|--||--| |<br />
| |<br />
7/20
Programa implementado com flags ou relés auxiliares<br />
| I0 I1 F0 |<br />
|--||----||----------( )--|<br />
| I2 I3 F1 |<br />
|--||----||----------( )--|<br />
| F0 I4 F2 |<br />
|--||------|---||----( )--|<br />
| F1 | |<br />
|--||------| |<br />
| I1 F3 |<br />
|--||------|---------( )--|<br />
| I6 | |<br />
|--||------| |<br />
| I2 F4 |<br />
|--||------|---------( )--|<br />
| I7 | |<br />
|--||------| |<br />
| F3 F4 F5 |<br />
|--||----||----------( )--|<br />
| F2 I5 Q0 |<br />
|--||------|---||----( )--|<br />
| F5 | |<br />
|--||------| |<br />
| |<br />
8/20
5. Circuitos <strong>de</strong> memorização ou intertravamento<br />
Memorização ou auto-retenção <strong>de</strong> uma variável<br />
| I0 Q0 |<br />
|--||--|--( )--|<br />
| Q0 | |<br />
|--||--| |<br />
¿É possível com lógica <strong>de</strong> relés físicos?<br />
Aplicação - acionamento por botoeiras <strong>de</strong> liga e <strong>de</strong>sliga:<br />
I0 I1 I2 I3 I4 I5 I6 I7 GN<br />
D<br />
CLP<br />
Genérico<br />
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 GN<br />
D<br />
Programa <strong>de</strong> liga-<strong>de</strong>sliga com priorida<strong>de</strong> para o<br />
<strong>de</strong>sligamento<br />
| I0 I1 Q0 |<br />
|--||--|--|/|---( )--|<br />
| Q0 | |<br />
|--||--| |<br />
9/20<br />
K<br />
Lig<br />
Desl<br />
- +<br />
Vc<br />
R S<br />
~
Programa <strong>de</strong> liga-<strong>de</strong>sliga com priorida<strong>de</strong> para o ligamento<br />
Usando bobinas <strong>de</strong> set-reset<br />
| Q0 I1 Q0 |<br />
|--||----|/|--|--( )--|<br />
| I0 | |<br />
|--||---------| |<br />
| I0 Q0 |<br />
|--||------(S)--|<br />
| I1 Q0 |<br />
|--||------(R)--|<br />
| |<br />
| I1 Q0 |<br />
|--||------(R)--|<br />
| I0 Q0 |<br />
|--||------(S)--|<br />
| |<br />
Qual é a priorida<strong>de</strong> nos circuitos acima?<br />
10/20
6. Circuito <strong>de</strong> Detecção <strong>de</strong> Borda<br />
Existem situações no controle discreto em que o estado <strong>de</strong><br />
uma variável não é suficiente como informação, mas sim o<br />
instante <strong>de</strong> transição <strong>de</strong> um estado a outro.<br />
Diferença entre a extração <strong>de</strong> uma condição ou <strong>de</strong> um<br />
evento <strong>de</strong> um sinal.<br />
Exemplo <strong>de</strong> um programa que realiza <strong>de</strong>teção <strong>de</strong> borda <strong>de</strong><br />
subida em uma variável <strong>de</strong> um CLP. Utiliza-se o conceito <strong>de</strong><br />
ciclo <strong>de</strong> varredura:<br />
I0<br />
F0<br />
F1<br />
| I0 F1 F0 |<br />
|--||----|\|----( )--|<br />
| I0 F1 |<br />
|--||-----------( )--|<br />
| |<br />
¿Como se implementa tal circuito com lógica <strong>de</strong> relés pura?<br />
¿Como seria um circuito <strong>de</strong>tetor <strong>de</strong> borda <strong>de</strong>scen<strong>de</strong>nte?<br />
11/20
Exemplo <strong>de</strong> circuito <strong>de</strong> liga-<strong>de</strong>sliga com uma só botoeira<br />
I0 I1 I2 I3 I4 I5 I6 I7 GND<br />
CLP<br />
Genérico<br />
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 GND<br />
Programa correspon<strong>de</strong>nte:<br />
| I0 F1 F0 |<br />
|--||--|\|---------( )--|<br />
| I0 F1 |<br />
|--||--------------( )--|<br />
| F0 Q0 Q0 |<br />
|--||--|\|--|------( )--|<br />
| F0 Q0 | |<br />
|--|/|--||--| |<br />
| |<br />
¿Seria possível fazê-lo com lógica a relés pura?<br />
12/20<br />
K<br />
Boto<br />
- +<br />
Vc<br />
R S<br />
~
7. Temporizadores<br />
Seguindo o mo<strong>de</strong>lo dos antigos relés <strong>de</strong> tempo, o tipo <strong>de</strong><br />
temporização mais comum em CLPs é o retardo na<br />
energização.<br />
Exemplo<br />
I0<br />
T0<br />
Q0<br />
t < 3s<br />
| I0 3 T0 |<br />
|--||----( )--|<br />
| |<br />
| T0 Q0 |<br />
|--||----( )--|<br />
| |<br />
Exemplo <strong>de</strong> uso do temporizador – circuito Estrela-Triângulo<br />
para acionamento <strong>de</strong> motor.<br />
13/20<br />
t = 3s<br />
t > 3s
Esquemas <strong>de</strong> temporização<br />
Temporiozador com retardo no <strong>de</strong>sligamento<br />
I0<br />
Q0<br />
Sugestão <strong>de</strong> programa<br />
| Q0 T0 Q0 |<br />
|--||----|\|--|---------( )--|<br />
| I0 | I0 T T0 |<br />
|--||---------|--|\|----( )--|<br />
Temporizador com retardo na energização e no<br />
<strong>de</strong>sligamento<br />
I0<br />
Q0<br />
T T<br />
t < t1 t > t1<br />
14/20<br />
t1 t2
Sugestão <strong>de</strong> programa<br />
| I0 t1 T1 |<br />
|--||-------------------( )--|<br />
| Q0 T2 Q0 |<br />
|--||----|\|--|---------( )--|<br />
| T1 | T1 t2 T2 |<br />
|--||---------|--|\|----( )--|<br />
Temporizador <strong>de</strong> tempo <strong>de</strong>finido<br />
I0<br />
Q0<br />
Sugestão <strong>de</strong> programa<br />
| I0 T T0 |<br />
|--||--|---------( )--|<br />
| Q0 | T0 Q0 |<br />
|--||--|--|\|----( )--|<br />
Temporizador limitado no tempo<br />
I0<br />
Q0<br />
t < T t > T<br />
T T<br />
t < T t > T<br />
15/20<br />
T
Sugestão <strong>de</strong> programa:<br />
| I0 T T0 |<br />
|--||--|---------( )--|<br />
| | T0 Q0 |<br />
| |--|\|----( )--|<br />
Temporizador por tempo t apos o <strong>de</strong>sligamento<br />
I0<br />
Q0<br />
Sugestão <strong>de</strong> programa:<br />
Oscilador astável<br />
Q0<br />
T T<br />
| F0 T0 F0 |<br />
|--||----|\|--|----------( )--|<br />
| I0 | I0 T T0 |<br />
|--||---------|--|\|--|--( )--|<br />
| | Q0 |<br />
| |--( )--|<br />
t1 t2<br />
16/20
Sugestão <strong>de</strong> programa<br />
| T1 t2 T2|<br />
|--|\|----( )--|<br />
| T2 t1 T1|<br />
|--||-----( )--|<br />
| T2 Q0 |<br />
|--||-----( )--|<br />
17/20
8. Contadores<br />
Por intermédio <strong>de</strong> contadores, é possível quantificar a<br />
ocorrência <strong>de</strong> eventos impulsionais no processo controlado.<br />
No contador mais simples possível, o valor da contagem é<br />
atribuído ao contador por uma função SET, a função RESET<br />
pára a contagem, e a i<strong>de</strong>ntificação é feita por uma bobina.<br />
A cada pulso na bobina a contagem é <strong>de</strong>crementada, até<br />
chegar a zero.<br />
Analise o programa abaixo:<br />
| I0 5 C0 |<br />
|--||----(S)--|<br />
| I1 C0 |<br />
|--||----( )--|<br />
| I2 C0 |<br />
|--||----(R)--|<br />
| C0 Q0 |<br />
|--||----( )--|<br />
18/20
I0<br />
I1<br />
I2<br />
Q0<br />
4 3 2 1 0 4 3 4 3<br />
19/20
9. Exemplo<br />
Um vaso misturador possui uma válvula <strong>de</strong> entrada, um<br />
motor misturador e uma única chave <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> nível<br />
(vi<strong>de</strong> figura). Ambas as válvulas são acionadas por<br />
solenói<strong>de</strong>s. A chave <strong>de</strong> nível fecha quando o vaso está cheio<br />
e permanece fechada até que o vaso esteja vazio.<br />
[Figura 12.38 - p. 559]<br />
Desenhe um diagrama <strong>de</strong> contatos para que seja feito o<br />
seguinte:<br />
a) Quando o botão início é pressionado, a válvula <strong>de</strong> entrada<br />
abre até que o vaso fique cheio.<br />
b) O misturador então é ligado por 5 minutos.<br />
c) A válvula <strong>de</strong> saída abre até que o vaso fique vazio.<br />
20/20