Modbus IP - sensor SCT013-000

Boa noite, estou desenvolvendo um TCC utilizando ScadaBR, ligando o SCT013-000 em uma placa Arduino UNO, sou leigo na programacao… Gostaria de uma ajudar adaptar o codigo abaixo para comunicar via MODBUS IP

#include “EmonLib.h”
EnergyMonitor SCT013;
int pinSCT = A0; //Pino analógico conectado ao SCT-013
int tensao = 127;
int potencia;
void setup()
{
SCT013.current(pinSCT, 6.0606);
Serial.begin(9600);
}
void loop()
{
double Irms = SCT013.calcIrms(1480); // Calcula o valor da Corrente

potencia = Irms * tensao;          // Calcula o valor da Potencia Instantanea    
Serial.print("Corrente = ");
Serial.print(Irms);
Serial.println(" A");

Serial.print("Potencia = ");
Serial.print(potencia);
Serial.println(" W");

delay(500);
Serial.print(".");
delay(500);
Serial.print(".");
delay(500);
Serial.println(".");
delay(500);

}

Bom dia,

Por coincidência, meu TCC também envolve o uso do Arduino com o SCT-013 (exceto pela parte do ScadaBR). Pelo que estou vendo no seu código, você não incluiu nenhuma biblioteca de comunicação Ethernet/WiFi. O primeiro passo para usar o Modbus TCP/IP é ter uma placa/shield que permita conectar o Arduino à internet. Se não tiver, também é possível comunicar o Arduino com o ScadaBR usando o Modbus Serial.

Quanto a adaptar o código, creio que o primeiro passo seja remover todas as linhas de Serial.print para trabalhar apenas usando as variáveis, e posteriormente transmiti-las por Modbus. Confesso que nunca usei Modbus no Arduino, mas caso precise de ajuda com o código eu posso lhe auxiliar.

Bom tarde Celson,

Desculpe a falta de informações. Estou utilizando uma Ethernet Shield. Adicionei o Data Source, porem o valor fica travado.

Segue abaixo o código feito algumas alterações.

#include “EmonLib.h”
#include<SPI.h> //BIBLIOTECA PARA COMUNICAÇÃO COM PERIFÉRICOS
#include<Ethernet.h> //BIBLIOTECA PARA COMUNICAÇÃO VIA ETHERNET
#include “MgsModbus.h”//BIBLIOTECA QUE REALIZA A COMUNICAÇÃO MODBUS TCP/IP DO ARDUINO

MgsModbus Mb;
EnergyMonitor SCT013;

byte mac[]= {0x90, 0xA2, 0x0A, 0x00, 0x51, 0x06} ;
IPAddress ip(192, 168, 1, 150); //ENDEREÇAMENTO DE IP FIXO AO ARDUINO
IPAddress gateway(192, 168, 1, 1); //DEFINE O GATEWAY PADRÃO
IPAddress subnet(255, 255, 255, 0); //DEFINE A MÁSCARA DE REDE

int pinSCT = A1; //Pino analógico conectado ao SCT-013
int tensao = 127;
int potencia;
void setup()
{
SCT013.current(pinSCT, 6.0606);
Serial.begin(9600);
}
void loop()
{
double Irms = SCT013.calcIrms(1480); // Calcula o valor da Corrente

Mb.MbsRun(); //REALIZA A ATUALIZAÇÃO DOS REGISTRADORES PARA COMUNICAÇÃO MODBUS TCP/IP
Mb.MbData[0]=Irms; //REALIZA O ENVIO DO VALOR DA CORRENTE VIA REDE

potencia = Irms * tensao; // Calcula o valor da Potencia Instantanea
Serial.print(“Corrente = “);
Serial.print(Irms);
Serial.println(” A”);

Serial.print(“Potencia = “);
Serial.print(potencia);
Serial.println(” W”);

delay(500);
Serial.print(".");
delay(500);
Serial.print(".");
delay(500);
Serial.println(".");
delay(500);
}