Automação – Utilizando Arduino, ScadaBR, Modbus RTU RS485

Estou precisando de ajuda em algumas coisinhas bem bobas (eu nunca fiz nada parecido, não tenho conhecimento nessa área, sou nova com tudo) a respeito de uma automação que estou fazendo no meu estágio.

Eu preciso fazer a automação da leitura de dados de um MMG (Multimedidor de Grandezas, modelo Power Meter 710 da Schneider - como o a figura, com manual do fabricante em: https://www.schneider-electric.com.br/pt/download/document/63230-50...). As ferramentas foram definidas pelo meu chefe, e eu usarei um Arduino (tentei o Leonardo, mas tive problemas com a identificação das portas dele, então agora estou com o UNO), ScadaBR, Modbus RTU com camada física RS485 (o medidor suporta isso). Assim, eu pegarei os dados do Medidor (com fios para RS485) com um Arduino uno usado um módulo RS485, e o ScadaBR vai me mostrar o dados do Arduino, para que eu gere relatórios e veja os gráficos no ScadaBR.

Eu fiz alguns testes inicialmente para ver como funcionava uma leitura de dados do Arduino pelo ScadaBR, como esse: https://www.embarcados.com.br/supervisorio-com-scadabr/ (este então é o úico conhecimento que eu tenho sobre o assunto, fiz esse exemplo para começar).

Minhas dúvidas:

- Qual biblioteca para o Arduino utilizar? Eu preciso das funções 0x03, 0x04, 0x06, 0x10, 0x11 e 0x2B (pois são as funções suportadas pelo medidor POWER METER 710). Até agora estou com idéia de usar a biblioteca ModbusMaster (e suas versões – disponíveis aqui: http://4-20ma.io/ModbusMaster/modules.html ) . Ela tem o que eu preciso. Mas será que tem outra mais simples? Até pq eu não encontrei nenhuma que suporte as funções 0x11 e 0x2B ( essas funções são especiais, ou preciso que atenda elas também?)

- Eu preciso acessar pelo menos 32 registros do medidor (pode ser mais que isso), o que significaria 64bytes. Mas e o ring buffer do Arduino? Como faço pra ele aceitar um numero grande no ring buffer? Quem define isso é a biblioteca? Além da limitação de algumas funções sobre isso, pois pelo que eu li a função 4 por exemplo, consegue ler múltiplos registros de no máximo 54bytes = 29 registros. Essa função também consegue ler registros entre 30001 e 3999 (isso é definido pela biblioteca?) É isso mesmo? Pois segundo meu manual, meus registros estão a partir de 4000 até 4200, olhem a figura aí pra vcs entenderem o que eu estou falando.

- Sobre o offset do ScadaBR, do protocolo Modbus RTU: quando eu for fazer a leitura de dados pelo Arduino, devo considerar que meu registro precisa ser ajustado no offset, ou essa lista de registro do manual do meu medidor já está supondo isso? Por exemplo, o registro do manual é 4076. Como fica ele no ScadaBR? (pq o Modbus RTU tem esse offset né?)

 

Exibições: 4493

Responder esta

Respostas a este tópico

Vou focar mais então nas informações do GitHub

Continuando a pesquisa , encontrei  esse exemplo para selecionar a porta serial do Arduino Mega.

http://forum.arduino.cc/index.php?topic=78445.0

 Exemplo :

Modbus slave device (ID 7) connected on Serial2 

ModbusMaster node(2,7);   //   Create class object using Serial2

https://github.com/4-20ma/ModbusMaster/blob/master/examples/Basic/B...

void setup()
{
// use Serial (port 0); initialize Modbus communication baud rate
Serial.begin(19200);
// communicate with Modbus slave ID 2 over Serial (port 0)
node.begin(2, Serial);
}
Boa noite Jéssica. Qual a necessidade de usar arduino no seu projeto? É meio burrice, digamos assim sobre usar arduino nessa aplicação. Mas vamos la. Primeiro deve ver como configurar o medidor, definir slave, baud de 9600, paridade e outras configurações relacionada a 485. Feito isso você deve ter um shield rs485, antigamente o lab vendia, mas pode ser qualquer outro. Faz toda a ligação necessária, rs485, shield no arduino e usb. Feito isso faz uma aplicação no arduino e iniciativa a com nativa em 9600 de baud e Soft serial com 9600 também. Feito isso, tudo oque vc receber na com nativa vc envia na Soft e tudo que receber na Soft vc envia na com nativa. Quando a com nativa receber dados do scadabr e enviar pela Soft serial, nesse momento deve-se deixar o transciver rs485 em baixa impedância e mesmo após terminar de enviar o dado, eh importante que mantenha em baixa impedância por mais 3 ms, nesse meio tempo você ja deve ter recebido outro dado e aguarda 3ms apartir do envio desse segundo dado. Ficando mais que 3ms sem receber nada na com nativa, você deve deixar em alta impedância o transciver e aguardar a resposta do multimedidor, que soh será transferida da Soft serial para a com nativa. Não se preocupe com tamanho de buffer nesse ponto, tem como configurar isso scadabr. O arduino só vai funcionar como uma ponte e habilitar o transciver rs485 quando necessário. Bem provavel que voce so ira utlizar a funcao 3 ou 4 do protocolo modbus. Estou no celular e nao utilizo arduino, aí tentei de descrever o processo resumidamente.

Desculpe a demora para responder Jucelei.

Pra mim é tudo novo... e eu só estava seguindo o formato que meu supervisor me passou, mas ele não sabe muito do assunto também.

Então o meu Arduino só teria função de ser a ponte entre o ScadaBR e o Medidor? Sem me preocupar com espaço ou memória. Mas eu havia pensado na shield comum, sem usb mesmo, pra conectar no arduino sabe

Acha que é burrice? Qual a diferença usando o USB?

pq tipo, são três medidores sabe

Boa tarde Jéssica.

As coisas são simples, mas se é tudo novo há muitos detalhes que podem dar errado. 

Qual é foco do projeto, apender trabalhar com Arduíno ou automação?

Se for automação, melhor pegar um conversor pronto, conversor USB para RS485 ou Ethernet para RS485. Eu particularmente usaria ethernet, pois USB se começar a da problema é bem chato de resolver, ainda mais se instalar essa rede de comunicação em um ambiente  com ruido, onde uma simples manobra de um contator pode travar a comunicação e você precisar reiniciar a maquina ou desconectar e reconectar o conversor, ainda nessa folia toda pode começar a dar tela azul no sistema operacional. Tenha um foco, é muita coisa e parece que você não tem que possa resolver pra você se o negocio apertar. 

Jucelei, mudei minha estratégia. O foco é automação.

 Não vou mais utilizar o Arduino. Estou com ideia de utilizar um conversor RS485 - USB, conectar direto em um PC, e assim acessar os dados do Medidor. 

Daí eu não teria o Arduino. O que acontece, usando o conversor, eu só precisaria de um programa/plataforma, para tratar os dados antes do ScadaBR (eu acredito que seja assim, irei pesquisar sobre).

Vc acha que Ethernet para esse caso é melhor? Pois eu preciso realmente que seja robusto e eficiente. No entanto, eu não sei muito sobre.  Meu cabo (medidor até o PC) será bem pequeno, quero deixar o mais próximo possível. Então não sei se o Ethernet ainda seria a melhor opção para este caso. A sala onde ficaria também é de acesso reduzido de pessoas.

Sim sim, é muita coisa. Mas estou bem empolgada para correr atrás.. espero que continue assim haha..

Muito obrigada pela ajuda!

Bom dia Jéssica, 

Conseguiu fazer a conexão ARDUINO => RS-485 => POWER METER 710 ?

Instalou a biblioteca MODBUS ? Já consegue dar comandos ?

Mudei a estratégia agora. Não vou mais utilizar o Arduino. Estou com ideia de utilizar um conversor RS485 - USB, conectar direto em um PC, e assim acessar os dados do Medidor. 

Daí eu não teria o Arduino. O que acontece, usando o conversor, eu só precisaria de um programa/plataforma, para tratar os dados antes do ScadaBR (eu acredito que seja assim, irei pesquisar sobre)

OK.

Muito obrigada pela ajuda :)

Boa tarde J,

olha que coincidência, encontrei um tópico  igualzinho ao seu. De um usuário chamado Samuel.

http://forum.scadabr.com.br/t/automacao-da-leitura-do-medidor-de-en...

Lá deve ter a solução pra sua dificuldade.

RV

Eu acho que o FarmSid participa também no Lab de Garagem. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço