Programação de um CLP: Modos de programação


No seguimento do curso de Automação, neste artigo apresento como perceber os conceitos básicos de programação de um CLP. No decorrer das próximas edições apresentaremos a forma de programar um controlador lógico programável

Autores: Filipe Pereira - Eng. Elétrotécnico / Automação Klean Energie 4 Life, Ltda Energias Renováveis - Portugal


As linguagens de programação são empregadas nos CLPs desde que estes surgiram em 1960. Estas permitem ao usuário inserir programas de controle utilizando sintaxes pré-estabelecidas.

Previamente ao estudo dos três tipos de linguagem mais utilizados na programação de CLPs, convém rever alguns conceitos essenciais.

O programa que vai definir o automatismo é constituído por uma série de instruções e funções onde são operados os bits de memória. Estas instruções e funções, serão introduzidas na memória do CLP, através de um periférico destinado a esse fim e que poderá ser uma console de programação ou software específico para PC.

Veja na figura 1 um exemplar de CLP programado por console.



Os CLPs têm, basicamente, dois modos de operação: o modo RUN e o modo PROGRAM ou STOP. Estes são selecionados através de um comutador que se pode encontrar no frontal do CLP, na console de programação ou através do software de programação.

Antes de se introduzir o programa através da console, deve converter-se o esquema de contatos numa lista de instruções entendidas pelo CLP, ou fazer a programação direta em esquema de contatos utilizando o computador com software que o permita.

O programa é introduzido nos endereços de memória do CLP, contendo cada um uma instrução, os parâmetros de definição e todos os parâmetros requeridos por essa instrução.

Os endereços de memória do programa (linhas do programa) começam em zero (0) e estão limitados pela capacidade da memória do CLP.

Cada fabricante possui modos diferentes de proceder à programação de um CLP.

As áreas de memória têm designações diversas, as instruções e funções têm mnemônicas e códigos diferentes e a sequência de teclas na console destinadas à programação difere de marca para marca.

No entanto, conhecendo um modelo, facilmente nos integramos no modo de funcionamento de um outro, pela simples consulta do respectivo manual, uma vez que a lógica de programação dos sistemas existentes no mercado não difere no seu essencial.

Vejamos o que faz o CLP em cada modo de funcionamento:

• O modo RUN é o modo normal de funcionamento do CLP, porque neste modo, a CPU executa o programa contido na memória;

• Para se proceder à introdução do pro- grama, é necessário que o CLP esteja no modo PROGRAM;

• O processador inicia a resolução do programa de controle após ter lido o estado de todas as entradas e ter guardado toda a informação em memória.

Com a importante resolução do programa de controle (da primeira para a última rung), a continuidade lógica de cada rung vai sendo averiguada e as saídas serão atualizadas no final do SCAN. Observe o exemplo da figura 2.


Analisemos o diagrama de estados anterior:

• O contato normalmente aberto 000.00 ativa a primeira saída se estiver no estado On, fazendo com que a saída 001.00 também seja On, na rung a seguir, o contato associado à bobina de saída 001.00 ao passar a On ativa a saída 001.01, e assim sucessivamente;

• Apesar das saídas estarem em diferentes rungs e assumirem o estado durante o SCAN, todas elas passarão ao seu estado On em simultâneo no módulo de saída, porque o CLP só atualiza o estado das saídas no final de execução do programa;

• Se os contatos estivessem conforme indicado na figura 3, as saídas já não seriam acionadas todas simultaneamente, ou seja, se a condição de saída de uma rung afetar a rung que a antecede, a CPU não volta atrás para resolvê-la.



É importante assimilar deste exemplo que, para o mesmo ciclo de SCAN, uma saída só terá efeito noutra rung se esta for colocada antes dessa rung.

Outro conceito importante é o de entradas normalmente fechadas que, apesar de ser um conceito bastante simples, costuma suscitar algumas dúvidas.

Suponha que se desejasse implementar em programação o seguinte circuito (figura 4).

O normal seria copiar o esquema de contatos para Ladder, obtendo-se o resultado do circuito seguinte, mostrado na figura 5. Tal situação não é correta, uma vez que, quando o CLP lê o estado da entrada BP1, é guardado no endereço de memória, associado a esta entrada, o valor lógico da entrada, ou seja, um (1).

Quando o CLP executa o ciclo de SCAN, é examinada a continuidade lógica da rung mas, como o contato associado ao endereço de memória está negado, a continuidade lógica não vai existir, porque o um (1) que reflete o estado da entrada BP1 negado é zero (0).



A solução para o circuito é a colocação no programa de um contato normalmente aberto, para não negar o endereço de memória associado ao estado da entrada.

Senão vejamos, na figura 6.

Resumindo: Independentemente da forma como os circuitos estão ligados, na programação pode alterar-se o seu estado, uma vez que o estado de uma entrada depende não só da forma como está ligada, mas também de como é programada.

Os três tipos de linguagens mais utilizados nos dias de hoje são:
• Ladder;
• Lista de instruções;
• GRAFCET.

As linguagens de programação em Ladder e em lista de instruções implementam as operações de forma quase similar, diferindo apenas na forma como são representadas e no modo como são inseridas no CLP.

O GRAFCET implementa as instruções de controle baseando-se em passos e ações representados de forma gráfica.



Ladder lógico

A linguagem de programação Ladder é composta por uma série de instruções simbólicas usadas para desenvolver programas de controle das máquinas e processos. Veja a figura 7.

A evolução do Ladder original tornou esta linguagem mais capaz, pois novas funções foram adicionadas às tradicionais operações básicas de relés de temporização e de contagem.

Novas funções, denominadas de blocos de função, aumentaram o poder da linguagem Ladder básica.

O principal objetivo dos diagramas Ladder é controlar saídas e executar operações funcionais baseando-se em condições de entrada. Os diagramas em Ladder usam rungs onde se representam as funções de controle. Uma rung consiste numa série de condições de entrada, representadas por contatos, e uma instrução de saída no final, representada por uma bobina.



Uma rung é “verdadeira” quando existe continuidade lógica, ou seja, quando a energia flui, através da rung, da esquerda para a direita (figura 8 e 9).

A matriz da rung representa as possíveis localizações para colocação dos contatos de entrada ou instruções.

Quando a continuidade lógica existe, a condição da rung é verdadeira, havendo um controle da saída. Por outro lado, se a continuidade lógica não se estabelece, a condição da rung é falsa.





Quando um diagrama Ladder contém um bloco de função, uma ou mais instruções podem ser utilizadas para representar as condições de entrada que o habilitam. A matriz da rung em Ladder determina o número máximo de contatos que podem ser empregados para ativar uma saída, divergindo o tamanho da matriz de CLP para CLP. Na figura 10, a matriz citada.

Para blocos de função a matriz utiliza, em regra, menos contatos, figura 11.

Existem algumas normas para a colocação dos contatos de entrada. Uma delas, que se verifica em quase todos os CLPs, evita que a continuidade lógica que tem de haver numa rung flua ao contrário (sneak paths).






Estes sneak paths ocorrem quando a continuidade lógica flui numa rung através de um contato que provoca, só ele, a continuidade de uma rung.

Veja-se o exemplo dado na figura 12.

A saída Z deverá estar ativa quando os contatos A, B e C ou A, D e E ou F e E estiverem ativos. No entanto, se os contatos F, D, B e C estiverem ativos existe continuidade lógica e Z está ligado.

Esta situação deverá ser evitada, uma vez que a saída fica activa com uma combinação de contactos que a não deveriam activar (figura 13).

Em resumo:

• As instruções em Ladder representam o estado On/Off de entradas e saídas de campo;
• O Ladder usa dois tipos de símbolos: contatos e bobinas, em inglês coil;
• Os contatos representam as condições de entrada e as bobinas representam a saída de uma rung;
• Em um programa, cada contato ou bobina tem um endereço que permite identificar o que está a ser avaliado e o que está a ser controlado;
• O endereço está referenciado à tabela de entradas, de saídas ou a um registro interno do CLP.


Contato normalmente aberto (NA)

Este contato procura uma condição de ON em um determinado endereço. Durante a execução do contato normalmente aberto (NO), o processador examina o endereço referenciado no contato por uma condição de ON (figura 14).

Contato normalmente fechado (NF)

Este contato procura uma condição de OFF em um determinado endereço. Durante a execução do contato normalmente fechado (NC), o processador examina o endereço referenciado no contato por uma condição de OFF (figura 15).





Bobina normalmente aberta

Uma bobina de saída controla uma saída real ou um bit interno do CLP. Durante a sua execução, o processador avalia todas as condições de entrada numa rung (figura 16).

Bobina normalmente fechada

Esta função funciona de forma oposta à anterior, ou seja, quando não existe continuidade lógica nos contatos, a posição de memória afecta à saída vai ser zero (0) (figura 17).






Circuitos lógicos

Para implementar circuitos lógicos, dispõem-se ainda das seguintes instruções:
• AND - realiza um E lógico com o bit especificado;
• OR - realiza um OU lógico com o bit especificado; 
• NOT - nega o estado do bit ao qual está associado.
Analisemos cada uma das funções, no caso do nosso CLP em estudo neste curso, que é o CJ1 da OMRON.

Antes de iniciarmos a programação propriamente dita, convém deixar algumas dicas de utilização do software Cx-Programmer da OMRON que permite a programação em LADDER neste CLP.


Síntese sobre a utilização do software de programação (CX-Programmer)

Como em qualquer outra aplicação do Windows, para executar o CX-Programmer é utilizado o menu Iniciar.

Para acessar a área de trabalho é necessário criar um novo projeto ou abrir um já criado. Analisemos então cada uma das funções lógicas:

Função AND

A função AND, em Ladder lógico, é implementada com dois ou mais contatos de entrada em série. Veja-se o exemplo: pretende-se implementar um circuito lógico que apenas ativa a saída 01.00 do CLP, se as entradas 0.00 e 0.01 e 0.02 estiverem ativas (On). Observe a figura 18.


Função NOT


A função NOT em Ladder lógico representa-se com um contato normalmente fechado (figura 19). Voltando ao exemplo anterior: pretende-se que a saída 01.00 fique ativa, se as entradas 0.00 e 0.02 estiverem a Off e a entrada 0.01 estiver a On (considera-se que uma entrada está a On quando o led, que a sinaliza, se encontra ligado).

Função OR

A função OR, em Ladder lógico, é implementada com dois ou mais contatos de entrada em paralelo (figura 20). Observe-se o seguinte exemplo: Pretende-se implementar um circuito lógico que active a saída 01.03, quando a entrada 0.01 estiver a Off ou quando as entradas 0.02 ou 0.03 estiverem a On.

Instrução SET


A instrução SET permite que, quando a condição lógica, que antecede a instrução SET, vá a On, o bit associado à função comute para o seu estado lógico On, e assim permaneça mesmo que a condição lógica, que antecede a instrução de SET, comute para Off (figura 21).




Instrução RSET

Situação semelhante acontece com a instrução RSET, pois, quando a condição lógica que antecede esta instrução vai a On, o bit manipulado é, em simultâneo, levado a Off permanecendo nesse estado (figura 22).

Nota: Caso haja simultaneidade da função de SET e RSET, é a condição de RESET a predominante.


Função KEEP

A instrução KEEP permite definir um bit de memória como biestável, ou seja, o estado do relé é definido por duas condições lógicas: SET ou RESET (figura 23).

Os conceitos básicos da programação e suas funções já estão concluídas. Para as próximas edições trataremos a forma de programar um controlador lógico programável. Até a próxima!






* Matéria originalmente publicada na revista Mecatrônica Atual; Ano: 8; N° 44; Mar / Abr - 2010


                                                Fonte - www.mecatronicaatual.com.br

Postagens mais visitadas deste blog

The Mystery of USB Chargers

VRS-565 - Localizador de Defeitos em Circuitos Eletrônicos.