I was trying to extract data from a multi-function meter with RS485 connectivity and I am using Arduino as master, Arduino Uno and multi-function meter are connected via MAX485 module.
I have tried some code but it returns an E2 error which means communication error.
Kindly explain me the program and help me to solve it.
#include <ModbusMaster.h>
#define MAX485_DE 3
#define MAX485_RE_NEG 2
ModbusMaster node;
void preTransmission()
{
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);
node.begin(1,Serial);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}
void loop()
{
uint8_t resultMain;
resultMain = node.readHoldingRegisters(0x0100,6);
Serial.print(resultMain,HEX);
if (resultMain == node.ku8MBSuccess)
{
Serial.print(resultMain);
Serial.print(node.getResponseBuffer(0x32));
}
delay(1000);
}
node.begin(1,Serial);where1appears to be the modbus slave ID. Is that in fact the ID of your meter? – timemage Dec 29 '20 at 15:14node.begin(1, Serial)to something likenode.begin(1, Serial2). Next, make sure your hardware connections are correct; in addition to the 2 RS485 connections (A and B), there MUST also be a common GND connection between your Arduino and the meter. Verify your connections by using the RS485 connection to send data between 2 Arduinos, without the Modbus layer. Just send strings back and forth. – SoreDakeNoKoto Dec 30 '20 at 09:40