Sunteți pe pagina 1din 8

DESENVOLVIMENTO DE UM SOFTWARE DE PROGRAMACÃO

PARA 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 Progra-
má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 porte utilizando um micro controlador popular de


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

1
uma grande facilidade de programação, tornando pos-
sível o desenvolvendo um software que proporcione
ao usuário uma interface amigável, de fácil entendi-
mento e usabilidade para desenvolver sua programa-
ção em Ladder.

Baseado nas possiblidades previamente descritas, Figura 2. Interface de programação


este projeto teve como objetivos: Ao selecionar uma instrução de entrada pode-se
1) Desenvolver um software de programa- escolher as opções de lógica direta e lógica inversa das
ção, com uma interface intuitiva e de fá- entradas, saídas e memórias além de utilizar timer on
cil programação para o usuário, que de- e contador crescente (Figura 3).
verá traduzir da linguagem Ladder para
a Instruction List e gerar um arquivo no
formato .eep (EEPROM Data File) já
convertido na linguagem que será inter-
pretada pelo hardware.
2) Testar a equivalência dos códigos tradu-
zidos por meio do método de tabela ver-
dade.
3) Testar o funcionamento da placa progra-
mada com esta interface em bancada
pneumática.
4) Verificar com alunos de graduação do
IFSC a usabilidade do software. Figura 3. Interface de entradas

Ao selecionar a instrução de saída pode-se optar


em acionar uma saída física ou uma memória no for-
2 Materiais e Métodos mato direto ou inverso (Figura 4).

2.1 Criação do software para a tradução


O projeto utilizou o software Visual Studio
2017(Microsoft, Redmond, Wa, EUA) na linguagem
C# pra seu desenvolvimento.
A interface desenvolvida conta com cinco Rung
(conjunto de linhas) para programação, possuindo
duas linhas e seis colunas, sendo a sexta coluna a atu-
açã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 ge-
rar .eep, e um campo direcionado para o código já no
formato Intel hex file format, como pode ser visto na
Figura 1.
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], e
dentro deste software consiste em várias etapas, sendo
elas:
1) Substituição das ligações em serie da linguagem
Ladder para o operador AND da linguagem Instruc-
tion List, e das ligações em paralelo para operado OR
(Figura 5-A).
Figura 1. Interface desenvolvida
2) Inclusão dos operadores LD no início do pro-
A interface de programação permite selecionar a grama, e logo após a utilização do operador OR (figura
posição e os componentes desejados, juntamente com 5-B).
a lógica em serie e paralelo para a programação, como 3) Organização da etapa da atuação, deslocando o
pode ser visto na Figura 2. item Y1 para o final e utilizando o operador ST (Fi-
gura 5-C).

2
4) Remoção dos parênteses desnecessários e orga- DIV( 24 Função aritmética Divisão
nizar a tradução (Figura5-D). MOD 25 Função aritmética Resto da
MOD( 26 Divisão
GT 27 Comparação “maior que”
GT( 28 (>)
GE 29 Comparação “maior ou igual
GE( 30 a” (>=)
EQ 31
Comparação “igual a” (=)
EQ( 32
NE 33 Comparação “diferente de”
NE( 34 (><)
LE 35 Comparação “menor ou
LE( 36 igual a” (<=)
LT 37 Comparação “menor que”
LT( 38 (<)
) 39 Operador fecha parênteses
TON 40 Temporizador
CTU 41 Contador
Figura 5. Exemplo das etapas da tradução Fonte: Ferreira et al.[2].

2) Identificação do operando de acordo com a


A próxima fase consiste da tradução da lingua-
Tabela 2
gem Instruction list para a linguagem de máquina. Se-
guindo as etapas, de acordo com o trabalho de Ferreira Tabela 2. Lista de instrução para cada operando
et al.:
Operando Código
1) Identificação do operador de acordo com a
tabela da International Electrotechnical ENTRADA DIGITAL 0
Commission (Tabela 1). SAÍDA DIGITAL 1
Tabela 1. Lista de instruções de cada operador Memórias tipo bit 2
Operadores Código Descrição/ significado Memórias tipo byte 3
Carrega o operando para o Memórias tipo Word 4
LD 0
acumulador
Memórias tipo Double
Carrega operando negado 5
LDN 1 Word
para o acumulador
Armazena o conteúdo do Memórias tipo Long 6
ST 2 acumulador no local especi- Constante 7
ficado pelo operando
Fonte: Ferreira et al.[2].
Armazena acumulador ne-
STN 3
gado
Seta o operando para 1 caso 3) Identificação dos valores ou endereços utili-
S 4 o resultado atual seja Boo- zados pelo usuário.
lean 1 4) Organização dos dados obtidos nas tabelas 1
Seta o operando para 0 caso e 2 dentro da tabela 3.
R 5 o resultado atual seja Boo-
Tabela 3. Estrutura de endereçamento
lean 1
AND 6 OPERADOR OPERANDO INSTRUCTION
ANDN 7 TIPO VALOR / ENDEREÇO LIST
Função booleana AND 0 0 0 0 0 1 LD I 1
AND( 8
AND(N 9 6 2 0 0 0 5 AND M 5
2 1 0 0 0 1 ST Q 1
OR 10
Fonte: Adaptada de Ferreira et al.[2].
ORN 11
Função booleana OR
OR( 12
5) Criação de um cabeçalho de informações
OR(N 13
XOR 14
para o micro controlador, constando: A quan-
XORN 15 Função booleana XOR tidade de tarefas; número da tarefa; tipo da
XOR( 16 tarefa; prioridade da tarefa; tipo da interrup-
ADD 17 ção ou parte mais significativa do tempo de
Função aritmética Soma interrupção; endereço ou parte menos signi-
ADD( 18
SUB 19 ficativa do tempo de interrupção; endereço
Função aritmética Subtração
SUB( 20 da memória do início da tarefa e endereço da
MUL 21 Função aritmética Multipli- memória do fim da tarefa; como pode ser
MUL( 22 cação vista na Tabela 4.
DIV 23

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 EE-


PROM 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 6. 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 op-
a gravação tado pela elaboração de três placas com funções espe-
 tt O tipo de gravação a ser feita cificas 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 ope-
rando são organizados para gerar uma nova gravação A placa de entradas e saídas (Figura 7) tem o ob-
da EEPROM. jetivo de receber as conexões dos sensores em 24V
Ao finalizar a organização, o sistema cria um ar- converte-los para 5V através de opto-acopladores e
quivo no formato .eep e grava os dados no mesmo para transmitir o sinal para o controlador. Ela deverá tam-
posterior upload no microcontrolador. bém fazer os acionamentos das saídas de acordo com
o sinal do controlador, utilizando relés que possuem
2.3 Hardware para teste isolamento de 250V e até 7 Amperes. Esta placa tam-
bém recebe a ligação de uma fonte de 24V para a ali-
Para testar o software foi desenvolvido um equipa- mentação do sistema.
mento com similaridades com um CLP, possuindo en-
tradas de 24V isoladas, saídas a relé, e alimentação de
24V.
Neste equipamento optou-se pela utilização do mi-
crocontrolador ATmega328P (Microchip Technology
Inc., Chandler, Arizona, USA), o qual possui 14 en-
tradas e saídas, 32 KB de memória flash, e 1KB de
memória EEPROM.
Para acomodação da placa desenvolvida foi utili-
zado 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 6)

Figura 7. 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 8). 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 pri- CLP (Figura 10).
mário de redução para linha de 5V, que por sua vez é
utilizada para a alimentação dos demais componentes
do sistema.

Figura 8. Placa de potência

A placa lógica (Figura 9) conta com um ATmega328P


com um cristal de 16Mhz, um conector ICSP para a
gravação do sistema e da EEPROM, e um conector Figura 10. Placas finalizadas (acima) e montadas na caixa
para a comunicação Serial com o computador, caso (abaixo).
necessário.
2.4 Teste da Tradução
Para verificar a tradução foram criadas diversas
programações em Ladder e traduzidas para Instruc-
tion List. Após, uma análise de ambos os códigos foi
realizada por meio do método de tabela verdade. As-
sim foi possível verificar se ambos os códigos gera-
vam 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 funcio-
namento básico do sistema (Figura 11).

Figura 11. Teste de auto retenção.

2) Teste de multitarefas para verificar o funciona-


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

Figura 9. Placa lógica

5
segundo pistão deve ser acionado, sendo o sistema ini-
ciado e parado ao pressionar dois botões distintos (Fi-
gura 14).

Figura 14. Teste com contadores

Figura 12. Teste com multitarefas. 5) Teste para verificar o funcionamento em para-
3) Teste com multitarefas incluindo Timer para lelo de um timer e um contador. Neste teste as seguin-
averiguar o funcionamento correto do sistema com a tes atividades foram verificadas (Figura 15).
aplicação de temporizadores. Foram utilizados três ti-  Acionamento de um pistão após a conta-
mers onde os acionamentos ocorrem em sequencias gem de 3 pressionamentos do botão.
com atraso entre eles, simulando uma máquina que  Acionamento de um seguindo pistão
efetua a dobra de uma chapa (Figura 13). após o pressionamento por 3 segundos
de um outro botão
 Reinicio do sistema após acionar um ter-
ceiro botão.

Figura 15. Teste com timer e contador

2.6 Teste com alunos


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

Figura 13. 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

6
13
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 16. Teste aplicado aos alunos Ruim Regular Bom

Foi solicitado aos alunos que efetuassem esta pro- Figura 17. Resultados
gramação com o tempo cronometrado no software de- Analisando o resultado é possível verificar que o
senvolvido. Ao termino da programação os alunos res- sistema obteve uma boa avaliação dos alunos, po-
ponderam um questionário com as seguintes pergun- dendo ser considerado um sistema de fácil programa-
tas: ção, usabilidade e aprendizado. Para este sistema os
1) Facilidade de uso: alunos conseguiram desenvolver o programa proposto
( )Ruim ( )Regular ( )Bom em um tempo médio de 3 minutos e 13 segundos, com
desvio padrão de 44 segundos, tempo máximo de 4
2) Facilidade de aprendizado: minutos.
( )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, possibili-
tando com que mais usuários tenham a capacidade de
utiliza-lo, pois a linguagem Ladder é uma linguagem
3 Resultados 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 satisfató- eficiente, pois tornou possível traduzir todos os códi-
rios, onde todos os testes aplicados geraram uma tra- gos de forma correta e ao analisar a tradução foi com-
dução que correspondia exatamente como o código provado por meio de todos os testes aplicados que as
deveria ser executado, pois ao aplicar os códigos em conversões seguiam a mesma sequência e o mesmo
tabelas verdade foi possível verificar que os resultados resultado.
eram os mesmo nas diferentes linguagens. A criação deste sistema foi vantajosa, pois não foi
necessário o grande gasto de tempo para o desenvol-
3.2 Testes na bancada vimento de um compilador para o microcontrolador e
Com os testes aplicados na bancada pneumática tornou possível a utilização e aprimoramento de pro-
foi possível comprovar se os sistemas de tradução e jetos anteriores.
interpretação estavam funcionando de acordo com a Caso fosse desejado criar um interpretador para
programação desenvolvida. Foi verificado que todas Ladder isso não seria possível, pois segundo Yan et
as programações testadas funcionaram de acordo com al.[6] a linguagem Ladder não pode ser executada di-
o desejado, e o sistema eletrônico comportou-se como retamente em um CLP por se tratar de uma linguagem
esperado, sendo possível utilizar sensores e atuadores gráfica. Já a linguagem Instruction List é uma lingua-
industriais sem causar nenhuma interferência ao sis- gem que intermedia entre Ladder e as instruções utili-
tema. zadas pelo processador.
Os testes aplicados na bancada pneumática de-
3.3 Questionário plicado aos alunos monstraram que o sistema foi capaz de utilizar senso-
res industriais com sinal de 24V e acionar as válvulas
O questionário aplicado em 14 alunos e os resulta-
de mesma tensão sem ocasionar erros. Devido a isso,
dos obtidos estão expressos na (Figura 17).
o sistema pode vir a ser utilizado como um CLP de
baixo custo para muitos projetos.

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


troladores 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 so-
bre microcontrolador popular e de baixo custo” Insti-
tuto 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.
[4] S. A. D. ALMEIDA, “Protótipo de ambiente
ladder para os microcontroladores 8051 e pic16f873,”
Blumenau, Santa Catarina, Jun. 2003, monografia

S-ar putea să vă placă și