Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
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
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.
5 Implementação e resultados
INTERNATIONAL ELECTROTECHNICAL
COMMISSION. IEC 61131-3. , 2003 a.
INTERNATIONAL ELECTROTECHNICAL
COMMISSION. Programmable controllers. Part 1,
Part 1,. Geneva: International Electrotechnical
Commission, 2003b.
6 Conclusões
Agradecimentos
Referências Bibliográficas