Hola a todos.
Tengo un problema muy extraño que me ha hecho perder varios días. Resulta que no puedo comunicar con un modulo medidor de consumo con un Arduino Uno, R3 por Modbus RTU RS485. Al principio pensé que era mi inexperiencia, pero os comento todo lo que he hecho.
Comunico sin problemas la placa Arduino con un adaptador RS485 con MB-Slave versión 6.2 en el PC, configurando Arduino como maestro. Los parámetros de comunicación son 9600 baudios, 8N1 y el numero de nodo es el 2 en el esclavo.
Desde el PC, con el software Modbus Poll, configurado como master, comunico sin problemas con el medidor de Energía. Hasta aquí, bien.
Pero cuando le pido a la placa de Arduino que comunique con el medidor, es imposible. El medidor no responde.
He analizado la trama con el software de Eltima Serial Port monitor, Y ES LA MISMA.
Me estoy volviendo loco.
El programa que he empleado es el que os muestro
#include <ModbusMaster.h>
#define MAX485_DE 12 //12 en ESP8266
#define MAX485_RE_NEG 13 //13 en ESP8266
ModbusMaster node; //object node for class ModbusMaster
void preTransmission() //Function for setting stste of Pins DE & RE of RS-485
{
digitalWrite(MAX485_RE_NEG, 1);
digitalWrite(MAX485_DE, 1);
}
void postTransmission()
{
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
}
void setup()
{
pinMode(MAX485_RE_NEG, OUTPUT);
pinMode(MAX485_DE, OUTPUT);
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
Serial.begin(9600); //Baud Rate as 115200
Serial.setTimeout(3000);
node.begin(2, Serial); //Slave ID as 1
node.preTransmission(preTransmission); //Callback for configuring RS-485 Transreceiver correctly
node.postTransmission(postTransmission);
}
void loop()
{
uint8_t result;
uint16_t data[16];
result = node.readInputRegisters(0x00, 12);
if (result == node.ku8MBSuccess)
{
Serial.print("Vbatt: ");
Serial.println(node.getResponseBuffer(0x00));
}
else
{
Serial.print("Se ha producido un error ->");
Serial.println(result);
}
delay(3000);
}
Las caracteristicas del medidor de energia (que me ha costado mucho encontrarlas) están PDF para descargar desde : Características medidor DDM18SD
Agradeceré cualquier sugerencia de que puede estar pasando o que hago mal.
Muchas Gracias!!