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