Você está na página 1de 8

DESENVOLVIMENTO DE UM CLP DE BAIXO CUSTO

ALAN PICININ¹, GUILHERME DE SANTANA WEIZENMANN².

1. Laboratório de Automação e Redes, Instituto Federal de Santa Catarina


Chapecó, Santa Catarina, Brasil
E-mails: alan_picinin@hotmail.com

2. Laboratório de Automação e Redes, Instituto Federal de Santa Catarina


Chapecó, Santa Catarina, Brasil
E-mails: guilherme.weizenmann@ifsc.edu.br

Abstract With the great need for automation, industries are increasingly using Programmable Logic Controllers (PLCs), which
are robust and, expensive equipment, making it unviable for small applications. In order to solve this problem, this project had the
objective of creating a software capable of translating the Ladder language for Instruction List in order to be applied to a low cost
PLC previously developed. This system was programmed in C # aiming to have an intuitive interface and easy programming.
Along with the software, hardware has been developed that has similarity to a PLC and works through a pre-developed Instruction
List language interpreter. The system was tested in pneumatic bench with industrial sensors and actuators, besides being evaluated
by students, and was successful in its development.

Keywords PLC, Translator, Ladder, Instruction List.

Resumo Com a grande necessidade de automação, as indústrias estão cada vez mais utilizando Controladores Lógicos
Programáveis (CLP), os quais são equipamentos robustos e de elevado custo o que os torna inviáveis para pequenas aplicações.
Buscando solucionar este problema, este projeto teve como objetivo criação de um software capaz de efetuar a tradução da
linguagem Ladder para Instruction List afim ser aplicado a um CLP de baixo custo desenvolvido previamente. Este sistema foi
programado em C# visando possuir uma interface intuitiva e de fácil programação. Juntamente com o software foi desenvolvido
um hardware que possui similaridade com um CLP e funciona através de um interpretador da linguagem Instruction List também
desenvolvido previamente. O sistema foi testado em bancada pneumática com sensores e atuadores industriais, além de ser avaliado
por alunos, e obteve sucesso em seu desenvolvimento.

Palavras-chave CLP, Tradutor, Ladder, Instruction List.

1 Introdução objetivo o desenvolvimento de um CLP de pequeno


porte utilizando um micro controlador popular de
baixo custo, baseado na norma IEC-61131[3]. Este
Com a grande necessidade de automação nas
projeto possibilitou o usuário programar um CLP de
indústrias atuais, juntamente com a necessidade de
baixo custo através da linguagem Instruction List,
processos inteligentes e de fácil mudança em suas
funcionando através de um interpretador embarcado,
linhas de produção, as indústrias estão cada vez mais o qual efetua a leitura da sequência de operações
utilizando Controladores Lógicos Programáveis salvas em sua EEPROM e atua da forma desejada pelo
(CLPs). usuário. Este projeto demonstrou-se bastante viável,
Os CLPs são computadores projetados para proporcionando uma continuidade, com o
trabalhar em ambiente industrial e podem ser vistos desenvolvimento da interface de programação e o
como equipamentos de processamento que possuem hardware para sua aplicação em projetos futuros.
uma interface amigável, com o objetivo de executar
Projetos de pesquisa já buscaram implementar a
tarefas de diversos tipos de complexidade [1]. Porém
linguagem Ladder em sistemas embarcados [4, 5 e 6],
um dos grandes problemas destes dispositivos é o sendo possível também a criação de um tradutor da
preço, pois tratando-se de máquinas muito robustas e linguagem Ladder para Instruction list,[7]. A
com foco principal em industrias, acabam possuindo
programação em Instruction List possui grande
um valor muito elevado. Assim, uma automação de
complexidade para a maioria dos usuários, pois
pequeno porte que necessite da utilização de um CLP
necessita que o programador saiba álgebra booleana,
pode tornar-se inviável, pois o custo da aquisição
e tenha noções de programação em assembly [1]. O
deste equipamento pode vir a ocupar uma grande desenvolvimento de um tradutor da linguagem Ladder
porcentagem do orçamento do projeto, com isso vindo para Instruction List, juntamente com a criação de um
a inviabilizar pequenos projetos que visam o baixo
arquivo para a gravação na EEPROM do controlador,
custo, como domótica, hidroponia, irrigações entre
permitiria ao usuário uma maior facilidade para a
outros. programação do CLP já desenvolvido. Este tradutor
Buscando solucionar este problema foi analisado poderia ser desenvolvido em linguagem C# por se
um projeto anterior já desenvolvido no campus IFSC- tratar de uma linguagem de programação orientada a
Chapecó por Ferreira et al.[2], o qual possuía como objetos e visual dirigida por eventos[8].

1
Baseado nas possiblidades previamente descritas,
este projeto teve como objetivo principal.
O desenvolvimento de um software de
programação, com uma interface intuitiva e de fácil
programação para o usuário, que deverá traduzir da
linguagem Ladder para a Instruction List e gerar um Figura 2. Interface de programação
arquivo no formato .eep (EEPROM Data File) já Ao selecionar uma instrução de entrada pode-se
convertido na linguagem que será interpretada pelo escolher as opções de lógica direta e lógica inversa das
hardware. entradas, saídas e memórias além de utilizar timer on
E para verificar o funcionamento do sistema foi e contador crescente (Figura 3).
desenvolvido objetivos secundários como:
Commented [GW2]: Se quiser economizar espaço, pode
juntar em uma figura “a” e “b” entradas e saídas, é apenas
1) Testar a equivalência dos códigos
uma sujestão
traduzidos por meio do método de tabela
verdade.
2) Testar o funcionamento da placa
programada com esta interface em
bancada pneumática.
3) Verificar com alunos de graduação do
IFSC a usabilidade do software.

Figura 3. Interface de entradas


2 Materiais e Métodos Commented [GW3]: Cuidar numeração, algumas figuras
Ao selecionar a instrução de saída pode-se optar estão no automático, outras não
2.1 Criação do software para a tradução em acionar uma saída física ou uma memória no
O projeto utilizou o software Visual Studio formato direto ou inverso (Figura 4).
2017(Microsoft, Redmond, Wa, EUA) na linguagem
C# pra seu desenvolvimento.
A software desenvolvida conta com cinco Rung
(conjunto de linhas) para programação, possuindo
duas linhas e seis colunas, sendo a sexta coluna a
atuação. Cada Rung possui indicador de como ficará a
tradução para Instruction list, além de botão de edição
e limpar. O sistema conta também com botão de
gerar .eep o qual criará um arquivo que permite a
gravação da logica no controlador, e um campo
direcionado para o código já no formato Intel hex file
format, como pode ser visto na Figura 1.

Commented [GW1]: Indicar na figura as regiões

Figura 4. Interface de saídas

2.2 Funcionamento do software para a tradução


de Ladder para Instruction List
A tradução da linguagem Ladder para Instruction
List é baseada no método sugerido por Hu et al. [9],
Figura 5

Figura 1. Interface desenvolvida

Além de permitir selecionar a posição e os


componentes desejados, juntamente com a lógica em
serie e paralelo para a programação, como pode ser
visto na Figura 2.

Figura 5. Método serie paralelo (Fonte: adaptada de Hu et al. [9])

2
Para esta tradução se aplicada no software foi OR( 12
divididas em várias etapas, sendo elas: OR(N 13
1) Substituição das ligações em serie da linguagem ) 39 Operador fecha parênteses
Ladder para o operador AND da linguagem TON 40 Temporizador
Instruction List, e das ligações em paralelo para CTU 41 Contador
operado OR (Figura 6-A). Fonte: Adaptada de Ferreira et al.[2].
2) Inclusão dos operadores LD no início do
programa, e logo após a utilização do operador OR 2) Identificação do operando de acordo com a
(figura 6-B). Tabela 2
3) Organização da etapa da atuação, deslocando o Tabela 2. Lista de instrução para cada operando
item Y1 para o final e utilizando o operador ST
(Figura 6-C). Operando Código
4) Remoção dos parênteses desnecessários e ENTRADA DIGITAL 0
organizar a tradução (Figura 6-D). SAÍDA DIGITAL 1
Memórias tipo bit 2
Commented [GW4]: Verifique se ao gerar o pdf esta
Memórias tipo byte 3
imagem não vai ficar borrada
Memórias tipo Word 4
Memórias tipo Double
5
Word
Memórias tipo Long 6
Constante 7
Fonte: Ferreira et al.[2].

3) Identificação dos valores ou endereços


utilizados pelo usuário.
4) Organização dos dados obtidos nas tabelas 1
e 2 dentro da tabela 3.
Figura 6. Exemplo das etapas da tradução Tabela 3. Estrutura de endereçamento
OPERADOR OPERANDO INSTRUCTION
A próxima fase consiste da tradução da TIPO VALOR / ENDEREÇO LIST
0 0 0 0 0 1 LD I 1
linguagem Instruction list para a linguagem de
6 2 0 0 0 5 AND M 5
máquina. Seguindo as etapas, de acordo com o 2 1 0 0 0 1 ST Q 1
trabalho de Ferreira et al.: Fonte: Adaptada de Ferreira et al.[2].
1) Identificação do operador de acordo com a
tabela da International Electrotechnical 5) Criação de um cabeçalho de informações
Commission (Tabela 1). para o micro controlador, constando: A
Tabela 1. Lista de instruções de cada operador
quantidade de tarefas; número da tarefa; tipo
da tarefa; prioridade da tarefa; tipo da
Operadores Código Descrição/ significado interrupção ou parte mais significativa do
Carrega o operando para o tempo de interrupção; endereço ou parte Commented [GW5]: Escrever como mais significativo e
LD 0
acumulador menos significativa do tempo de interrupção; menos significativo
Carrega operando negado endereço da memória do início da tarefa e
LDN 1
para o acumulador
endereço da memória do fim da tarefa; como
Armazena o conteúdo do
ST 2 acumulador no local
pode ser vista na Tabela 4.
especificado pelo operando
Armazena acumulador
STN 3
negado
Seta o operando para 1 caso
S 4 o resultado atual seja
Boolean 1
Seta o operando para 0 caso
R 5 o resultado atual seja
Boolean 1
AND 6
ANDN 7
Função booleana AND
AND( 8
AND(N 9
OR 10
Função booleana OR
ORN 11

3
Tabela 4. Organização do Cabeçalho

Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6


Interrupção / Endereço / Endereço do Endereço do
Número Tipo Prioridade
Tempo MSB Tempo LSB início fim

Tipos de tarefas Prioridades Tipos de Interrupção


1 Cíclica 1 Maior Prioridade 1 Entrada digital
2 Temporizada 4 Menor prioridade 3 Memória bit
3 Interrupção

Para a criação do a arquivo a ser gravado na


EEPROM foi necessário identificar o funcionamento
do formato intel hex file format [10]. Suas
informações são gravadas no seguinte formato:

:llaaaatt[dd...]cc

Sendo:
 : Indicador de início da gravação
 ll Quantidade de bytes a serem gravados Figura 7. DIN FUNDO 110 (fonte: www.patola.com.br).
 aaaa Endereço da memória onde deve iniciar Para a montagem e organização do layout, foi
a gravação optado pela elaboração de três placas com funções
 tt O tipo de gravação a ser feita especificas sendo elas:
 dd Os dados a serem gravados na memoria  Entradas e saídas
 cc O valor do checksum dos dados  Potência
 Lógica
Os dados de cada conjunto de operador e
operando são organizados para gerar uma nova A placa de entradas e saídas (Figura 8) tem o
gravação da EEPROM. objetivo de receber as conexões dos sensores em 24V
Ao finalizar a organização, o sistema cria um converte-los para 5V através de opto-acopladores e
arquivo no formato .eep e grava os dados no mesmo transmitir o sinal para o controlador. Ela deverá
para posterior upload no microcontrolador. também fazer os acionamentos das saídas de acordo
com o sinal do controlador, utilizando relés que
2.3 Hardware para teste possuem isolamento de 250V e até 7 Amperes. Esta
placa também recebe a ligação de uma fonte de 24V
Para testar o software foi desenvolvido um para a alimentação do sistema. Commented [GW6]: Tentar ajustar as figuras para evitar
equipamento com similaridades com um CLP, grandes espações em branco
possuindo entradas de 24V isoladas, saídas a relé, e
alimentação de 24V.
Neste equipamento optou-se pela utilização do
microcontrolador ATmega328P (Microchip
Technology Inc., Chandler, Arizona, USA), o qual
possui 14 entradas e saídas, 32 KB de memória flash,
e 1KB de memória EEPROM.
Para acomodação da placa desenvolvida foi
utilizado a caixa Din Fundo 110 (Patola, São Paulo,
SP, Brasil), A qual possui 3 layers para placas, 32
locais para posicionamento de bornes, com medidas
de 90mm de Altura, 106 de Largura e 72 de
comprimento (Figura 7)

Figura 8. Placada de entradas e saídas

4
A placa de potência conta com dois regulares de As três placas estão conectadas entre si por um
tensão lineares, sendo eles 7812 e 7805, para 12 e 5V cabo flat de 20 vias onde passa a alimentação CC de
respectivamente (Figura 9). A linha de 12V é utilizada 24, 12 e 5V, além dos sinais das entradas e saídas do
para os acionamentos dos relés e como um estágio CLP (Figura 11).
primário de redução para linha de 5V, que por sua vez
é utilizada para a alimentação dos demais
componentes do sistema.

Figura 9. Placa de potência

A placa lógica (Figura 10) conta com um


ATmega328P com um cristal de 16Mhz, um conector
ICSP para a gravação do sistema e da EEPROM, e um Figura 11. Placas finalizadas (acima) e montadas na caixa
conector para a comunicação Serial com o (abaixo).
computador, caso necessário.
2.4 Teste da Tradução
Para verificar a tradução foram criadas diversas
programações em Ladder e traduzidas para
Instruction List. Após, uma análise de ambos os
códigos foi realizada por meio do método de tabela
verdade. Assim foi possível verificar se ambos os
códigos geravam os mesmos resultados.

2.5 Testes na bancada de Pneumática


Buscando analisar o funcionamento do sistema
juntamente com o hardware foram aplicados cinco
testes em bancada de pneumática, sendo eles:
1) Teste de auto retenção para verificar o
funcionamento básico do sistema (Figura 12).

Figura 12. Teste de auto retenção.

2) Teste de multitarefas para verificar o


funcionamento da utilização do cabeçalho e a
organização do endereçamento dos dados na memória
(Figura 13).

Figura 10. Placa lógica

5
iniciado e parado ao pressionar dois botões distintos
(Figura 15).

Figura 15. Teste com contadores

5) Teste para verificar o funcionamento em


Figura 13. Teste com multitarefas. paralelo de um timer e um contador. Neste teste as
3) Teste com multitarefas incluindo Timer para seguintes atividades foram verificadas (Figura 16).
averiguar o funcionamento correto do sistema com a  Acionamento de um pistão após a
aplicação de temporizadores. Foram utilizados três contagem de 3 pressionamentos do
timers onde os acionamentos ocorrem em sequencias botão.
com atraso entre eles, simulando uma máquina que  Acionamento de um seguindo pistão
efetua a dobra de uma chapa (Figura 14). após o pressionamento por 3 segundos
de um outro botão
 Reinicio do sistema após acionar um
terceiro botão.

Figura 16. Teste com timer e contador

2.6 Teste com alunos


O teste com os alunos foi realizado por meio
aplicação de um programa em ladder criado
previamente. Este programa utiliza todos os recursos
do sistema, como memorias, entradas, saída,
contadores e temporizadores. Como pode ser visto na
(Figura 17).

Figura 14. Teste com Timer

4) Teste utilizando contadores com reset, onde o


objetivo é contar 5 avanços de um pistão utilizando
sensores. Após ocorrerem os cinco acionamentos, um
segundo pistão deve ser acionado, sendo o sistema

6
Commented [GW7]: Gráficos são figuras. Remova o
13 título de cima, deixar apenas na legenda
14 12 12
12
10
8
6
4 2 2
1
2 0 0 0
0
Facilidade de Facilidade de Facilidade
Uso aprendizado para
programação

Figura 17. Teste aplicado aos alunos Ruim Regular Bom

Foi solicitado aos alunos que efetuassem esta Figura 18. Resultados
programação com o tempo cronometrado no software Analisando o resultado é possível verificar que o
desenvolvido. Ao termino da programação os alunos sistema obteve uma boa avaliação dos alunos,
responderam um questionário com as seguintes podendo ser considerado um sistema de fácil
perguntas: programação, usabilidade e aprendizado. Para este
1) Facilidade de uso: sistema os alunos conseguiram desenvolver o
( )Ruim ( )Regular ( )Bom programa proposto em um tempo médio de 3 minutos
e 13 segundos, com desvio padrão de 44 segundos, Commented [GW8]: Desvio padrão? Alguém demorou
2) Facilidade de aprendizado: tempo máximo de 4 minutos. mais?
( )Ruim ( )Regular ( )Bom

3) Velocidade para a programação: 4 Discussão


( )Ruim ( )Regular ( )Bom
Podemos considerar que o sistema de tradução
4) Dicas e Sugestões para projetos futuros: trouxe grande vantagem ao projeto anterior,
possibilitando com que mais usuários tenham a
capacidade de utiliza-lo, pois a linguagem Ladder é
3 Resultados uma linguagem que proporciona maior facilidade de
aprendizagem e programação.
3.1 Tradução O método de Hu et al.[9], comprovou ser bastante
O método de tradução obteve resultados eficiente, pois tornou possível traduzir todos os
satisfatórios, onde todos os testes aplicados geraram códigos de forma correta e ao analisar a tradução foi
uma tradução que correspondia exatamente como o comprovado por meio de todos os testes aplicados que
código deveria ser executado, pois ao aplicar os as conversões seguiam a mesma sequência e o mesmo
códigos em tabelas verdade foi possível verificar que resultado.
os resultados eram os mesmo nas diferentes A criação deste sistema foi vantajosa, pois não foi
linguagens. necessário o grande gasto de tempo para o
desenvolvimento de um compilador para o
3.2 Testes na bancada microcontrolador e tornou possível a utilização e
Com os testes aplicados na bancada pneumática aprimoramento de projetos anteriores.
foi possível comprovar se os sistemas de tradução e Caso fosse desejado criar um interpretador para
interpretação estavam funcionando de acordo com a Ladder isso não seria possível, pois segundo Yan et
programação desenvolvida. Foi verificado que todas al.[6] a linguagem Ladder não pode ser executada
as programações testadas funcionaram de acordo com diretamente em um CLP por se tratar de uma
o desejado, e o sistema eletrônico comportou-se como linguagem gráfica. Já a linguagem Instruction List é
esperado, sendo possível utilizar sensores e atuadores uma linguagem que intermedia entre Ladder e as
industriais sem causar nenhuma interferência ao instruções utilizadas pelo processador.
sistema. Os testes aplicados na bancada pneumática
demonstraram que o sistema foi capaz de utilizar
3.3 Questionário plicado aos alunos sensores industriais com sinal de 24V e acionar as
válvulas de mesma tensão sem ocasionar erros.
O questionário aplicado em 14 alunos e os
Devido a isso, o sistema pode vir a ser utilizado como
resultados obtidos estão expressos na (Figura 18).
um CLP de baixo custo para muitos projetos.

7
A utilização do micro controlador ATmega328P [4] S. A. D. ALMEIDA, “Protótipo de ambiente
adequou-se aos princípios do projeto, pois seu custo é ladder para os microcontroladores 8051 e pic16f873,”
inferior aos demais controladores similares, além de Blumenau, Santa Catarina, Jun. 2003, monografia
possuir uma quantidade de entradas e saídas (Bacharel em Ciência da Computacão), Universidade
adequadas, e 1KB de memória EEPROM, que Regional de Blumenau.
possibilita utilização de até 150 operações na [5] L. FERNANDES, “Protótipo de clp para linux
linguagem Ladder. embarcado,” Blumenau, Santa Catarina, Dez. 2014,
A aplicação do teste com os alunos demonstrou monografia (Bacharel em Ciência da Computação),
que o sistema possui uma facilidade de uso e de Universidade Regional de Blumenau.
aprendizado, pois os alunos conseguiram desenvolver [6] Y. Yan and H. Zhang, “Compiling ladder dia-
a programação em um tempo satisfatório. gram into instruction list to comply with IEC 61131-
As sugestões dos alunos para aprimoramento do 3,” in Proc. of the World Congress on Engineering,
software foram: London, UK, Jul. 2011, pp. 1–6.
 Opção de copiar e colar [7] Y. Yan and H. Zhang, “Compiling ladder dia-
 Inclusão de novos contatos como set e gram into instruction list to comply with iec61131-3,”
reset Computers in Industry, vol. 61, pp. 448–462, Abr
 Debug em software 2010
[8] H. M. Deitel, P. J. Deitel, J. Listfield, C. Y.
 Opção de salvar o código
T.R. Nieto, and M. Zlatkina, C Como programar, 1st
 Gravação direta sem necessidade de ed. São Paulo, SP, Brasil: Pearson Makron Books,
utilização de outro programa 2003.
[9] F. Hu, L. Fu, L. Liu, and G. Zhang, “An algo-
É possível realizar a inclusão destas sugestões em rithm about transforming plc ladder diagram to in-
projetos futuros sem a necessidade de grandes struction list based on series-parallel merging
modificações no sistema. method,” IEEE Computer Society conference, pp.
812–816, Dez 2008.
5 Conclusão [10] ARM Technical Support Knowledge Articles
Disponivel em: <http://infocenter.arm.com/help/in-
dex.jsp?topic=/com.arm.doc.faqs/ka9903.html>Aces
Este projeto permitiu o desenvolvimento de um
so em 20 nov. 2017
software que traduz da linguagem Ladder para
Instruction List de forma a gerar resultados
equivalentes, gerando o arquivo .eep. Os testes
realizados permitiram concluir que o sistema é eficaz
e possui uma interface intuitiva e de fácil
programação.

6 Agradecimento

Agradeço a minha família a qual apoiou-me por


toda a vida, assim como foi de grande importância
para a minha trajetória acadêmica, e aos professores,
que forneceram o conhecimento o qual tornou
possível o meu desenvolvimento acadêmico.

7 Referencia

[1] C. M. Franchin and V. L. A. de Camargo,


Controladores Lógicos Programáveis Sistemas
Discretos, 2nd ed. São Paulo, SP, Brasil: Editora Érica
Ltda, 2010.
[2] L. FERREIRA, J. DREHER, e G. GUEDES,
“Implementação de um clp baseado na IEC-61131
sobre microcontrolador popular e de baixo custo”
Instituto Federal de Santa Catarina - IFSC, Chapecó,
Santa Catarina, Tech. Rep., Jan. 2016.
[3] IEC, Programmable controllers - Part 3: Pro-
gramming languages, INTERNATIONAL STAND-
ARD Std., 2003.

Você também pode gostar