Conheça o OpenPLC - O primeiro CLP de Código Aberto Padronizado

Olá caro leitor, como vai? No artigo de hoje irei apresentar as principais características do OpenPLC, o primeiro CLP de código aberto padronizado e totalmente funcional. Dentro deste artigo começarei abordando os motivos para a criação do projeto, ferramentas e as principais plataformas de hardwares compatíveis com o OpenPLC. Para lhe auxiliar, recomendo a leitura da série sobre CLPs, apresentada por Carlos Márcio Freitas.

 

Visão geral do OpenPLC

 

O OpenPLC, projeto criado por Thiago Rodrigues Alves (estudante de doutorado na Universidade do Alabama), surgiu através do objetivo de encontrar vulnerabilidade em PLCs (Programmable Logic Controller ou Controlador Lógico Programável - CLP). Entretanto, dificilmente algum fabricante de CLP disponibilizaria seu código fonte para que o estudante pudesse realizar uma análise mais profunda, a fim de validar seus estudos. Devido a isto, ele resolveu criar o seu próprio CLP de hardware e software livres, que pode ser programado nas 5 principais linguagens definidas conforme a norma IEC 61131-3, que estabelece a arquitetura básica de software e as linguagens de programação para CLPs. Dentre as linguagens suportadas pelo OpenPLC, estão: LD (Ladder Diagram ou Diagrama Ladder), FBD (Function Block Diagram ou Diagramas de Blocos Funcionais), ST (Structured Text ou Texto Estruturado), IL (Instruction List ou Lista de Instruções) e SFC (Sequential Function Chart ou Sequenciamento Gráfico de Funções).

 

O projeto do OpenPLC possui um ambiente de desenvolvimento de programas, é compatível com praticamente qualquer software SCADA existente, utiliza o protocolo Modbus/TCP para comunicação e inclui um editor de Interface Homem Máquina (IHM) de código aberto, denominado SCADA BR. Outro ponto interessante a se destacar condiz a compatibilidade do OpenPLC com o PLCopen Editor, sendo esse um software que permite escrever programas para CLP de acordo com a IEC 61131-3, estando em conformidade com o PLCopen XML. A figura 1 ilustra a linguagem Ladder sendo aplicada sobre o PLCopen Editor. 

 

Figura 1 - Linguagem Ladder sendo aplicada sobre o PLCopen Editor.

 

A programação do hardware é realizada por meio do PLCOpen Editor, onde são gerados arquivos ST. O aplicativo OpenPLC possui um servidor Web baseado em NodeJs que controla se o OpenPLC está de fato sendo executado ou não, e permite que o usuário faça upload do arquivo ST. Durante a execução do servidor, basta abrir o navegador, que haverá uma interface Web, possibilitando o envio de novos programas ao OpenPLC.

 

Plataformas para o OpenPLC

 

O OpenPLC é compativel com algumas plataformas livres, como Arduino, Raspberry Pi e ESP8266. Adicionalmente, o projeto dá suporte à UniPI e PiXtend. Além disso, o OpenPLC fornece os esquemas elétricos para que o usuário crie seu próprio hardware, caso não deseje utilizar nenhuma dessas plataformas para suas aplicações.

 

No que diz respeito ao suporte fornecido para a plataforma Arduino, o OpenPLC disponibiliza mapeamentos de pinos para diferentes tipos de placas, como, por exemplo, Arduino UNO, Pro, Pro Mini, Nano, Micro, Lilypad, Zero, Mega, ADK e Due. A figura 2 demonstra o mapeamento de pinos para o Arduino Uno, Pro, Pro Mini, Nano, Micro, Lilypad e Zero. Vale destacar que para a plataforma Arduino, o OpenPLC não funciona como um aplicativo autônomo, isto é, depende de um sistema host para execução da lógica no núcleo. O sistema host pode ser Windows, Linux ou uma Raspberry Pi.

 

Mapeamentos de pinos para alguns modelos de hardware do Arduino.
Figura 2 - Mapeamentos de pinos para alguns modelos de hardware do Arduino.

 

Com relação à Raspberry Pi, o dispositivo deve estar executando o Raspbian Jessie para que seja possível a instalação do OpenPLC. Para saber mais sobre o processo de instalação do OpenPLC em um modelo de Raspberry Pi, clique aqui. Seguindo a mesma linha de mapeamentos de pinos citados no parágrafo anterior, o OpenPLC compatibiliza seus I/Os para as versões de Raspberry Pi. A figura 3 demonstra o mapeamento de pinos do OpenPLC para a Raspberry Pi.

 

Mapeamento de pinos do OpenPLC para Raspberry Pi.
Figura 3 - Mapeamento de pinos do OpenPLC para Raspberry Pi.

 

No caso do ESP8266 o procedimento de instalação do OpenPLC é similar ao Arduino, onde é necessário um sistema host para execução da lógica. O mapeamento de pinos para esse dispositivo depende do DEVICE_ID. Existem 4 entradas digitais, 4 saídas digitais, 1 entrada analógica e 1 saída analógica disponível na placa ESP8266. Portanto, se o seu DEVICE_ID for zero, o vars localizado% IX0.0 para% IX0.3 será ligado às suas 4 entradas digitais. Se o seu DEVICE_ID for 2, o vars localizado para o seu dispositivo seria então% IX2.0 para% IX2.3, e assim por diante, conforme relatado no site oficial do OpenPLC. A figura 4 retrata o mapeamento de pinos, onde n deve ser substituído pelo DEVICE_ID.

 

Mapeamento de pinos do OpenPLC para ESP8266.
Figura 4 - Mapeamento de pinos do OpenPLC para ESP8266.

 

Em se tratando da UniPi e da PiXtend, ambos os hardwares baseados em Raspberry Pi, o procedimento de instalação do OpenPLC é similar ao da Raspberry Pi. Para UniPi, ao término do processo de compilação, o usuário deverá carregar o módulo I2C no Kernel, pois isso permitirá que o OpenPLC se comunique com os periféricos da placa UniPi. Já para a PiXtend, o usuário deverá se certificar que está ativada a interface SPI na plataforma embarcada. Os mapeamentos de pinos do OpenPLC para a Uni Pie e PiXtend são ilustrados conforme as figuras 5 e 6.

 

Mapeamento de pinos do OpenPLC para Uni Pi.
Figura 5 - Mapeamento de pinos do OpenPLC para Uni Pi.
Mapeamento de pinos do OpenPLC para PiXtend.
Figura 6 - Mapeamento de pinos do OpenPLC para PiXtend.

 

O OpenPLC oferece um hardware padrão livre que possa ser acessado através do Kicad. São fornecidos também arquivos pdf contendo os respectivos esquemas elétricos de tal hardware. Esses esquemas elétricos fornecem as ligações de circuitos de comunicação RS485, CPU, USB, proteção, Ethernet, entre outros. Para maiores informações, clique aqui.

 

Conclusão

 

Por ser uma ferramenta totalmente aberta, o OpenPLC possibilita que qualquer pessoa tenha acesso a todos os arquivos e informações relativas ao projeto, o que resulta em uma colaboração significativa para disseminação de conhecimentos voltados principalmente para aplicações industriais que utilizam CLPs. Se comparado a um CLP tradicional, o OpenPLC apresenta componentes relativamente baratos, o que abre muitas portas dentro do cenário de automação.

 

Saiba mais

 

Sistemas Embarcados na Automação Industrial

Introdução ao OPC UA (Open Platform Communications Unified Architecture)

Sistemas Embarcados no controle de máquinas

 

Referências

 

ALVES, T.R. What is OpenPLC?. OpenPLC Project, 2017. Disponível em: http://www.openplcproject.com/. Acesso em novembro de 2017.

 

ALVES, T.R.; BURATTO, M.; SOUZA, F.M.; RODRIGUES, T, V. OpenPLC: An Open Source Alternative to Automation. In IEEE 2014 Global Humanitarian Technology Conference (GHTC 2014), San Jose, CA, 2014, pp. 585-589.

 

JOHN, K.H.; TIEGELKAMP, M. IEC 61131-3: Programming Industrial Automation Systems,” 2nd ed. Springer, 2010 pp.147-168.

 

OPENPLC IS READY FOR HACKING

 

OpenPLC - A Fully Open Source Controller

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Pablo Melo
Tecnólogo em Eletrônica Automotiva pela Fatec Sorocaba. Mestrando em Engenharia Elétrica pela UNESP Sorocaba, com ênfase em Sistemas Mecatrônicos. Desenvolve estudos direcionados para aplicações do protocolo OPC UA voltadas para a Internet das Coisas Industrial, Indústria 4.0 e RAMI 4.0. Ama pesquisar tecnologias sobre sistemas embarcados, sempre acompanhado por uma boa dose de café.

4
Deixe um comentário

avatar
 
2 Comment threads
2 Thread replies
4 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Fábio SouzaLAURIANO ELMIRO DUARTEThiago AlvesPedro Ferreira dos Santos Neto Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
LAURIANO ELMIRO DUARTE
Visitante
LAURIANO ELMIRO DUARTE

poxa thiagão gostei muito da iniciativa, tentei instalar no meu fedora e deu um erro de instalação na hora do ./build.sh
valeu meu mano abração e sucesso aí e muito obrigado pela ajuda a comunidade

Pedro Ferreira dos Santos Neto
Visitante
Pedro Neto

que confusão de nomes, Open PLC é um,a organização internacional formado pelas empresas fabricantes
http://www.plcopen.org/
https://en.wikipedia.org/wiki/PLCopen
deveriam tomar mais cuidado com ambiguidade, so acho

Thiago Alves
Visitante
Thiago Alves

Na verdade o nome dessa organização, como bem se pode ver nos links, é PLCopen, e não OpenPLC. Estas são portanto duas coisas distintas com nomes distintos.

PS: Vou aproveitar para enviar meus agradecimentos ao time do Embarcados por abordar meu projeto aqui. O OpenPLC tem crescido muito nos últimos meses, principalmente na comunidade acadêmica. Isso tem me motivado a desenvolver a nova versão do projeto, o OpenPLC v3. Se quiserem saber mais sobre essa nova versão, consultem o forum do OpenPLC.

Fábio Souza
Visitante

Thiago Amarothiago Amaro, Muito obrigado pelo comentário. deixamos as portas abertas para um post seu sobre a nova versão. Parabéns pelo trabalho. Abraços.