TUTORIAL: Dashboard com dados de uma CPU S7 utilizando comunicação OPC UA


Olá a todos, primeira postagem de 2019, é um tutorial que mostra a comunicação simples, sem considerar aspectos de segurança e login entre uma CPU Siemens S7 e uma plataforma IoT utilizando o protocolo OPC UA e Node-RED. Para isso, os passos são:

1 – Configuração da CPU como OPC UA Server;
2 – Utilização do Node-RED como OPC UA Client;
3 – Geração de UI (User Interface) para exibição dos dados em tempo real;
4 – Log das informações em arquivo .csv (comma separated values).


Neste exemplo utilizei uma CPU Siemens S7. Nesta CPU criei alguns blocos FB simples para gerar sinais nos formatos onda dente de serra, senoide e onda quadrada. Apenas para ilustração, segue a programação do bloco gerador do sinal dente de serra:

   Para exibição no computador, o valor gerado é dado pela tag %MW12 “denteDeSerraValue”, que é o “Current Value” do bloco CTU (counter up), que é um contador simples para valores crescentes.
         Com os geradores de sinal funcionando, o próximo passo é configurar a CPU S7 para enviar sinais via OPC UA. Para isso, basta acessar a opção “Device Configuration” da CPU e ativar o uso do server OPC UA. Simples assim! 


            Em seguida, configurar o “flow” Node-RED para leitura dos dados da CPU. Como já utilizei anteriormente, o Node-RED é uma ferramenta de programação para conectar dispositivos de hardware, APIs e serviços online de maneiras novas, interessantes e bastante simples. É uma ferramenta bastante utilizada para IoT disponível para download através da página oficial: https://nodered.org. Nesta página é possível encontrar as instruções para instalação, documentação, exemplos de “flows” e muito mais.

            O programa para comunicação e exibição dos dados tem a seguinte cara:


          O que este “flow” faz é enviar um endereço para o nó OPC UA Client, obter uma resposta e fazer um log das informações em um dashboard e também em um arquivo .csv.
O nó inject foi programado conforme abaixo, onde pode-se observar que o endereço OPC UA foi colocado no tópico da mensagem, cujo payload é uma “string” sem valor algum. 


O nó OPC UA Client foi programado conforme abaixo, onde pode-se observar o endereço definido na CPU. É importante que o PING entre a plataforma rodando Node-RED e a CPU esteja ocorrendo sem problemas. Na ação, definir o modo “SUBESCRIBE” para passar a receber as informações da CPU. O intervalo de tempo, defini como a cada 1 segundo.


            Para gerar os gráficos, segue nó simples do módulo dashboard.


            Ao realizar o “deploy”, injetar os valores dos três gráficos e habilitar a janela de debug, é possível verificar o nó OPC UA cliente com status “active subscribed” que nos informa que o node-RED está recebendo as informações da CPU. Na aba debug é possível verificar os valores sendo lindo e atualizados a cada segundo, conforme abaixo:

           Com estas informações é possível obter o gráfico abaixo, que mostra em tempo real o valor da tag %MW12 “denteDeSerraValue” configurada no CLP. 


Para salvar as informações lidas no CLP, utilizei um nó para salvar as informações em um arquivo no formato csv (comma separated values) que podem facilmente ser utilizados posteriormente.
Para que os valores possam ser utilizados posteriormente, achei útil colocar a data do registro, para isso criei um script simples em javascript. O arquivo csv então possui a estrutura: <data>, <valor>. No “file node”, configurei apenas o caminho onde gostaria de salvar as informações e o nome do arquivo.


          No arquivo gerado, cada valor salvo vem acompanhado da data do registro.


        O resultado final ficou:


      É isso aí, espero que seja útil e tenham gostado. Estou sempre aberta para compartilhar ideias e conhecimentos sobre indústria 4.0, IoT e tecnologia de forma geral, pois juntos vamos mais longe sempre! Até a próxima e obrigada pela atenção!

Comentários

Postar um comentário

Postagens mais visitadas deste blog

Como utilizar Tag Prefix WinCC Professional

TUTORIAL: Criando WinCC Tags a partir de documentos de texto utilizando script em Python

Utilizando interfaces, inversão de controle e injeção de dependências em programação - Um exemplo em C#