Mas afinal de contas o que é esse tal de Ladder? Neste post irei explicar o que é a linguagem Ladder, suas aplicações e alguns exemplos de aplicação. Boa leitura 🤓!
Ladder
O Ladder é uma linguagem utilizada para programar CLPs (Controlador Lógico Programável), capaz de realizar o controle de sistemas críticos e/ou industriais, substituindo os painéis com circuitos controlados a relés, que eram grandes, caros e de difícil manutenção, além de menos seguros também.
A principal vantagem de representar as lógicas de controle por meio de diagramas Ladder é que permite à engenheiros e técnicos da área desenvolver "códigos" sem conhecimento prévio de outras linguagens de programação, principalmente as textuais, como o Python ou o C, devido à similaridade com a lógica de relés e diagramas elétricos. Um dos principais problemas apresentados pela linguagem é a incompatibilidade entre CLPs, mesmo entre modelos diferentes da mesma família. Embora a norma IEC 61131-3 tenha diminuído as diferenças mais marcantes entre os diferente CLPs, transferir um código de um controlador para o outro ainda pode ser um trabalho custoso, pois cada fabricante possui uma interface de programação, com endereços e códigos próprios para cada modelo de CLP. Devido ao fato de todos os processos do diagrama serem realizados pelo processador (CPU) do CLP de forma sequencial, é preciso de um uma estrutura de loop que executa um certa quantidade de vezes por segundo, fazendo com que os resultados na saída sejam quase imediatos. Para isso, o CLP utiliza um Ciclo de Varredura que consiste nos seguintes passos:
Leitura das entradas e atualização da memória, que podem ser tantos as entradas externas como sensores e chaves, como entradas internas como valores de bobinas e temporizadores.
Execução do programa, onde todos os passos da programação são realizados, da esquerda para a direita e de cima para baixo. Nenhum valor obtido nesse processo é utilizado nos cálculos, portanto se alguma bobina obter um novo valor e houver alguma chave associada a ela, esse valor não é alterado até a próxima execução do ciclo de varredura.
Escrita da memória e atualização das saídas, onde os novos valores obtidos no passo de Execução do programa são atualizados na memória e as saídas externas são alteradas.
![](https://static.wixstatic.com/media/d58151_b75e5b9b35d140ab8647d70958a03979~mv2.png/v1/fill/w_98,h_133,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/d58151_b75e5b9b35d140ab8647d70958a03979~mv2.png)
Estrutura do programa Ladder
No Ladder existem três símbolos padrão que representam, basicamente, toda lógica para o controle de sistemas. Estes símbolos são:
Os contatos (NA ou NF), que podem ler o valor de uma variável booleana, por exemplo de uma entrada, ser vinculado a um elemento de saída, memória, ou outros;
As bobinas (simples, set ou reset), que podem escrever o valor de uma variável booleana ou ativar uma memória;
os blocos funcionais que permitem realizar funções avançadas, por exemplo temporizadores, contadores, etc.
Os elementos estão associados à variáveis internas que podem tanto ser virtuais como entradas e saídas físicas de um CLP.
Os Contatos
Existem dois tipos de contatos:
O contato normalmente aberto (NA) (em inglês, NO normally open):
![](https://static.wixstatic.com/media/d58151_550f2429ef9f42158f7f6fbc8f13913c~mv2.png/v1/fill/w_71,h_52,al_c,q_85,blur_3,enc_auto/d58151_550f2429ef9f42158f7f6fbc8f13913c~mv2.png)
Este contato está fechado quando a variável booleana associada (no nosso caso X) é verdadeira, caso contrário, ele está aberto.
O contato normalmente fechado (NF) (em inglês, NC normally closed):
![](https://static.wixstatic.com/media/d58151_b5d6e34b389c438981b8b46caf071748~mv2.png/v1/fill/w_59,h_51,al_c,q_85,blur_3,enc_auto/d58151_b5d6e34b389c438981b8b46caf071748~mv2.png)
Este contato está aberto quando a variável booleana associada é verdadeira, caso contrário, ele está fechado.
As bobinas
As bobinas quando são saídas, estão vinculadas a relés, contatores ou "de estado sólido" (óptico, PWM, DC, etc...). Esta bobina está ativa quando a variável booleana associada é verdadeira, caso contrário, ela está desligada. Assim como os contatos (entradas), existem três tipos de bobinas (saídas) principais:
A bobina simples, energizada quando a variável booleana associada é verdadeira.
![](https://static.wixstatic.com/media/d58151_7d04fa65216a41748545c320491276fd~mv2.png/v1/fill/w_63,h_47,al_c,q_85,blur_3,enc_auto/d58151_7d04fa65216a41748545c320491276fd~mv2.png)
Esta bobina está ligada enquanto a associada a ela é verdadeira, caso contrário, ela está desligada.
A bobina set, ou auto-retentiva, necessita de um único pulso para se manter ligada.
![](https://static.wixstatic.com/media/d58151_bf13fb50f2bc4dd1b577cccb738eff67~mv2.png/v1/fill/w_55,h_48,al_c,q_85,blur_3,enc_auto/d58151_bf13fb50f2bc4dd1b577cccb738eff67~mv2.png)
Este tipo de bobina armazena um estado, verdadeiro, se a bobina for SET.
A bobina reset, bobina usada para desativar a bobina set. Necessita de um único pulso para desligar a bobina.
![](https://static.wixstatic.com/media/d58151_2252d7ca2c9c4e17bacaf6925062d436~mv2.png/v1/fill/w_61,h_50,al_c,q_85,blur_3,enc_auto/d58151_2252d7ca2c9c4e17bacaf6925062d436~mv2.png)
Este tipo de bobina armazena um estado, falso, se a bobina for RESET.
As bobinas set e reset facilitam a implementação de sistemas com memória.
Exemplo de programação em Ladder
Vamos a alguns exemplos tradicionais de aplicação em Ladder. O primeiro é o acionamento de uma lâmpada utilizando um botão. Enquanto o botão (que vamos chamar de LIGA) estiver acionado, a lâmpada (que vamos chamar de LAMP) vai permanecer ligada; quando o botão for desativado, a lâmpada desliga.
Para a solução deste problema o contato de entrada indicado é o NA, e a bobina indicada é a bobina simples. Veja o exemplo:
![](https://static.wixstatic.com/media/d58151_273868439190457e94a6e130a54471fa~mv2.png/v1/fill/w_52,h_7,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/d58151_273868439190457e94a6e130a54471fa~mv2.png)
Como funciona? O botão LIGA está vinculado a um botão físico ligado ao CLP. Quando este botão é acionado, ele envia sinal ao CLP que faz com que o contato NA se torne NF. Quando isso ocorre, um sinal chega até a bobina LAMP, ligando-a. A bobina LAMP está vinculada a uma saída física do CLP que aciona uma lâmpada ligada a esta saída.
Agora vamos melhorar a situação anterior. Queremos agora que um botão (LIGA) seja usado para ligar a lâmpada (LAMP) e um outro botão (DESLIGA) seja utilizado para desligar. Somente um pulso deve ser dado aos botões para que eles executem as suas tarefas.
Para a solução deste problema, temos duas opções. A primeira é utilizar a bobina simples com selo, e a segunda é utilizar a bobina set-reset. Vamos a primeira solução:
![](https://static.wixstatic.com/media/d58151_c36972d556514d979de86175739b86f8~mv2.png/v1/fill/w_52,h_11,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/d58151_c36972d556514d979de86175739b86f8~mv2.png)
Como funciona? Quando o botão LIGA é acionado, ele manda sinal para a bobina LAMP que liga. Como a bobina LAMP foi ligada, todos os contato com o mesmo nome da bobina mudam de estado (o que é NA passa a ser NF e o que é NF passar a ser NA). Existe um contato de LAMP em paralelo com o contato LIGA, então o contato de LAMP faz com que a linha se mantenha ligada. Para desligar esta linha, é só acionar o botão vinculado ao contato DESLIGA que faz com que ele se abra, desligando a lâmpada.
Agora vamos a segunda solução, usando a bobina set-reset:
![](https://static.wixstatic.com/media/d58151_4a4be4d6d76f41abb71263217bb60088~mv2.png/v1/fill/w_51,h_15,al_c,q_85,usm_0.66_1.00_0.01,blur_2,enc_auto/d58151_4a4be4d6d76f41abb71263217bb60088~mv2.png)
Como funciona? A primeira coisa importante é, para utilizar a bobina set-reset nós precisamos de duas linhas distintas uma para o set (ligar a saída) e outra para o reset (desligar a saída). A segunda coisa importante é que o nome dado a bobina de set tem que ser o mesmo dado a bobina de reset. Então quando dermos um pulso no contato LIGA, ele envia um sinal para a bobina set da LAMP, fazendo com que ela ligue e se mantenha ligada. Para desligar, é só dar um pulso no contato DESLIGA, que ele irá enviar um sinal para a bobina reset da LAMP fazendo com que ela desligue.
O vídeo a seguir mostra estes três programas funcionando.
Espero que tenha gostado, e nos próximos posts irei falar sobre alguns blocos funcionais como por exemplo os temporizadores e o contadores numéricos. Até a próxima 😎!
Fontes:
W. Bolton. Programmable Logic Controllers. [S.l.: s.n.] ISBN: 9780750681124, 2006.
PESSÔA, Marcelo; SPÍNOLA, Mauro. Introdução à automação: para cursos de engenharia e gestão. [S.l: s.n.], 2014