Você está na página 1de 41

 

AUTOMAÇÃO INDUSTRIAL E
ROBÓTICA
AULA 3

Profª Carla Eduarda Orlando de Moraes de Lara


CONVERSA INICIAL

Nesta etapa, dedicaremos nossos estudos aos controladores lógicos programáveis, sobre os

quais já havíamos comentado em conteúdo anterior. Entretanto, nesta etapa, analisaremos todos os

aspectos relacionados a eles, começando pelo histórico do seu desenvolvimento, além de falar sobre
sua arquitetura e classificação. Ainda, discutiremos a respeito do seu princípio de funcionamento, que

também está ligado aos métodos de processamento e aos modos de operação.

Ainda nesta etapa, abordaremos a norma IEC – 61131, a qual foi responsável pela padronização

do controlador lógico programável (CLP), abordando tanto aspectos de hardware quanto de software
destes dispositivos. Também analisaremos quais são as linguagens de programação para CLP

definidas por essa norma, entre as quais a linguagem ladder se destaca no chão de fábrica.

Finalizaremos com os blocos funcionais, que são úteis na programação do CLP, tanto como uma

linguagem quanto para dar suporte ao desenvolvimento de programas de instruções em outras

linguagens, como a linguagem ladder. E, falando em linguagem ladder, ela também será nosso tema
de estudo, pois conforme já havíamos comentado, ela é uma das mais utilizadas na programação de

CLP.

Cabe mencionar que os CLPs são dispositivos extremamente versáteis, e por mais que

discutamos a sua aplicação no ambiente industrial, eles possuem diversas aplicações em sistemas de
automação fora das plantas industriais também. Devido a sua versatilidade, podem ser empregados

na automação residencial, corporativa e predial.

TEMA 1 – INTRODUÇÃO AO CONTROLADOR LÓGICO


PROGRAMÁVEL
Este tópico será dedicado à compreensão do contexto histórico em que o CLP surgiu, além de

discutir sobre sua evolução e seus aspectos construtivos, ou seja, vamos analisar quais são os

elementos básicos que o formam e as possíveis classificações adotadas para esses dispositivos. É
comum ouvir referências ao CLP pela sigla PLC, isso porque seu nome em inglês é programmable
logic controller.

Mesmo assim, tanto empregando o termo CLP quanto o PLC, estamos nos referindo ao mesmo

dispositivo, que surgiu devido à necessidade de reprogramação dos processos automatizados de


maneira mais facilitada e sem a necessidade de reconexões físicas.

Quando falamos na criação do CLP, precisamos discutir o contexto em que ele surgiu, pois as
necessidades sentidas pela indústria automobilística da década de 1960 são consideradas o incentivo

para a criação destes. Essas indústrias estavam sofrendo com a falta de flexibilidade dos sistemas de

automação empregados em suas plantas industriais, principalmente a General Motors (GM). A


automação dos processos era realizada basicamente por painéis eletromecânicos, empregando os

comandos elétricos que estudamos em conteúdo anterior. Essas tecnologias eram limitadas do ponto

de vista de reprogramação de processos, pois a cada alteração na lógica de funcionamento, existia a


necessidade de reconexão física nos elementos.

Essa necessidade de reconexão de elementos tornava difícil e custosa a reprogramação dos


processos, pois era necessário parar o processo produtivo para a reprogramação. Como sabemos,
quando um processo produtivo é interrompido, isso afeta a sua produtividade e, consequentemente,

a lucratividade. Portanto, era fundamental buscar tecnologias que agregassem agilidade e

flexibilidade na reprogramação dos processos, em caso de mudanças no projeto ou no leiaute das

plantas industriais.

Seguindo essa ideia, no final da década de 1960, a GM especificou os requisitos necessários que
um controlador deveria ter para atender às necessidades da indústria, os quais seriam os requisitos

para o CLP, que, na época, ainda não existia. Segundo Moraes (2015), as especificações para o CLP

definidas pela GM podem ser resumidas em:

Facilidade de programação;

Facilidade de manutenção com conceito plug-in;


Alta confiabilidade;

Dimensões menores que as dos painéis eletromecânicos;


Envio de dados para processamento centralizado;
Preço competitivo;

Sinais de entrada de 115 Vca;


Sinais de saída de 115 Vca;

Expansão em módulos;
Mínimo de 4000 palavras na memória.

O primeiro dispositivo criado considerando essas especificações foi desenvolvido pela Gould
Modicon em 1969, empregando os processadores que foram desenvolvidos. Aos poucos, foram
surgindo outros modelos de CLP, acompanhando as inovações tecnológicas até chegar nos modelos

atuais que possuem diversas funções além das que foram especificadas inicialmente. Porém, vale
lembrar que esses dispositivos sempre tiveram uma boa aceitação no ambiente industrial, pois

trouxeram a solução para diversos problemas enfrentados, como longas paradas para manutenção,

difícil reprogramação, além da redução de espaço ocupado dentro da planta devido às suas
dimensões reduzidas. Isso fez com que os CLPs passassem a ser empregados tanto em outras

indústrias automobilísticas quanto em outros tipos de indústrias, sendo até hoje um dos dispositivos
mais empregados em sistemas de automação programável.

Agora, passaremos à discussão sobre a sua arquitetura, ou seja, sobre os elementos básicos que
formam esses dispositivos e, na sequência, falaremos sobre as possíveis classificações adotadas para

esses controladores.

1.1 ARQUITETURA DO CLP

Atualmente, existem diversos modelos e opções de CLP no mercado, porém, todos são formados

basicamente pelos mesmos elementos, que se relacionam entre si. À configuração dos elementos e

suas conexões chamamos de arquitetura do CLP. A figura 1 ilustra essa arquitetura, sendo possível
observar os elementos que o compõem e suas conexões. A seguir, vamos tratar com mais detalhes

sobre cada um dos blocos, os quais representam um elemento e suas funções.

Figura 1 – Relação da automação com variedade de produto e o volume de produção


Fonte: Lara, 2022, com base em Alves, 2017.

Basicamente, um CLP é formado por: módulo de entrada, CPU, memória, fonte de alimentação,

módulo de saída e unidade de programação. Começaremos a descrição desses elementos pelos

módulos de entrada e de saída.

O módulo de entrada é responsável pela interface entre os sinais oriundos do meio externo com

a unidade central de processamento (CPU) do controlador. Esses sinais normalmente são


provenientes de sensores como botoeiras, chaves ou qualquer outro tipo de sensor, além disso, são

responsáveis por fornecer informações sobre o processo. Um CLP pode contar com módulos de

entradas analógicas e digitais, sendo que os analógicos processam informações analógicas, e os

digitais são responsáveis pelos sinais digitais. Dependendo da configuração do CLP, o módulo de
entrada pode ser embarcado, ou seja, montado dentro da mesma estrutura que os demais

componentes, como no caso do CLP compacto, ou ainda, em módulo separado, como no caso do

CLP modular, que possui cada elemento em módulo. Ainda, segundo Moraes (2015), o número de

acionamentos que um módulo de entrada tem durante sua vida útil é de aproximadamente 10x106
por entrada.

O módulo de saída, assim como o de entrada, tem capacidade de lidar tanto com sinais

analógicos quanto com sinais digitais, porém, o número de saídas analógicas e digitais vai depender

do modelo do CLP.

Ainda, podemos descrever sua função como adequação do sinal de saída gerado pela CPU para
níveis adequados aos atuadores que estão conectados a esses módulos. São esses atuadores que
farão as modificações necessárias no processo, baseados em ações de controle definidas pela CPU e
transmitidas a eles pelo módulo de saída.

Agora que entendemos como funciona a obtenção de dados e o envio de comandos do CLP,
vamos tratar do processamento desses dados. O processamento de dados é realizado pela CPU,
bloco responsável por interpretar os sinais enviados pelo módulo de entrada, comparar com um
programa de instruções definido pelo usuário com a intenção de tomar decisões a respeito do

processo e, na sequência, enviar esses comandos ao módulo de saída. Basicamente, a CPU funciona
como o cérebro do CLP, sendo assim, é a parte mais importante, responsável pelo gerenciamento de
todos os demais dispositivos. Além disso, acumula as funções de tratamento de dados,

gerenciamento do sistema de memórias e interface com dispositivo de programação.

Já falamos sobre o programa de instruções definido pelo usuário, porém, não mencionamos

onde ele fica armazenado, sendo assim, apresentamos agora a memória do CLP. Todos os programas
de instruções definidos pelo usuário são armazenados na memória do dispositivo, além disso, a

memória também é responsável por armazenar os dados dos módulos de entrada e saída,

informações quanto ao tempo e ao funcionamento do CLP. As informações gravadas na memória são


definidas como palavras de memória, sendo que existem diferentes tipos de memórias em um CLP,

cada uma destinada a um tipo de dado.

Para que todos os outros elementos apresentados na figura 1 funcionem, é importante que seja

fornecido a esses a energia necessária, por isso, outro elemento fundamental do CLP é a fonte de

energia. Ela é responsável por energizar todos os elementos, além de manter o banco de baterias, o
qual será responsável por manter a memória energizada quando o CLP estiver desconectado da

alimentação. Dessa forma, podemos perceber que a fonte de alimentação é importante tanto durante

o uso do CLP quanto nos momentos em que este se encontra parado, pois ainda existe a

necessidade de manter alguns módulos energizados.

E, por fim, temos a unidade de programação, a qual tem como função realizar a entrada de

dados referentes aos programas de instruções definidos pelo usuário. Ainda, essa unidade pode

também atuar tanto no download quanto no upload de dados por parte do usuário. Por meio do

download de programas é possível inserir novos programas de instruções no CLP, enquanto que por
meio do upload é possível transferir para um computador programas que já estejam na memória do
CLP. Apresentados os elementos que formam a arquitetura desses dispositivos, vamos abordar suas

classificações.

1.1.1 CLASSIFICAÇÃO QUANTO À ESTRUTURA

Classificar um CLP quanto à sua estrutura considera como critério a disposição dos elementos
que formam a sua arquitetura, conforme vimos anteriormente. Basicamente, existem duas categorias,
sendo elas: CLP compacto e CLP modular.

O CLP compacto apresenta todos os componentes em uma única caixa, ou seja, tanto módulos

de entradas/saídas, CPU e os demais componentes estão dentro de uma única estrutura. Devido a

essa característica, os CLPs compactos não permitem a expansão, pois não é possível acrescentar
mais componentes no interior de sua estrutura. Normalmente, esses CLPs são do tamanho micro ou

nano, possuindo menor capacidade de processamento e memória. Porém, quando comparados aos

CLPs modulares, possuem tamanho e custos menores, sendo ideias para aplicações que não exigem
modelos mais robustos ou complexos.

Na figura 2 é apresentada a ilustração de um CLP compacto, sendo possível verificar que os


componentes se encontram todos dentro da mesma estrutura, sem módulos adicionais.

Figura 2 – Exemplo de CLP compacto


Créditos: Allahfoto/Shutterstock.

A outra configuração possível para o CLP é a modular, a qual possui sua estrutura dividida em
módulos, os quais são montados sobre uma base também denominada de rack. A figura 3 apresenta

um exemplo de CLP modular, em que é possível verificar a divisão em módulos posicionados sobre
uma base.

Figura 3 – Exemplo de CLP modular


Créditos: Aumm graphixphoto/Shutterstock.

Este modelo é interessante para aplicações que constantemente são alteradas, sendo possível

agregar módulos, tais como módulos de entradas e módulos de saída, módulos de memórias, entre
outros. Essa possibilidade de expansão torna esses dispositivos mais flexíveis, entretanto, eles

possuem custos mais elevados. Além disso, costumam ter maiores dimensões, porém, com maior
capacidade de processamento. A escolha do modelo vai depender da aplicação e de suas

necessidades.

1.1.2 CLASSIFICAÇÃO QUANTO AO TAMANHO

Outra possibilidade de classificação para os CLPs é quanto à quantidade de entradas e saídas

(E/S) que eles possuem, chamada de classificação quanto ao tamanho. Essa classificação considera

que quanto mais E/S o CLP tiver, maior ele será, portanto, os CLPs grandes possuem grandes
quantidades de E/S. A tabela 1 apresenta a classificação, na qual podemos verificar que os possíveis

tamanhos são: grande, médio, pequeno, micro e nano. Estes possuem a quantidade de E/S conforme

apresentado na tabela mencionada.

Tabela 1 – Classificação típica de CLPs quanto ao número de E/S


Tamanho do CLP Quantidade de E/S

CLP grande ≥1024

CLP médio < 1024

CLP pequeno < 256

CLP micro ≤ 32

CLP nano ≤ 16

Fonte: Lara, 2022, com base em Groover, 2011.

Assim como foi discutido para a classificação anterior, a especificação do tamanho do CLP deve

atender aos requisitos da aplicação na qual ele será inserido, isso porque quanto maior o CLP, maior

tende a ser seu custo. Sendo assim, é importante uma especificação correta para viabilizar a
implantação do sistema.

TEMA 2 – PRINCÍPIO DE FUNCIONAMENTO

Agora que conhecemos os elementos que formam a arquitetura do CLP e suas classificações,

vamos aprofundar nossos estudos a respeito do funcionamento desses dispositivos. Segundo Rosário
(2015), o funcionamento do CLP pode ser definido como a execução do programa elaborado pelo

fabricante, isso dentro da CPU. Entretanto, todos os fabricantes empregam o mesmo tipo de

programa para isso, sendo este uma rotina cíclica que é chamada de ciclo de varredura, sendo

conhecido também como ciclo de scan. A figura 4 ilustra o fluxograma do ciclo de varredura, por
meio do qual podemos observar o fluxo, o qual é composto pela etapa de inicialização e, na

sequência, o início da rotina cíclica formada por:

Leitura das entradas;

Execução do programa;

Atualização das saídas.

Essas etapas podem ser chamadas também de: varredura de entrada, varredura de programa e

varredura de saída, respectivamente. O ciclo de varredura começa quando ligamos o CLP e ocorre a

inicialização, processo que podemos descrever como a verificação do funcionamento da CPU, dos

sistemas de memória e da existência de um programa de instruções definido pelo usuário. Ainda,


durante a inicialização, todas as saídas do CLP são mantidas desativadas para evitar qualquer tipo de

problema (Zancan, 2011).

Após a inicialização, acontece a varredura das entradas, que consiste na leitura das entradas com

a intenção de armazenar os dados oriundos deste módulo, sendo que os estados das entradas são
armazenados na memória do CLP. Vale lembrar que podem estar conectados diversos tipos de
sensores ao módulo de entrada, e qualquer medição realizada por esses elementos será convertida

pelo módulo e ficará à disposição da CPU nessa etapa.

Na sequência, ocorre a varredura do programa, que pode ser considerada também como a

execução do programa de instruções definido pelo usuário. Nessa etapa, os valores armazenados
referentes às entradas são comparados com o programa de instruções, sendo realizados cálculos da

lógica de controle para determinar os valores das saídas, que correspondem às ações de controle

que serão enviadas aos atuadores conectados ao módulo de saída.

E, por fim, temos a varredura de saída, em que os resultados determinados pelo controlador são

enviados para os módulos de saída com o objetivo de realizar a atualização das saídas. É nessa etapa
que são enviadas as ações de controle para o sistema automatizado, as quais serão implementadas

pelos atuadores.

Figura 4 – Fluxograma do ciclo de varredura


Fonte: Lara, 2022, com base em Silveira; Santos, 2009.

Ainda, temos o tempo de varredura, que, segundo Groover (2011), pode ser definido como o
tempo de execução de todas as etapas de varredura que acabamos de descrever. Para cada CLP e

para cada programa de instruções, esse tempo pode ser diferente, pois vários fatores o influenciam,

como o processador utilizado no modelo do CLP, o número de entradas que são lidas, a

complexidade do programa de instruções, entre outros. Além disso, é importante pontuar que o ciclo
de varredura fica ocorrendo enquanto o CLP estiver ligado e no modo de operação destinado à

execução desse ciclo.

A seguir, vamos estudar os métodos de processamento que o CLP poderá executar, além de

abordar os modos de operação que, conforme já mencionamos, influenciam a execução do ciclo de

varredura.

2.1 MÉTODOS DE PROCESSAMENTO


Quando falamos em métodos de processamento, estamos nos referindo à maneira como o CLP

executará o processamento do programa de instruções. Além do ciclo de varredura que discutimos


anteriormente, existe a possibilidade de ocorrência de situações específicas que necessitam de um
método de processamento diferente. Para esses casos, o CPL poderá realizar o processamento de

uma forma diferente, sendo os possíveis métodos definidos por:

Processamento por interrupção;

Processamento comandado por tempo;


Processamento por evento.

Nas seguintes subseções, descrevemos o funcionamento de cada método de processamento

mencionado.

2.1.1 PROCESSAMENTO POR INTERRUPÇÃO

O processamento por interrupção tem como objetivo atender às situações que podem ocorrer

com o processo controlado pelo CLP e que não podem esperar que o ciclo de varredura seja

completado, ou seja, situações em que é necessário resolvê-las imediatamente. Neste caso, a CPU
deve parar o ciclo de varredura e executar um programa específico para tratar da situação adversa

que está ocorrendo. A esse programa chamamos de programa de interrupção.

Porém, a CPU não pode apenas parar um ciclo e executar outro, é necessário que ela guarde em

sua memória o ponto de parada do ciclo de varredura e volte exatamente para este ponto quando
finalizar o tratamento da interrupção. Sendo assim, quando o sistema termina de lidar com a

execução do programa de interrupção, ele volta e retoma o ciclo de varredura do ponto em que foi

interrompido.

2.1.2 PROCESSAMENTO COMANDADO POR TEMPO

No processamento comandado por tempo, o funcionamento é parecido com o processamento

por interrupção, entretanto, neste método, temos intervalos de tempos regulares envolvidos. Sendo

assim, podemos definir o processamento por tempo como um processo para tratar situações em que

as interrupções são definidas em intervalos de tempos regulares.


2.1.3 PROCESSAMENTO POR EVENTO

E, por fim, temos o processamento por evento, o qual está condicionado à ocorrência de eventos
específicos. Podemos citar como exemplos de eventos os problemas que podem ocorrer com o

sistema de bateria, ou ainda o retorno do funcionamento após uma queda de energia.

Além disso, existe um evento muito importante que pode ocorrer com o CLP, que é o estouro do

tempo de execução do ciclo de varredura por conta de alguma anomalia. Nestes casos, a CPU
também passará a realizar o processamento de maneira diferente.

2.2 MODOS DE OPERAÇÃO

Além dos métodos de processamento que acabamos de estudar, outro assunto muito

importante relacionado ao funcionamento do CLP é o modo de operação. Basicamente, o modo de

operação se refere ao tipo de funcionamento empregado pela CPU, sendo que cada modo de
operação está relacionado à necessidade da situação na qual o CLP se encontra.

Neste contexto, existem quatro modos de operação nos quais a CPU pode trabalhar:

Modo de programação;

Modo run;
Modo stop;

Modo reset.

Cada modo de operação, como já mencionamos, está associado a uma necessidade de operação

do CLP. Ainda, existem alguns modelos de CLP que indicam em qual modo de operação ele está

atuando. A seguir, vamos abordar esses modos de operação.

2.2.1 MODO DE PROGRAMAÇÃO

Neste modo é possível tanto fazer o download quanto o upload de programas de instruções

desenvolvidos pelo usuário em dispositivos de programação, porém, neste caso, é necessário que

esse dispositivo esteja de alguma maneira conectado ao CLP. É importante salientar que somente

com o CLP no modo de programação é possível fazer o envio de programas de instruções. Caso essa

operação seja realizada com o CLP em outro modo, este não receberá o programa enviado.
Após finalizado o envio do programa de instruções, é necessário alterar o modo do CLP para que

ele passe então a executar esse programa. Neste caso, o CLP deverá ser colocado no modo run.

2.3 MODO RUN

Quando o CLP se encontra no modo run, ocorre a execução do ciclo de varredura, sendo

executado o programa de instruções enviado. Sendo assim, todas as ações performadas pelo CLP,
quando este se encontra neste modo, dependem da lógica que foi implementada no programa de
instruções definido pelo usuário.

Outro ponto importante a respeito desse modo é que quando o CLP se encontra nele, existe a

possibilidade de comunicação com outros dispositivos, como outros CLPs, interfaces homem-
máquina (IHMs), entre outros. Porém, essa possibilidade de comunicação não esteve sempre

presente nos CLPs, sendo uma característica dos modelos mais recentes.

2.4 MODO STOP

No modo stop, o CLP se encontra literalmente parado e, consequentemente, todas as


atualizações de suas saídas também permanecem paradas. Isso cria um cenário ideal para realizar a

verificação das entradas do dispositivo, permitindo que sejam detectadas possíveis falhas ou erros

que possam estar atrapalhando o seu funcionamento.

Além disso, cabe mencionar que quando o CLP se encontra no modo stop, ele não recebe o
download de programas e não executa nenhum programa que esteja gravado em sua memória.

Portanto, enquanto ele estiver nesse modo, não ocorre a execução do ciclo de varredura.

2.5 MODO RESET

O modo reset é destinado à restauração das condições originais de fábrica do controlador. Ou

seja, quando um CLP se encontra nesse modo, todas as ações definidas pelos programas de

instruções que foram enviados a ele são resetadas. Neste caso, o CLP passa a assumir as condições
originais definidas pelo fabricante. Existem diferente tipos de reset, sendo possível apagar apenas

dados da operação, ou ainda apagar por completo, resetando as entradas e saídas, as memórias e os

registradores.
TEMA 3 – NORMA IEC – 61131 E LINGUAGENS DE PROGRAMAÇÃO

  Neste tópico, abordaremos a norma IEC – 61131, que foi responsável pela padronização dos
CLPs, e discutiremos sobre as linguagens de programação definidas por essa norma. Entretanto,

antes de entrarmos neste assunto propriamente, vamos relembrar alguns conceitos sobre linguagem
de programação e analisar as razões pelas quais é necessário programar um CLP.

Conforme discutimos nos tópicos anteriores, o CLP controla um processo baseado em um


programa de instruções, o qual é o meio de comunicação do usuário com a CPU do CLP, ou seja, por
meio do programa desenvolvido por ele será possível fornecer informações para o CLP executar o

controle do processo. Esse programa de instruções consiste em um código de programação, o qual


pode ser desenvolvido em diferentes linguagens, sendo essas de alto ou baixo nível.

Relembrando o conceito de linguagem de baixo nível, temos que são aquelas que mais se

assemelham à linguagem de máquina, cujo objetivo é realizar a comunicação com o computador

mais rapidamente, o que a torna mais eficaz e otimizada sob este ponto de vista. Por ela ser muito
próxima da linguagem de máquina, não existe necessidade de ocorrer uma tradução, como no caso

das linguagens de alto nível, porém, para programar esse tipo de linguagem é necessário

conhecimento sobre a lista de instruções e os registrados específicos de cada componente. Podemos


citar como exemplo de linguagem de baixo nível a linguagem Assembly.

Diferentemente das linguagens de baixo nível, as linguagens de alto nível se assemelham à


linguagem humana, cujo objetivo é facilitar a programação, fazendo com que o programador

expresse de maneira mais simples e concisa as instruções contidas no código. Nesses casos, ocorre

uma espécie de tradução da linguagem para o processador, não sendo necessário inserir informações

sobre as listas de instruções e registradores. Assim, podemos citar como exemplos desse tipo de
linguagem a C, C++, Python e Java.

Com a grande aceitação que o CLP teve pelos diferentes tipos de indústrias e áreas, muitos

fabricantes de equipamentos se interessaram por sua fabricação, surgindo, assim, diversas marcas e

modelos. Isso fez com que fossem gerados diversos problemas de incompatibilidade em relação à

programação desses dispositivos, uma vez que cada fabricante criava sua própria linguagem para a
programação do modelo que ele desenvolvia. Nesse cenário, surgiu a necessidade de uma

padronização quanto às características que o CLP deveria possuir.


Para realizar a padronização desses dispositivos, foi criado um grupo de trabalho dentro da

International Electrotechnical Comission (IEC) para avaliar o projeto completo de CLP, englobando
temas como hardware, instalação, testes, documentação e programação. Como deveriam ser
padronizados diferentes temas, foram estabelecidas diversas forças-tarefas com a ajuda de empresas

especialistas, visando atender a todos os temas. Como resultado, tivemos o desenvolvimento da

norma IEC 61131, cujo art. 3º é dedicado às linguagens padrões para CLP.

A norma mencionada estabelece cinco linguagens de programação para o CLP, sendo cada uma
com características diferentes que visam atender às necessidades dos controladores atuais. Essas
linguagens, por sua vez, estão divididas em duas categorias: as gráficas e as textuais.

Entre as linguagens gráficas estão o diagrama ladder, o diagrama de blocos e o sequenciamento


gráfico de funções. Já entre as linguagens textuais se encontram a lista de instruções e o texto

estruturado. A figura 5 ilustra uma representação das linguagens de programação de CLP


padronizadas pela norma IEC 61131-3.

Figura 5 – Linguagens de programação padrões para CLP

Fonte: Lara, 2022, com base Prudente, 2015.

A seguir, abordaremos quatro dessas linguagens, sendo que a mais utilizada delas será abordada

em um tópico separado.
3.1 LINGUAGENS DE PROGRAMAÇÃO PARA CLP

Conforme já discutimos, existem cinco linguagens padrões para a programação de CLP, e cada
fabricante deve adotar uma ou mais entre essas linguagens. Sendo assim, um fabricante não pode

desenvolver um CLP que não possa ser programado por meio de uma dessas cinco linguagens.

As subseções a seguir têm como intenção apresentar algumas características importantes sobre

essas linguagens, não abordando apenas o diagrama ladder, pois, devido ao fato desta linguagem
ser a mais utilizada, a abordaremos com mais detalhes em um tópico exclusivo para ela.

3.1.1 LISTA DE INSTRUÇÕES

Conforme discutimos anteriormente, a norma IEC 61131-3 definiu cinco linguagens de

programação, sendo duas textuais e três gráficas. Vamos, agora, abordar uma das linguagens

textuais, a qual é denominada lista de instruções. Além do nome em português, essa linguagem
também é chamada pela sigla IL, que é referente ao seu nome em inglês instruction list.

A lista de instruções se assemelha à linguagem Assembly, sendo que esta faz uso de
mnemônicas padronizadas pela norma IEC 61131-3 para o desenvolvimento do código pelo usuário.

É recomendado que essa linguagem seja empregada no desenvolvimento de programas de


instruções pequenos e com poucas quebras no fluxo de execução, comuns em implementações

desenvolvidas em CLPs de pequeno porte.

Além disso, como é uma linguagem de baixo nível, ela interage mais rapidamente com a CPU do
controlador, pelos motivos que já mencionamos anteriormente. Porém, a programação dos

controlados nesta linguagem é mais complexa e envolve o conhecimento ou a familiaridade com as

linguagens de programação de baixo nível. A lista de instruções emprega os mesmos conceitos da

linguagem Assembly, utilizando comandos como load e store, aplicando o conceito de acumulador
para o armazenamento de resultados intermediários. Sendo assim, empregando uma sintaxe própria

é possível definir quais valores devem ser atribuídos a determinadas variáveis, além de desenvolver

lógicas como AND e OR, empregar temporizadores e muitos outros tipos de comandos.

A tabela 2 apresenta exemplos de mnemônicas empregadas na escrita de códigos nessa


linguagem.

Tabela 2 – Exemplos de mnemônicas da linguagem lista de instruções – IEC 61131-3


Operador Modificador Descrição

LD N Carrega o operando para o acumulador

ST N Armazena o conteúdo do acumulador no local especificado pelo operando

AND N Função lógica AND

OR N Função lógica OR

Fonte: Lara, 2022.

Cada linha de instrução segue uma sequência de dados contendo as informações necessárias

para o CLP executar o comando. A figura 6 apresenta a estrutura de uma linha de instrução da
linguagem lista de instruções, sendo a linha formada por: rótulo, operador e modificador, operando e

comentário, sempre nessa ordem.

Figura 6 – Estrutura de uma linha de instrução

Linha de instrução

Rótulo operador e modificador operando comentário

Fonte: Lara, 2022.

Podemos verificar um exemplo de código desenvolvido nesta linguagem por meio da figura 7, o

qual consiste na implementação de uma lógica AND entre duas entradas do CLP (I.01 e I.02)

armazenando o resultando na saída Q.01. Também é possível observar os comentários que auxiliam
na compreensão do código. Por não ser uma linguagem muito intuitiva e de fácil visualização, é

comum que eventuais modificações no programa de instruções sejam complexas e trabalhosas, nesse

sentido, os comentários facilitam este processo.

Figura 7 – Exemplo de código em lista de instruções

Fonte: Lara, 2022.


3.1.2 TEXTO ESTRUTURADO

A segunda linguagem textual definida pela norma IEC 61131-3 é o texto estruturado, do inglês
structured text (ST). Esta linguagem é formada por escritas que são denominadas statements,

separadas por ponto e vírgula, sendo que essas escritas empregam funções e sub-rotinas
predefinidas para modificar variáveis e descrever o funcionamento do programa. Podemos dizer que

esse linguagem faz uso de estruturas de laços de repetição, contadores e lógicas de condição, como
if, then e for, para o desenvolvimento de programas de instrução.

Outra característica importante dessa linguagem é que ela é considerada a mais robusta entre as
linguagens de programação de CLP, isso porque todos os programas de instruções desenvolvidos

nas outras linguagens, quando são convertidos por linguagem de máquina por meio da compilação,
tornam-se texto estruturado. Sendo assim, quando se programa diretamente nesta linguagem, ela já

está pronta para ser entendida pela CPU.

  A figura 8 ilustra um exemplo de código desenvolvido na linguagem texto estruturado, por

meio do qual podemos observar a implementação de um laço de repetição do tipo faça tal ação
enquanto tal condição for verdadeira, realizando o incremento de uma variável a cada rodada.

Figura 8 – Exemplo de código em texto estruturado

Fonte: Lara, 2022.

3.1.3 DIAGRAMA DE BLOCOS


Agora, começaremos nossos estudos a respeito das linguagens gráficas definidas pela norma

para os CLPs. A primeira que estudaremos é o diagrama de blocos, sendo essa linguagem também
chamada de diagrama de blocos de funções, do inglês function block diagram (FBD).

Essa linguagem permite a inserção de blocos de operacionais contendo instruções de alto nível,
formando os programas de instruções. Cada bloco é formado por uma ou mais entradas, além de
uma ou mais saídas, sendo que as operações acontecem sobre as entradas e, consequentemente,

alteram as saídas. Esses blocos também existem e são empregados dentro das outras linguagens de
programação, tornando o código mais dinâmico e flexível.

Entres os principais blocos de funções empregados tanto nesta quanto em outras linguagens,

podemos citar os:

Blocos biestáveis;

Blocos contadores;
Blocos temporizadores.

Devido às características desta linguagem, ela se torna a preferida pelos profissionais da área da
eletrônica, os quais já possuem afinidade com blocos funcionais. Como os blocos empregados nessa

linguagem também são muito utilizados nas demais, vamos abordá-los com mais detalhes no
próximo tema, o qual será todo dedicado a eles.

3.1.4 SEQUENCIAMENTO GRÁFICO DE FUNÇÕES

Outra linguagem de programação gráfica que é muito utilizada é o sequenciamento gráfico de

funções, do inglês sequential function chat (SFC). Trata-se de uma linguagem baseada em GRAFCET,

que é um acrônimo do francês graphe fonctionnel de comande étapes transitions. O GRAFCET consiste

em uma metodologia desenvolvida devido à necessidade da criação de sequências gráficas para


processos sequenciais.

Os códigos desenvolvidos em linguagem SFC consistem em uma junção de elementos básicos

que formarão a lógica de comandos para o CLP. Esses elementos básicos são:

Etapa;

Ações associadas à etapa;


Transição;
Condição associada à transição.

A figura 9 apresenta esses elementos e a conexão entre eles. Cada etapa é representada por um

quadro. Cada quadro é enumerado de forma sequencial, sendo que um código pode ter quantas
etapas forem necessárias. A cada etapa está associada uma ou mais ações que devem
necessariamente ocorrer naquela etapa. O fluxo do programa segue a numeração das etapas, porém,
só avançará de uma etapa para a próxima caso a transição ocorra. A transição é representada por um

traço entre as etapas, e comumente existem condições assoadas a cada transição. Dessa forma, ao
ser acionado, um botão faz com que ocorra o final de uma contagem de tempo, por exemplo.
Portanto, cada condição está relacionada à condição lógica que fará com que o processo avance para

a próxima etapa.

Figura 9 – Conexão entre os elementos do GRAFCET

Fonte: Lara, 2022, com base em Prudente, 2015.

TEMA 4 – BLOCOS FUNCIONAIS

No tópico anterior, discutimos sobre a linguagem de blocos de funções, porém, também

mencionamos que aqueles blocos eram empregados dentro de outras linguagens de programação

de CLP. Por este motivo, vamos dedicar nossos estudos aos principais blocos empregados no

desenvolvimento de programas de instruções para esses controladores.


Existem diversos tipos de blocos de funções, como blocos de operações numéricas, blocos

comparadores e blocos com a função PID (proporcional, integrativo e derivativo). A figura 10


apresenta um exemplo de bloco de função que realiza uma comparação entre os sinais das entradas
I1, I2, I3, I4 e I5, produzindo uma saída O5, que pode ser representada pela expressão:

Figura 10 – Exemplo de bloco de função

Fonte: Lara, 2022, com base em Moraes, 2015.

Basicamente, cada bloco possui entradas e saídas que devem ser configuradas, enquanto a

relação entre esses elementos fica condicionada ao tipo do bloco, como no exemplo apresentado na

figura 10, no qual temos o uso de um bloco de função AND e um de função OR combinados a fim de
relacionar as entradas conforme a expressão.

A norma IEC 61131-3 define diversos tipos de blocos, os quais são definidos por duas partes,

sendo uma delas a especificação da estrutura e seu algoritmo, podendo este ser expresso em

qualquer uma das cinco linguagens definidas por tal norma (Moraes, 2015). Nas subseções a seguir,

vamos analisar alguns dos principais blocos de funções, verificando seu funcionamento e as relações

entre seus parâmetros de entrada e de saída.

4.1 BLOCOS BIESTÁVEIS

Os blocos biestáveis podem ser definidos como blocos responsáveis por memorizar estados

atribuídos a eles, sendo ligados ou desligados. Existem dois tipos de blocos biestáveis: o bloco set

(SR) e o bloco reset (RS).


No bloco SR, a função que predomina é a set, ou seja, o acionamento da saída. Portanto, caso

sejam verdadeiros os sinais de set e reset, ele acionará a saída, ou seja, a saída Q1 será setada como
verdadeira. Uma representação desse bloco é apresentada na figura 11, na qual podemos verificar os
parâmetros de entrada e de saída do bloco. Além disso, essa mesma figura apresenta a lógica

equivalente a esse bloco.

Figura 11 – Biestável do tipo SR e sua equivalência lógica

Fonte: Lara, 2022, com base em Moraes, 2015.

Já no caso do bloco RS, a função predominante é a reset, ou seja, a desativação da saída. Sendo
assim, caso sejam verdadeiros os sinais de set e reset, ele desligará a saída, ou seja, a saída Q1 será

resetada como falsa.

Uma representação desse bloco é apresentada na figura 12, na qual podemos verificar os

parâmetros de entrada e de saída do bloco. Além disso, essa mesma figura apresenta a lógica

equivalente a esse bloco.

Figura 12 – Biestável do tipo RS e sua equivalência lógica

Fonte: Lara, 2022, com base em Moraes, 2015.

4.2 TEMPORIZADORES
Outros blocos que são muito utilizados no desenvolvimento de lógicas de comandos para CLP

são os temporizadores. Isso porque é comum existir a necessidade de submeter determinadas ações
no decorrer do tempo, ou ainda gerar sinais de comando de duração preestabelecida (Prudente,
2015).

Para realizar implementações que empreguem intervalos de tempo, podemos empregar os


blocos temporizadores, os quais podem possuir diferentes configurações, mas, usualmente, são

empregados ou para retardar ações de acionamento ou então para retardar ações de desligamento.
A seguir, vamos explorar duas possíveis configurações para temporizadores, lembrando que cada
fabricante pode desenvolver blocos temporizadores com diferentes relações entre os parâmetros de

entrada e de saída, por isso é sempre interessante verificar o diagrama que relaciona esses
parâmetros, o qual é fornecido no manual do CLP.

4.2.1 TEMPORIZADOR DE ATRASO NA SUBIDA (TURN-ON DELAY)

Os temporizadores de atraso na subida, também chamados de temporizadores turn-on delay

(TON), têm como função atrasar ações de acionamento. Uma representação para esse bloco pode ser
observada por meio da figura 13, na qual é possível notar que esse bloco possui dois parâmetros de

entrada, entrada (IN) e tempo de entrada (PT), e dois parâmetros de saída, saída (Q) e tempo

decorrido (ET).

O funcionamento desse bloco consiste em atrasar o acionamento da saída em um intervalo de

tempo predefinido por meio da energização da sua entrada, ou seja, ao acionar IN, ele começa a

contar o tempo definido em PT e, ao final da contagem, aciona a saída Q. Além disso, ele atualiza a

contagem em tempo real na saída ET.

Figura 13 – Representação para um TON


Fonte: Lara, 2022.

Ainda, é importante mencionar que a entrada IN deverá permanecer energizada por um


intervalo de tempo maior ou igual ao tempo definido em PT para que seja acionada a saída. Caso a
entrada seja desativada antes do final da contagem, a saída não será acionada. Para compararmos a
relação entre a entrada IN e a saída Q, podemos analisar a figura 14, a qual ilustra o comportamento

de Q em função de IN.

Figura 14 – Relação entre a entrada e saída do TON

Fonte: Lara, 2022, com base em Zancan, 2011.

Considerando   como o intervalo de tempo definido em PT e   como o tempo decorrido

apresentado em ET, a saída Q só será acionada caso  permanecendo energizada enquanto IN

for mantida energizada.

4.2.2 TEMPORIZADOR DE ATRASO NA DESCIDA (TURN-OFF DELAY)

Outro tipo de temporizador comum na programação de CLPs é o temporizador de atraso na

subida, o qual também é conhecido como temporizador turn-off delay (TOF). Além disso, esse bloco

tem como função atrasar uma ação de desligamento, e uma representação para ele pode ser vista na

figura 15. Analisando essa figura, podemos perceber que esse bloco também possui dois parâmetros

de entrada, entrada IN e tempo de entrada PT, e dois parâmetros de saída, saída Q e tempo
decorrido PT, assim como no bloco TON. Entretanto, somente os parâmetros são iguais, enquanto o

princípio de funcionamento é completamente oposto.

Figura 15 – Representação para um TOF

Fonte: Lara, 2022.

Podemos descrever o seu funcionamento como um atraso, com duração definida em PT, no

desligamento da saída Q a partir do momento em que ocorre o desligamento da entrada IN. Sendo
assim, a partir do momento em que a entrada IN é desenergizada, inicia-se a contagem de tempo em

ET, e quando esse valor atinge o intervalo de tempo definido em PT, ocorre o desligamento da saída.
A figura 16 apresenta a relação entre a entrada IN e a saída Q, considerando sua energização e

desenergização em função do intervalo de tempo  definido em PT.

Analisando a figura 16, podemos perceber que quando a entrada IN é energizada,

automaticamente a saída Q também é, porém, quando a entrada IN é desativada, o sistema começa a

contagem de tempo e somente após   segundo realizará a desernegização da saída Q. Por esse

motivo, o temporizador do tipo TOF é considerado um temporizador de atraso na descida, pois a

contagem de tempo só começa quando há desativação da entrada IN.

Figura 16 – Relação entre a entrada e a saída do TOF


Fonte: Lara, 2022, com base em Zancan, 2011.

 4.3 CONTADORES

Assim como os temporizadores atuam na contagem de tempo, existem blocos destinados à

contagem de eventos, neste caso, chamados de blocos contadores. Esses blocos são úteis, pois

contabilizam eventos responsáveis por acionar suas entradas e, ao final da contagem de um valor
predefinido, acionam a suas saídas, sendo importantes no desenvolvimento de programas de

instruções complexos.

Podemos classificar os blocos contadores conforme o seu princípio de contagem, sendo esses

contadores crescentes ou decrescentes. A seguir, vamos analisar os parâmetros e o funcionamento

desses blocos.

4.3.1 CONTADOR CRESCENTE

O contador crescente, também chamado de counter up (CTU), realiza a contagem de pulsos

recebidos em sua entrada a partir do zero indo até o valor definido como máximo da contagem. A

figura 17 ilustra uma representação para esse bloco, sendo possível verificar seus parâmetros de

entrada: contador (IN), reset (R) e valor máximo (PV), enquanto os parâmetros de saída são saída (Q)
e valor atual (CV).

Figura 17 – Representação para um CTU


Fonte: Lara, 2022.

Seu funcionamento consiste em contar cada pulso recebido na entrada IN, começando em zero

e indo até o valor definido na entrada PV, enquanto isso, a saída CV atualizará o valor atual da
contagem e quando atingir o valor de PV, a saída será acionada. Neste caso, se a entrada IN

continuar recebendo pulsos, a contagem continuará, mas não afetará a saída, pois ela já se encontra

acionada. Caso seja necessário desativar a saída Q novamente e reiniciar a contagem, é preciso
acionar a entrada de reset (R). Quando é aplicado um pulso em R, o contador é zerado novamente e

a saída Q é desativada, sendo possível reiniciar o processo de contagem.

4.3.2 CONTADOR DECRESCENTE

Quando falamos em contador decrescente, temos que este também é conhecido pelo termo em

inglês counter down (CTD). Além disso, o processo de contagem de maneira incremental, ou seja,

considerando um valor definido previamente, fará a contagem de maneira regressiva. A figura 18


apresenta esse bloco, por meio da qual podemos observar suas entradas: contator (IN), load (LD) e

valor máximo (PV), além de suas saídas: saída (Q) e valor atual (PV).

Figura 18 – Representação para um CTD


Fonte: Lara, 2022.

Se comparamos os parâmetros do bloco CTD com os do bloco CTU, perceberemos que existe
uma diferença no parâmetro de entrada load para o CTD e no de reset para o CTU. Além disso, o

princípio de contagem também é diferente, sendo que o funcionamento do bloco CTD consiste em

começar a contagem com o valor atual já no valor máximo e a saída Q acionada e, durante o
processo de contagem regressivo, ir mostrando o resultado em CV. Ao final da contagem, o valor de

CV deverá ser zero, sendo assim, a saída Q será desativada.

Por mais que a entrada IN receba mais pulsos, o valor atual da contagem não é alterado,

somente sendo possível reiniciar a contagem após fornecer pulso na entrada load (LD). Caso seja

acionada a entrada LD, o valor atual é recarregado para o valor máximo e o processo de contagem
pode ser reiniciado.

TEMA 5 – PROGRAMAÇÃO EM LADDER

Neste último tópico, nos dedicaremos à compreensão dos conceitos da linguagem mais utilizada

na programação de CLPs, a linguagem ladder, também chamada de diagrama ladder. Podemos

atribuir a popularização desta linguagem ao fato desta se assemelhar a comandos elétricos, os quais

estudamos em conteúdo anterior. Vimos que ao longo da evolução dos sistemas automatizados,
ocorreu uma substituição dos painéis a reles pelo CLP, neste contexto, a linguagem ladder, que é

baseada na lógica de contatos, assim como os comandos elétricos, passou a ser a mais utilizada no

chão de fábrica.
Além da semelhança com comandos elétricos, essa linguagem é muito intuitiva e pode ser

utilizada mesmo por pessoas que não tenham muito conhecimento de linguagens de programação.
Mas antes de entendermos o funcionamento e o desenvolvimento dos códigos nessa linguagem,
vamos entender quais são os elementos que formam as lógicas de comandos nela. A figura 19

apresenta os elementos básicos do diagrama ladder e sua relação com os elementos de comandos
elétricos.

Figura 19 – Simbologia elementos ladder e comparação com comandos elétricos

Fonte: Lara, 2022.


Analisando a figura 19, podemos perceber que existe uma equivalência entre os elementos do

ladder e os de comandos elétricos, sendo basicamente formados por contatos normalmente


fechados (NF), normalmente abertos (NA) e as bobinas. Usualmente, associamos as entradas do CLP
com os contatos e as saídas com as bobinas, porém, pode ocorrer a associação de saídas aos

contatos também.

Os diagramas ladder são formados por duas linhas verticais, conhecidas como linhas de

alimentação, unidas por linhas horizontais que representam causalidades, além de serem
equivalentes às linhas de código de instruções. Cada linha de código é formada por um elemento
controlado (bobina) e um conjunto de condições para o controle do elemento, formados por uma

associação de contatos (Moraes, 2015). A figura 20 apresenta um exemplo de programa de


instruções desenvolvido em ladder.

Figura 20 – Exemplo de código em linguagem ladder

Fonte: Lara, 2022.


Analisando a figura 20, podemos verificar a presença das barras de alimentação, além das linhas

horizontais que correspondem às causalidades comentadas anteriormente. É importante lembrar que


os contatos NA e NF podem ser associados em série e/ou paralelo, enquanto as bobinas só podem
ser associadas em paralelo dentro de uma mesma linha, não sendo possível associá-las em série.

Além da associação de contatos, podemos utilizar nas linhas de comando os blocos funcionais
que vimos no tópico anterior, desenvolvendo, assim, lógicas mais complexas. A seguir, abordaremos

as possibilidades de associação de contatos NA e NF formando as lógicas combinacionais como AND


e OR.

5.1 ASSOCIAÇÃO DE CONTATOS

Conforme já comentamos, podemos associar os contatos NA e NF de forma a implementar

condições lógicas como AND, OR, NAND, NOR, entre outras. Existem blocos com essas funções

também, porém, aqui mostraremos como elas podem ser implementadas empregando a associação
de contatos.

A primeira associação que veremos é a de contatos do tipo NA, que podem ser associados em
série, conforme a figura 21 (a), ou então em paralelo, como na figura 21 (b). Quando associamos

contatos NA em série, temos a implementação de uma lógica AND, enquanto a associação de

contatos NA em paralelo forma uma lógica OU.

Figura 21 – Associação de contatos NA

Fonte: Lara, 2022.


Outra possibilidade é associar contatos do tipo NF, sendo apresentada uma associação desses

em série na figura 22 (a) e uma associação deles em paralelo na figura 22 (b). quando ocorre a
associação de contatos NF em série, temos a formação de uma lógica NOR, ao passo que quando
ocorre a associação de contatos NF em paralelo, temos a implementação de uma lógica NAND.

Figura 22 – Associação de contatos NF

Fonte: Lara, 2022.

5.2 EXEMPLOS DE PROGRAMAS EM LADDER

Diversos sistemas podem ser controlados por meio do CLP, porém, independentemente do

processo ou sistema, sempre será necessário o desenvolvimento de um programa de instruções em


alguma das cinco linguagens que estamos estudando. Sendo assim, a partir de agora vamos analisar

alguns exemplos de programas de instruções implementados na linguagem ladder.

O primeiro exemplo consiste na partida de um motor elétrico com reversão no sentido de


rotação, enquanto o segundo consiste no acionamento de dois motores elétricos condicionados a

ações de temporização por meio de blocos temporizadores.

5.2.1 EXEMPLO 1

Este exemplo consiste no acionamento de um motor elétrico com reversão no sentido de

rotação. Para tal, foram empregadas quatro botoeiras do tipo pulsadoras, B1, D1, B2 e D2, destinadas
à partida e ao desligamento do motor em ambos os sentidos de rotação. Caso seja acionada a

botoeira B1, o motor deverá ser ligado no sentido horário; caso acionada a botoeira B2, o motor

deverá ligar no sentido anti-horário. Além disso, o botão D0 desliga ambos os sentidos. As botoeiras
estão conectadas às entradas do CLP conforme a figura 23. O sentido de rotação horário é acionado

pelo contator K1, o qual se encontra conectado à saída Q0 do CLP. Em contrapartida, o sentido de
rotação anti-horário é comandado pelo contator K2, que está conectado à saída Q1 do CLP.

Figura 23 – Esquema de ligação do exemplo 1

Fonte: Lara, 2022.

Portanto, para ligar o motor no sentido horário, deverá ser acionado o botão B1, o qual enviará

sua mudança de estado à entrada I1 do CLP, que, de acordo com a lógica implementada no código
ladder desenvolvido, deverá acionar a saída Q0. Caso seja acionado o botão D0, a entrada I2 receberá

a mudança em seu estado e, conforme o programa de instruções, o CLP deve desligar a saída Q0.

O mesmo processo deve ocorrer quando B2 for acionada, a única diferença é que a entrada que
receberá a mudança de estado será a I3, e a saída que deverá ser acionada é a Q1. O CLP não sabe
quais elementos estão conectados a suas entradas ou saídas, ele apenas identifica variações de sinais
obtidas em suas entradas e saídas, portanto, no código ladder devem estar contidos os endereços

das entradas e saídas do CLP nas quais estão sendo conectados os elementos. A figura 24 apresenta
o código em linguagem ladder desenvolvido para o controle do processo descrito.

Figura 24 – Diagrama ladder desenvolvido para o exemplo 1

Fonte: Lara, 2022.

Analisando o diagrama apresentado na figura 24, podemos perceber que quando a entrada I1

for acionada, o contato se fechará permitindo a passagem de corrente elétrica que chegará até a

bobina Q0, acionando esta saída. Ao acionar Q0, o contato associado a ela que está paralelo ao
contato da entrada I1 se fechará e permanecerá assim até que a saída Q0 seja desligada. Este é o

conceito de contato de selo, que faz com que seja possível acionar e manter saídas ligadas apenas
com um pulso na entrada que a aciona. O contato referente à entrada I2 é fechado, portanto, quando
essa entrada for acionada, este contato abrirá, desligando Q0. Ainda, existe um contato NA da saída

Q1 que corresponde à lógica de intertravamento que desenvolvemos para que o motor não seja
acionado no sentido anti-horário caso já esteja ligado no sentido horário, sendo necessário que
primeiro ele seja desligado para depois inverter o sentido de rotação.

Analisando a segunda linha do código, temos o acionamento da saída Q1, a qual é responsável
por ligar o motor no sentido anti-horário. Quando a entrada I3 é acionada, o contato referente a ela

se fecha, acionando, assim, a saída Q1. Quando a entrada I2 é acionada, seu contato abre e desliga
Q1. Ainda, temos a mesma situação do contato de selo implementado com o contato de Q1 em

paralelo com a entrada I3, além da condição de intertravamento com o sentido de rotação horário

por meio do contato NF de Q0.

Basicamente, precisamos nos atentar ao fato de que a execução do código sempre acontece da

esquerda para a direita e de cima para baixo, e que ao acionar um dispositivo conectado a uma
entrada, esta será acionada também.

Já com a saída, sempre que ela for acionada, automaticamente acionará os dispositivos que
estiverem conectados a ela.

5.2.2 EXEMPLO 2

Nosso segundo exemplo consiste no acionamento de dois motores elétricos que são acionados

seguindo as seguintes condições:

Quando o botão B1 é acionado, o motor M1 deverá ser ligado;


Após dez segundos após o motor M1 ser acionado, deverá ser acionado o motor M2;

Após 15 segundos de funcionamento dos dois motores simultaneamente, os dois motores

devem ser desligados automaticamente;

D1 desliga qualquer um dos motores em caso de emergência.

Antes de analisarmos a lógica desenvolvida para controlar o acionamento dos motores conforme
as condições apresentadas, precisamos entender como estão conectados os elementos às entradas e
às saídas do CLP.

A figura 25 apresenta os dispositivos empregados no sistema e suas conexões ao CLP. Podemos

observar que o botão B1 está conectado à entrada I1 e o D1 à entrada I2, ainda, temos conectados às
saídas Q0 e Q2 os contatores K1 e K2, respectivamente. Além disso, o contator K1 liga o motor M1,
enquanto o contator K2 liga o motor M2. Para acionar entradas e saídas, será o mesmo processo
executado no exemplo anterior, ou seja, quando acionamos um botão conectado a uma determinada

entrada, esta será acionada; quando ligamos uma saída do CLP, o elemento conectado a ela será
acionado.

Figura 25 – Esquema de ligação do exemplo 2

Fonte: Lara, 2022.


O diagrama desenvolvido em linguagem ladder para o exemplo 2 é apresentado na figura 26.

Por meio dele, podemos perceber que quando a entrada I2 é acionada, ela liga a saída Q0, que, por
sua vez, aciona o temporizador T1. Na sequência, esse temporizador conta dez segundos, que é o
tempo no qual o motor M1 deve permanecer ligado sozinho. Após os dez segundos, é acionada a

saída Q1, ligando o motor M2.

Figura 26 – Diagrama ladder desenvolvido para o exemplo 2

Fonte: Lara, 2022.

Na terceira linha do código, um contato da saída Q1 aciona o segundo temporizador, T2,

iniciando a contagem dos 15 segundos, que é o tempo no qual os dois motores devem permanecer
ligados juntos. Ao final da contagem de tempo, um contato NF da saída de T2 desliga ambos os

motores por meio da desenergização das saídas Q0 e Q1. Ainda, o botão D1 conectado à entrada I2

pode desligar a qualquer momento os motores.


FINALIZANDO

Finalizamos esta etapa, a qual foi dedicada ao estudo dos controladores lógicos programáveis

que surgiram devido a uma necessidade da indústria (principalmente a automobilística) de flexibilizar


os processos automatizados que até então eram predominantemente implementados por meios dos
painéis a reles. Vimos, também, que esses dispositivos possuem a possibilidade de reprogramação de
forma facilitada por meio de desenvolvimento de novos programas de instruções.

Durante esta etapa, também discutimos como ocorreu a criação, o desenvolvimento, a evolução
e a padronização, que foi implementada por meio da norma IEC 61131. Essa padronização foi

necessária devido às incompatibilidades entre os equipamentos, uma vez que cada fabricante possui
uma maneira diferente de desenvolver um CLP. Ainda, pudemos discutir a respeito da arquitetura

desses controladores, abordando seus elementos básicos e suas classificações.

Tivemos um tópico dedicado ao princípio de funcionamento, o qual consiste em realizar uma

operação cíclica chamada de ciclo de varredura. Ainda, vimos que existem casos em que a CPU do
controlador precisa processar informações de maneira diferente desse ciclo, portanto, o

processamento pode assumir diferentes formas. Vimos, também, que o controlador possui modos de

operação, sendo eles: modo de programação, modo run, modo stop e modo reset. Cada um desses
modos está relacionado a uma situação na qual o CLP precisa atuar. A padronização do CLP pela

norma IEC 61131 foi além das suas características construtivas, definindo também as linguagens de

programação, sendo assim, essa norma definiu linguagens textuais e gráficas, conforme vimos.

Entre essas linguagens, destaca-se a linguagem ladder, que faz uso de contatos NA e NF, além

de bobinas e blocos funcionais para o desenvolvimento de programas de instruções que serão

empregados pelo CLP para o controle de processos nas plantas industriais.

A versatilidade do CLP permite que ele seja utilizado tanto na automação industrial quando em

outras áreas. Além disso, ele pode se comunicar com outros dispositivos empregados na automação.

Sendo assim, em estudos posteriores, veremos também como é feita essa comunicação.

REFERÊNCIAS

ALVES, J. L. L. Instrumentação, controle e automação de processos. 2. ed. Rio de Janeiro: LTC.

2017.
GROOVER, M. Automação industrial e sistemas de manufatura. 3. ed. São Paulo: Pearson

Prentice Hall, 2011.

MORAES, C. C. de.; CASTRUCCI, P. Engenharia de automação industrial. Rio de Janeiro: LTC,


2015.

PRUDENTE, F. Automação industrial PLC: teoria e aplicações – curso básico. Rio de Janeiro: LTC,
2015.

SILVEIRA, P. R. da.; SANTOS, W. E. Automação e controle discreto. 9. ed. São Paulo: Érica, 2009.

Zancan, M. D. Controladores programáveis. 3. ed. Santa Maria: Universidade Federal De Santa

Maria, Colégio Técnico Industrial de Santa Maria, 2011.

Você também pode gostar