Você está na página 1de 6

IMPLEMENTAÇÃO DE UM CLP BASEADO NA IEC-61131 SOBRE MICROCONTROLADOR

POPULAR E DE BAIXO CUSTO

LADEMIR FERREIRA, JACSON DREHER, GUSTAVO GUEDES.

Instituto Federal de Santa Catarina


Chapecó, Santa Catarina, Brasil
E-mails: lademirf@hotmail.com, jacson@ifsc.edu.br,
gustavo.guedes@ifsc.edu.br

Abstract This paper presents the development of a small scale PLC (Programmable Logic Controller) using a popular, low-cost
microcontroller. The project is based on the IEC-61131 standard, using the programming language IL (Instructions List). For the
implementation of the CLP, an ATmega328P microcontroller was chosen in Arduino platform. The basic operators and some IL
functions were implemented, as provided in IEC-61131. The software that interprets and executes the user program was developed
with the Arduino programming language itself.

Keywords PLC, microcontroller, Arduino, Instructions List.

Resumo Este artigo apresenta o desenvolvimento de um Controlador Lógico Programável (CLP) de pequeno porte, utilizando
um microcontrolador popular e de baixo custo. O projeto foi baseado na IEC-61131 e na linguagem de programação IL (Instructions
List). Para a implementação do CLP, foi escolhido o microcontrolador ATmega328P na plataforma Arduino Uno. Foram
implementados os operadores básicos e algumas funções da IL, conforme previsto na IEC-61131. O software que interpreta e
executa o programa do usuário foi desenvolvido na linguagem de programação do próprio Arduino.

Palavras-chave CLP, microcontrolador, Arduino, Lista de Instruções.

1 Introdução um microcontrolador popular e de baixo custo e em


concordância com as especificações da norma IEC
61131-3, e está estruturado da seguinte forma: na
Com a crescente necessidade de equipamentos e
Seção 2, é apresentada a estrutura básica de um CLP,
processos automatizados, é notável o aumento no uso
tal como definida na norma IEC 61131-3. Na Seção 3,
de Controladores Lógicos Programáveis (CLP’s) e,
é abordada a linguagem de programação do tipo lista
também, na variedade de modelos de hardware e de instruções (IL). A Seção 4 apresenta o sistema
software desenvolvidos pelos diversos fabricantes que operacional proposto e a estrutura do software
disputam esse mercado. desenvolvido. Na Seção 5, são apresentados o
Para regulamentar e padronizar os CLP’s, existe hardware utilizado para a implementação e teste do
a norma IEC-61131. A IEC-61131 se aplica aos CLP’s projeto e os resultados obtidos. Finalmente, na Seção
e seus periféricos associados, tais como: ferramentas 6, são apresentadas algumas as conclusões.
de programação e depuração; interfaces homem-
máquina (IHM’s); dentre outros itens destinados ao
controle de máquinas e processos industriais. 2 Estrutura de um CLP
Ela estabelece requisitos mínimos para os
equipamentos, mas não impõe limites de criação, Segundo a (INTERNATIONAL
permitindo que os fabricantes possam desenvolver ELECTROTECHNICAL COMMISSION, 2003b), a
novas funções conforme suas necessidades. funcionalidade de um CLP pode ser implementada em
A IEC61131 está dividida em cinco partes, além uma plataforma específica de hardware e software ou
de dois guias de implementação. A sua terceira parte em um computador de uso geral com características
trata das linguagens de programação, sendo, assim, a de ambiente industrial.
que tem maior relevância para este trabalho. A IEC-61131-1 traz a seguinte definição de CLP:
Segundo (CHMIEL, MIROSLAW et al., 2015), “Sistema eletrônico operando digitalmente, projetado
acreditava-se, nas décadas recentes, que apenas para uso em ambiente industrial, que utiliza memória
CPU´s dedicadas poderiam ser utilizadas no interna programável para o armazenamento de
desenvolvimento de CLP´s. Entretanto, os autores instruções criadas pelo usuário para a execução de
demonstram que é possível desenvolver CLP´s com funções tais como lógica, sequenciamento,
base em vários microcontroladores típicos. temporização, contagem e aritmética, para controlar,
Para (CHMIEL et al., 2015), a utilização de um através de entradas e saídas digitais ou analógicas,
microcontrolador padrão e popular é uma solução vários tipos de máquinas ou processos”.
interessante para o desenvolvimento de um CLP de A estrutura funcional básica de um CLP é
baixo custo e boa qualidade. definida conforme ilustrado na Figura 1. Essas
Este trabalho tem por objetivo apresentar um funções devem comunicar-se entre si e com os sinais
método de implementação do software de um CLP em da máquina ou processo a ser controlado.
3 Lista de instruções

A (INTERNATIONAL
ELECTROTECHNICAL COMMISSION, 2003)
define 5 tipos de linguagem para programação do
CLP, sendo duas delas textuais - Texto Estruturado
(ST) e Lista de Instruções (IL) - e três gráficas -
Ladder (LD), Diagrama de Blocos (FBD) e
Sequenciamento Gráfico de Funções (SFC).
Segundo (CHMIEL et al., 2015), a lista de
instruções pode ser considerada como o conjunto de
instruções nativas dos CLP’s, já que, na maioria dos
ambientes de programação, os programas
desenvolvidos nas demais linguagens são convertidos
para IL.
A IL é reconhecida como a linguagem mais
parecida com a linguagem Assembler, utilizada por
muitos microcontroladores, segundo (CHMIEL,
MIROSLAW et al., 2015). A IL é composta por uma
Figura 1. Estrutura funcional básica de um CLP (fonte: IEC- sequência de instruções, onde cada instrução é
61131-1).
formada por um operador e por um ou mais operandos
(INTERNATIONAL ELECTROTECHNICAL
COMMISSION, 2003a). Cada operador pode, ainda,
Para (CHMIEL, MIROSŁAW et al., 2014), a
vir acompanhado de um modificador.
CPU de um CLP pode ser concebida de várias
maneiras, sendo que a sua arquitetura é o fator Na Tabela 1 são listados os principais operadores
preponderante para o tempo de execução de uma básicos da IL. A IL é baseada em operações de valor
rotina de controle. único, ou seja, cada instrução tem seu resultado
Em um CLP, o módulo CPU é responsável pelo gravado como o valor atual (CR) e tal resultado é
armazenamento do programa de aplicação, pelo utilizado, então, pela próxima instrução a ser
armazenamento de dados, pelo sistema operacional e executada.
pela execução das funções do programa aplicativo. A
CPU processa os sinais obtidos de sensores, bem Tabela 1. Principais operadores da linguagem Lista de Instruções.
como os do armazenamento interno de dados, e gera
Operador Código Descrição/ significado
sinais para os atuadores e para o armazenamento de
dados internos, em conformidade com o programa de LD 1 Carrega o operando para o
aplicação. Acumulador
Conforme (M. CHMIEL et al., 2011), CPU’s de LDN 2 Carrega operando negado para
CLP´s são frequentemente concebidos como sistemas o Acumulador
com múltiplos processadores. Dispositivos FPGA ST 3 Armazena o conteúdo do
oferecem grandes oportunidades para a construção e Acumulador no local
avaliação de CPU’s para controladores lógicos especificado pelo operando
programáveis, sendo possível desenvolver-se sistemas STN 4
micro processados dedicados completos capazes de S 5 Seta o operando para 1 caso o
executar programas de controle de forma eficiente resultado atual seja Boolean 1
com base em um microprocessador totalmente R 6 Seta o operando para 0 caso o
customizado. Dispositivos programáveis tornam resultado atual seja Boolean 1
possível, também, trocar a abordagem cíclica- AND 7
sequencial por uma implementação de hardware 8
ANDN
massivamente paralela. Função booleana AND
AND( 9
Ainda de acordo com (M. CHMIEL et al., 2011),
a maneira mais simples para implementação da CPU ANDN( 10
de um CLP é através da utilização de um OR 11
microprocessador, já que tal concepção de uma 12
ORN
unidade central resulta diretamente da execução Função booleana OR
OR( 13
cíclica e sequencial de programas de controle por
controladores. ORN( 14

XOR 15
XORN 16 Função booleana XOR
XOR( 17

ADD 18 Função aritmética Soma


ADD( 19 equipamento, e não-retentivo, cujo conteúdo é perdido
SUB 20 após o desligamento.
21
Função aritmética Subtração As entradas e saídas do CLP devem ser definidas
SUB(
de acordo com a quantidade de entradas e saídas do
MUL 22
Função aritmética microcontrolador escolhido. Também deve ser
MUL( 23 Multiplicação reservado um espaço de memória para os
DIV 24 registradores, como timers e contadores.
25
Função aritmética Divisão O Sistema Operacional deve supervisionar todas
DIV(
26
as entradas, saídas e registradores, realizando a leitura
MOD Função aritmética Resto da das entradas e atualizando as saídas, conforme o
MOD( 27 Divisão programa do usuário, a cada ciclo de varredura.
GT 28 Para que o sistema operacional possa interpretar
29
Comparação “maior que” (>) corretamente o programa do usuário, foi definida uma
GT(
30 estrutura de programa, conforme mostrado na Tabela
GE Comparação “maior ou igual 2, para a gravação do programa do usuário na memória
GE( 31 a” (>=) do microcontrolador. A estrutura básica é formada por
EQ 32 seis bytes de informações, onde o primeiro byte é um
33
Comparação “igual a” (=) código correspondente ao operador que está sendo
EQ(
34 utilizado, o segundo byte é um código que
NE Comparação “diferente de” corresponde ao tipo do operando (uma entrada, uma
NE( 35 (< >) saída, um tipo de memória ou uma constante) e os
LE 36
Comparação “menor ou igual bytes de dois a cinco armazenam o endereço do
LE( 37 a” (<=) operando ou o seu valor, no caso de uma constante.
LT 38 A IEC 61131 prevê a utilização de dados de até
39
Comparação “menor que” (<) 64 bits. Nesse caso, seria necessário duplicar o campo
LT(
de endereço do operando (ou valor, caso constante)
) 40 Operador fecha parênteses para se obter valores de até 8 bytes; porém, a norma
TON 41 Temporizador permite que o fabricante defina as limitações de dados
CTU 42 Contador e capacidade, conforme o hardware utilizado.

Tabela 2: Modelo da estrutura do programa.

Além de operadores e operandos, a IEC 61131-3 Tipo do Endereço do operando ou valor, caso
apresenta os modificadores que podem ser utilizados Operador
operando constante de até 4 bytes
na programação. Os dois principais modificadores são
o “(”, que indica que a operação atual deve ser adiada
Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5
até encontrar o operador “)”, e o “N”, que implica que
Entrada Entrada
o operando relacionado a aquele operador deve ter seu LD
digital
0 0 0
nº 1
valor negado.
Também é possível a utilização combinada de A estrutura apresentada na Tabela 2 é válida para
modificadores. Por exemplo, o operador “ANDN(” todos os operadores e funções padrão definidas na
indica que o valor do operando negado deve ser norma; porém, para alguns blocos de funções que
armazenado e executa a operação AND com o valor necessitam de mais de um operando, pode-se ampliar
atual, CR, assim que o operador “)” é encontrado. a estrutura, acrescentando-se mais operandos. A
norma permite a criação de novas funções, desde que
4 Sistema Operacional o sistema operacional as possa interpretar e executar.
A Figura 2 apresenta a sequência lógica de
funcionamento do sistema operacional proposto.
Inicialmente, são executadas as funções de
O Sistema Operacional proposto neste trabalho inicialização, onde se atribuem valores iniciais a todas
consiste, basicamente, no sistema de controle e as variáveis internas e do programa do usuário e são
execução do programa de usuário gravado na memória configuradas as entradas e saídas do CLP.
não volátil do microcontrolador (EEPROM).
Após executar as funções iniciais, o programa
Para facilitar a organização do programa, propõe- entra em um loop, onde é feita a leitura das entradas,
se um mapeamento de memória, dividindo-se os a verificação de quais tarefas estão habilitadas e,
espaços de memória conforme a capacidade do depois, dentre as tarefas habilitadas, a verificação de
hardware quanto ao número de entradas e saídas e o qual é a tarefa de maior prioridade de execução, que é
número desejado de memórias internas de cada um então executada. O resultado da execução é, então,
dos tipos previstos na IEC 61131. As memórias atualizado nas saídas e o ciclo se repete.
podem ser do tipo retentivo, em que as informações
são mantidas mesmo quando desligado o
Para cada operador, existe uma função no
software que faz a chamada de uma outra função, que
realiza a leitura do(s) operando(s) correspondente(s)
ao operador que está em execução, conforme
mostrado na Figura 4. A função Lê Operando verifica
e grava em uma variável o tipo e o valor do operando.
A execução é, então, concluída e o endereço é
atualizado.

Figura 2. Funcionamento do Sistema Operacional.

Figura 4. Função “lê operando”.

Caso o operando seja uma constante, os quatro


bytes são convertidos em um único valor e
armazenados conforme a programação.

5 Implementação e resultados

Para a implementação e teste do sistema


operacional, foi escolhido um microcontrolador
Figura 3. Execução de uma tarefa. ATmega328P (Figura 5) embarcado na plataforma
Arduino UNO. A escolha desse modelo de
microcontrolador se deu por ser um produto popular,
Para o controle da execução das tarefas, o sistema de baixo custo e de fácil programação.
operacional utiliza o endereço inicial e final de cada O Arduino possui 14 pinos (Figura 6), que podem
tarefa na memória EEPROM. Esse controle é feito de ser utilizados como entradas ou saídas digitais, dos
forma não-preemptiva, ou seja, uma tarefa em quais 6 podem ser saídas PWM. Ele tem uma
execução não é interrompida mesmo que outra tarefa capacidade de memória flash de 32KB, 2KB de
de maior prioridade seja habilitada durante sua memória SRAM e 1KB de memória EEPROM, além
execução. de um cristal que possibilita uma frequência de clock
A IEC61136-3 estabelece as duas formas de de 16 MHz.
controle (preemptiva e não-preemptiva), mas deixa a
critério do fabricante optar pela forma de controle
mais adequada à capacidade do hardware utilizado.
O sistema operacional faz a leitura do byte que
identifica o tipo de operador, conforme listado na
Tabela 1, e executa a função correspondente. Após
isso, o sistema atualiza o endereço, acrescentando o
número de bytes utilizados por aquele operador e seus
respectivos operandos, e volta a fazer a leitura do
próximo operador a ser executado.
Figura 5. ATmega328P (fonte: datasheet).
OR I5
)
)
ST Q1

Para constatar o correto funcionamento da


funcionalidade de multitarefas, o programa em
linguagem Ladder apresentado na Figura 8 foi
convertido para IL, conforme mostrado na Tabela 4, e
gravado no formato proposto. Esse programa serve
também para testar o correto funcionamento de um
temporizador implementado.

Figura 6. Arduino UNO.

Neste trabalho, foi desenvolvido um software


capaz de executar as funções de um CLP, utilizando a
linguagem de programação C e a IDE (Integrated
Development Environment) própria do Arduino.
Foram implementadas funções de inicialização, como
a definição das entradas e saídas, e definidos os
valores iniciais das variáveis, conforme previsto na
norma IEC 61131-3.
Para a implementação dos operadores básicos da
IL, foi criada uma função para cada operador. Dessa
forma, se no decorrer da execução do programa do
usuário for encontrado, por exemplo, um operador
LD, o software chama a função que executa esta
operação e atualiza o endereço para a leitura da
próxima instrução. Figura 8. Programa Ladder utilizado para teste multitarefas e
temporizador.
Para testar o funcionamento correto da aplicação,
foram inseridos manualmente no software programas
de usuário convertidos para o código em bytes,
Tabela 4. Programa em IL utilizado para teste de multitarefas e
conforme a organização do software prevê. temporizador
Lista de instruções
Tarefa 1
LD I1
ANDN I2
ST Q1
Tarefa 2
Figura 7. Programa Ladder utilizado para teste de operadores
básicos.
LD Q1
TON T1,1000
A Figura 7 ilustra o programa Ladder utilizado
LD T1
nesse teste e, na Tabela 3, é mostrada sua versão em
IL. AND I0
ST Q1
Tabela 3. Programa em IL utilizado para teste de operadores LD I0
básicos.
OR Q3
Lista de instruções ANDN 1
LD I1 ST Q3
AND I2
OR(N I3
AND(N I4
Para validar o funcionamento do software, foram Disponível em:
capturados com um osciloscópio os sinais das saídas <http://www.degruyter.com/view/j/eletel.2014.60.iss
“Q0” e “Q3”, conforme mostrado na Figura 9. ue-1/eletel-2014-0004/eletel-2014-0004.xml>.
Inicialmente, as duas saídas estão em zero; ao acionar- Acesso em: 21 out. 2015.
se a entrada “I0”, a saída “Q3” vai para um e, após o
tempo programado de 1 segundo, a saída “Q1” vai CHMIEL, Miroslaw et al. Popular microcontrollers
para um, reiniciando o temporizador. execute IEC 61131-3 standard operators and
functional blocks in simply automatic control tasks.
ago. 2015, [S.l.]: IEEE, ago. 2015. p. 643–648.
Disponível em:
<http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.ht
m?arnumber=7283950>. Acesso em: 6 out. 2015.

INTERNATIONAL ELECTROTECHNICAL
COMMISSION. IEC 61131-3. , 2003 a.

INTERNATIONAL ELECTROTECHNICAL
COMMISSION. Programmable controllers. Part 1,
Part 1,. Geneva: International Electrotechnical
Commission, 2003b.

M. CHMIEL et al. Central Processing Units for PLC


implementation in Virtex-4 FPGA. 18th IFAC World
Figura 8. Sinais saídas Q1(amarelo) e Q3 (verde). Congress, v. 18, part 1, p. 7860–7865, 28 set. 2011.

6 Conclusões

A utilização de microcontroladores populares e


de baixo custo para o desenvolvimento de um CLP é
uma alternativa viável para aplicações onde não é
exigido um desempenho muito alto de hardware. A
solução proposta mostra que é possível desenvolver
um CLP com as principais funcionalidades
comumente implementadas. A utilização da
linguagem IL facilita a programação e garante a
conformidade com a norma IEC61131-3.
O CLP desenvolvido neste trabalho mostrou-se
funcional, mesmo em aplicações com multitarefas e
com funcionalidades como temporizadores e
contadores.

Agradecimentos

Agradeço a todos que, de alguma maneira,


contribuíram para o desenvolvimento desse trabalho.
À minha esposa, Ivandréia, por me compreender,
apoiar e incentivar durante todos esses anos. Aos meus
pais, por me ensinarem os valores que me trouxeram
até aqui. Em especial, aos meus orientadores Jacson
Dreher e Gustavo Guedes, pelas orientações e
ensinamentos que fazem a diferença para o trabalho e
para a vida.

Referências Bibliográficas

CHMIEL, Mirosław et al. About Implementation of


IEC 61131-3 IL Function Blocks in Standard
Microcontrollers. International Journal of Electronics
and Telecommunications, v. 60, n. 1, 1 jan. 2014.

Você também pode gostar