Shield ethernet +arduino+scadaBR

Preciso de ajuda para integrar o Scada ao arduino, verifiquei várias dicas no fórum e outros, e não consigo fazer funcionar. Tentei Modbus IP, através do shield ethernet e não tenho certeza de estar configurando certo o scadaBR, o arduino com shield ethernet está funcionando normal via teste no browser, consigo testar temperatura, acender leds, mais gostaria de utilizar o scada como supervisório de uma pequena rede.

Tentei ligar apenas o arduino via serial, utilizando o modbus serial, e também não deu certo.

Alguém pode me ajudar, com algum tutorial, ou algo do tipo.

Obrigado.

Olá,

Você escreveu sua própria implementação Modbus IP para Arduino?
Consegue utilizar outra ferramenta de Modbus poll para verificar o seu trabalho?

Caso seja possível utilizar a inteface serial, temos bastante documentação para utilização da biblioteca do jpmzometa
https://sites.google.com/site/jpmzometa/

Eu não tenho experiência com a implementação do ModbusIP com o arduino, mas você deve achar alguma solução nas comunidades.

De qualquer forma a dica clássica prevalece - método Jack - vamos por parte =]
Separe e teste sistemas menores que validem cada camada de comunicação independentemente. E boa sorte!

Galera,
Pra não ficar criando muito tópico, resolvi postar minha dúvida aqui que também é Sobre Arduino + ethernet shield + Scadabr

Estou tentando enviar os dados da placa arduino para o SCADABR via Data source Receptor HTTP. Porém estou testando os códigos no arduino e nenhum está passando os dados para o SCADABR.

Alguém que já tenha testado ou que tenha uma idéia e puder me passar um código que funcionou e puder testar aqui.
Muito grato.

Ola
O que voce fez foi usar uma placa shield ethernet ja com a pilha TCP/IP que se comunica com o arduino, pelo que eu sei o shield ethernet se comunica por SPI e nao por serial(UART).
Existe duas coisas que voce precisa ver:
Deve mudar o envio e recebimento de dados da biblioteca jpmzometa de serial para SPI
Como o PC “ve” a porta de comunicacao da placa shield ethernet. Como uma porta serial virtual ou uma conexao de rede?

o primeiro passo que eu fiz, foi testar o exemplo básico do “Webclient” do arduino. Este código é de um Webclient que manda um GET para o servidor do google com um comando para pesquisar algo no google e retornar a pesquisa na porta serial do arduino.

Pra fazer isso eu tenho a Placa arduino + a placa ethernet shield conectada a rede.

Exemplo:

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {192,168,1,100};
byte gateway[] = { 192,168,1,1 };
byte subnet[] = { 255, 255, 255, 0 };
byte server[] = { 74,125,234,176 }; /

EthernetClient client;

void setup() {
// start the serial library:
Serial.begin(9600);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println(“Failed to configure Ethernet using DHCP”);
// no point in carrying on, so do nothing forevermore:
for(;:wink:
;
}
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println(“connecting…”);

// if you get a connection, report back via serial:
if (client.connect(server, 80)) {
Serial.println(“connected”);
// Make a HTTP request:
client.println(“GET /search?q=arduino HTTP/1.0”);
client.println();
}
else {
// kf you didn’t get a connection to the server:
Serial.println(“connection failed”);
}
}

void loop()
{
// if there are incoming bytes available
// from the server, read them and print them:
if (client.available()) {
char c = client.read();
Serial.print©;
}

// if the server’s disconnected, stop the client:
if (!client.connected()) {
Serial.println();
Serial.println(“disconnecting.”);
client.stop();

// do nothing forevermore:
for(;;)
  ;

}
}

Só que este código está retornando falha pra mim. Aparece no Serial monitor que houve falha na conexão.
Se eu conseguisse fazer este exemplo básico eu conseguiria mandar os dados para o receptor http do SCADABR

Alguém poderia ajudar??

grato!

Andrews, fiz um teste semelhante ao seu, usei o exemplo de webserver do arduino, configurei o ip para minha rede, e alterei o mac do exemplo para o do shield ethernet. Testando no browser funcionou normal.

Estou tentando desenvolver uma aplicação de verificação de temperatura com acesso web, e que possa supervisionar via scadaBR. O problema está na hora de juntar o arduino com o scada.

Rafael, não sei se estou ligando certo, estou com o cabo usb do arduino conectado no pc, e um cabo de rede do shield também, quando vou testar uma aplicação, tenho que usar a serial, no meu caso está reconhecendio como COM16.

jptgomes257319, Eu também consigo botar o arduino para funcionar como Webserver. Só que não consigo botar pra funcionar como webclient. Caso eu conseguisse colocar pra funcionar como webclient seria fácil. É só mandar o valor da variável pela URL e pegar pelo recuperador de url do SCADABR. O meu projeto é praticamente igual o seu. Eu também quero verificar uma variavel, no caso é a potência consumida numa rede elétrica e com acesso a rede, e supervisionar via SCADABR.

Se você descobrir uma forma de fazer funcionar o arduino como webclient favor, me fale. Pois aí é facil, é só usar o método GET para enviar a variavel na URL e recuperar a variavel no recuperador http do SCADABR. Aí o resto é tranquilo de fazer!!

Boa noite senhores,

A implementação do protocolo ModbusTCP no Arduino fica muito limitada a capacidade de memória do microcontrolador. Existem pequenas implementações do protocolo Modbus TCP Slave (Data Server) para Arduino (http://code.google.com/p/mudbus/), mas para o caso que estão discutindo seria necessário a implementação do protocolo Modbus TCP Master (Data Client). O link abaixo da uma boa noção dos requisitos necessários para implementação do protocolo.

Um boa solução seria combinar utilizar o RaspberryPI que possuim implementação completa do protocolo ModbusTCP em Python (http://code.google.com/p/pymodbus/). Infelizmente como este hardware foi lançado recentemente é muito dificil de conseguir no mercado.

Célio

Pessoal segue o http://LinkDuino.com, com ele você pode controlar vários dispositivos e sensores remotamente em tempo real. O LinkDuino é um webservice free para Arduino. É possível também interligar vários Arduinos via internet.