Dúvidas: Métodos de comunicação a Multi-Arduinos em rede.

Olá,

Estou desenvolvendo um projeto inicialmente para conclusão de curso (TCC) e tenho algumas dúvidas em relação aos métodos de comunicação. Encontrei diversos artigos e tutoriais descrevendo uma comunicação "direta" entre interface e um Arduino, mas não a muito material quando o assunto e a comunicação com diversos Arduinos em rede sendo controlados por um mestre (PC).

Estive olhando a comunicação Modbus RTU RS485 padrão com distância máxima de 1200mt à 9600bps, que para meu tipo de implementação está me parecendo o mais adequado até agora, já que tenho como tenha Automação Residencial. Mas tenho dúvida quando a velocidade desse tipo de rede com o Arduino, pois trabalho com Automação Industrial a algum tempo e esse modo de comunicação aparenta ser lento quando em rede com diversos dispositivos, tendo atrasos consideráveis, tornando a aplicação bastante instável (isso em uma plataforma industrial com equipamentos robustos, e vulneráveis a altas taxas de ruídos). Isso acontece com o Arduino, quando submetido a uma grande rede (levando em consideração a limitação dos 32 dispositivos conectados)? 

Não acredito que eu vá usar tudo isso em rede considerando um Arduino Mega com 54I/O teria que ser uma aplicação extremamente grande, mas é bom ter conhecimento da capacidade do hardware para possíveis expansões no barramento Modbus.   

Também estive procurando sobre os métodos de acesso ao Ethernet Shield, mas o problema aumentou em relação a Multi-Arduinos em rede. Sabendo das limitações de 4 comunicações simultâneas ao Ethernet Shield, minha intenção é acessar e rede, tanto Local como Remoto e ter acesso a todos os Arduinos, em sem muitos atrasos. Estudei um pouco sobre comunicação Socket que me pareceu bastante interessante por se tratar de uma comunicação bidirecional direta e real-time mas isso com um Arduino, alguém já viu isso em uma rede ? se sim, como seria o acesso a cada dispositivo?

Outra forma que vi foi web-server, onde faço um Request para o Arduino mas não em tempo real, teria que criar um ciclo de atualização por Ajax . Problema é como isso fica gerenciado em uma rede?

Em resumo gostaria de ter uma rede rápida e com acessos simultâneos, em que eu pudesse monitorar e controlar cada dispositivo, e ao mesmo tempo receber status de todos eles...se possível obter uma configuração padrão para o Arduino sendo ele apenas um distribuidor I/O recebendo e enviando dados ao mestre (PC) com todas as funções de controle , utilizando os Arduinos apenas como acesso ao meio-físico (aparentemente uma arquitetura PLC e Remota IO). Claro se isso for possível, penso nisso como diminuição de custo em tempo de engenharia, onde tenho um controle centralizado .

Se alguém puder ajudar agradeço, creio que a várias pessoas com essa mesma dificuldade e em duvida de que arquitetura de rede a ser usada. Desde já agradeço.

@Igor

Exibições: 3671

Responder esta

Respostas a este tópico

Bom amigo tambem tou fazendo a mesma coisa.Eu optei por comunicacao modbus pra poder ter uma rede com diversos escravos...adquiri reles, alguns atmegas 328p -o mesmo do Arduino e cis sn75176-drivers  para rs485.Estou usando  o ScadaBR como supervisorio.Com apenas um escravo é tudo uma maravilha tanto pra aplicacao local como na web atraves do servico do dyndns , mas agora e preciso montar a rede e ver a performace com multiplos escravos.

Para o que vc quer eu indicaria uma rede Profinet ou uma comunicaçao com serviodor OPC DA, talves pesquisando vc pode encontrar alguns scada open que ofereça o Profinet(mas acho dificil) se é somente para TCC, vc pode pegar um demo do elipse(eu acho que este tem protocolo de integração com profinet), caso opte pelo OPC DA vc garante varios dispositivos inteligados e comunicando em tempo real, o OPC DA tem no scadabr, mas em compensação vc vai ter que gastar um tempo criando um protocolo de comunicação no arduino (talvez até já exista), outra ideia seria usa o modbus ip (mas ele pode se seriamente afetado pelo ruido do ambiente) se estiver em um ambiente industrial ou coisa parecida.

já que é TCC vc poderia testar uma topologia estrela com rs485(talvez esteja falando besteira),mas como funcionaria, normalmente para comunicaçao rs485 vc manda/recebe o sinal por uma porta rs485 multiplexado, aumentando a concorrência, desta forma vc poderia criar varias portas seriais saindo direto do computador ou equipamento parecido, como vc teria varias portas seriais   cada porta só vai trabalhar com a transmissão de determinado sensor ou equipamento, de forma unica. Eu mesmo estou querendo fazer para ver se funciona.

Leve em consideração que a rede pode ficar concorrida levando em contar aumento de disositivos num unico bus do RS485.

Olá,

Eu trabalho em automação industrial a muitos anos, já trabalhei com muitas redes com diversos protocolos industriais e também já experimentei montar uma rede modbus rtu com arduino e scadabr, com ótimos resultados.

No vídeo abaixo eu mostro uma rede com múltiplos escravos, 3 arduinos e não observei nenhuma instabilidade.

O padrão RS485 é o meio físico dos mais confiáveis que existe, sendo usado em muitos protocolos industriais e comerciais a anos exatamente por ser extremamente robusto, barato e simples de implementar.

Por experiência própria, posso afirmar que quando uma rede destas está apresentando instabilidades geralmente é por deficiências na instalação da mesma, seja por problemas nos cabos, conectores e conexões, ou falta de malha de aterramento, estes são os principais motivos de problemas nestas redes.

É lógico que uma boa configuração dos parâmetros da rede também são fundamentais, pois já vi redes que estavam setadas para taxas maiores que a recomendada para o comprimento do barramento, oque causava instabilidades, mas após as devidas correções se tornou muito estável.

A tendência para o futuro é que as redes ethernet industriais venham a substituir as redes seriais RS485, mas ainda vai levar alguns anos para que os equipamentos ethernet caiam de preço o suficiente para enterrar as redes seriais.

Abraço.

Certo uma aplicação com ModBus parece ser o mais adequado, por ser mais fácil de montar e comunicar, mas no caso não quero usar um interface ScadaBr ou outra plataforma industrial e sim criar uma própria.
Alguém conhece alguma .dll Modbus onde possa começar a parte de comunicação ? A parte Modbus do Arduino é simples e possui bastante material ao respeito.

Minha intenção é trabalhar o software em C#, onde todo o processamento rode em um PC ou raspberry e utilize os arduinos apenas como um distribuidor IO. Sendo que no arduino apenas irá "espelhar" o comando recebido e controlar as saídas.

Tinha me focado bastante na parte do Arduino com Shield Ethernet por estar em um padrão mais avançado e comum em termos de comunicação, mas o gerenciamento de IP na rede se torna complicado, por ter que ficar conectanto e desconectando o device na rede. Acho o processo interessante por conseguir com facilidade controle via rede, mas isso sempre e individual, talvez esteja falando besteira, mas não encontrei nenhum material com uma rede com várias Shields Ethernet.

Minha intenção é desenvolver um gerenciador para rede arduino, com enfileiramento de mensagens do próprio windows. Acredito que vai ser interessante dessa forma. 

tem um sistema supervisorio aberto que trabalha com C e C++ se não me engano chamado PVbrowse

de repente lá vc conseguiria o fia da ninhada.aqui o link http://pvbrowser.de/pvbrowser/index.php , é um sistema bastante interessante de codigo aberto

Estive trabalhando com uma automação,não com arduinos, mas com produtos semelhantes.Um cara aqui da minha cidade fabrica uns módulos para automação.O que ele fazia era criar mais de uma laço de dispositivos,comunicava por rs485 os módulos e se precisasse colocar mais módulos, fazer um outro laço da central incluindo os módulos.Isso melhorava bastante a comunicação.

Estou desenvolvendo um projeto semelhante onde serão 30 detectores com (1 arduinos ethernetshield + sensores + 2reles) cada. 1 arduino mega como central (arduino + ethernetshield + 32 reles).

Onde a central enviaria um pedido a cada Detector por IP, os detectores fariam a leitura e enviariam a central.

Só estou com duvida de todos os Detectores devem ser como WebService ou WebClient.

webservice não, amigo. O termo correto é webserver. Webservice é outra coisa

Teus detectores deverão ser webserver e webclient ao mesmo tempo. Como ele ficará na "escuta", aguardando um comando vindo da central,  a central atuará como webclient que se conectará ao detector que estará atuando como webserver.

Assim que os dados do sensor forem obtidos, o detector deverá enviar os dados pra central, então o detector atuará como webclient que se conectará à central que estará atuando como webserver.

Deu pra entender? Em resumo: webclient se conecta a algum servidor (webserver). O servidor (webserver) aceita conexões de clientes (webclients). Teu projeto prevê comunicação entre as partes em ambos os sentidos. Portanto, as duas pontas (central e detector) deverão ser capazes de funcionar como webclient e webserver simultaneamente.

Olá Igor,

O termo WEB Service é atribuído para os sistemas que oferecem algum "serviço" através da rede TCP/IP, o qual a Internet é baseada. Chamamos de WEB Server, qualquer servidor que atende requisições através da rede TCP/IP, seja ela serviço ou não.

O conceito de WEB Service, foi criado para se interligar diversos tipos de aplicativos que podem ser conectados à rede TCP/IP para troca de informações online síncronas ou assíncronas.

Vamos ao que interessa:

Tentarei responder suas dúvidas, ok?

As redes TCP/IP são super rápidas hoje em dia com os equipamentos disponíveis no mercado se tornando-se uma solução barata.

Os servidores WEB criam uma ou várias Threads para atender cada requisição que receber, ou seja, atendem várias requisições em paralelo.

Estes threads irão gravar em banco de dados ou em algum outro modo de persistência de informação.

O que vai aparecer nas páginas ficará independente do atendimento as requisições, na verdade, o servidor estará também atendendo a requisições dos browsers para apresentar as informações.

O AJAX só é utilizado, basicamente, para atualização de informações da página sem ter que carregar toda a página novamente, muito útil em situação de informações que se alteram em tempo real. Caso contrário, não é necessário ter AJAX implementado.

Caso queira criar um WEB Server, e seja iniciante, recomendo utilizar o XAMPP que irá te facilitar muito pois basta baixar, descompactar e sair usando. Já terá o servidor Apache, com PHP, MySQL e phpMyAdmin, tudo configurando e interligado em poucos minutos.

Boa sorte!!!

  'Eiju

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço