i have face issue in this project please someone help me .here the code of it
#include
#include
#define MAX485_DE 2
#define MAX485_RE 3
#define SOFT_RX 10 // SoftwareSerial RX pin
#define SOFT_TX 11 // SoftwareSerial TX pin
// Instantiate ModbusMaster and SoftwareSerial objects
ModbusMaster node;
SoftwareSerial modbusSerial(SOFT_RX, SOFT_TX);
void preTransmission() {
digitalWrite(MAX485_DE, HIGH);
digitalWrite(MAX485_RE, HIGH);
}
void postTransmission() {
digitalWrite(MAX485_DE, LOW);
digitalWrite(MAX485_RE, LOW);
}
void setup() {
// Start the software serial port
modbusSerial.begin(19200);
// Initialize Modbus communication over SoftwareSerial
node.begin(modbusSerial);
// Set up transmission control pins
pinMode(MAX485_DE, OUTPUT);
pinMode(MAX485_RE, OUTPUT);
digitalWrite(MAX485_DE, LOW);
digitalWrite(MAX485_RE, LOW);
// Callbacks to control transmission
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
// Start the default serial port for debugging
Serial.begin(19200);
}
void loop() {
uint8_t result;
uint16_t data[2];
// Read Power (register 3003)
result = node.readInputRegisters(1,3003, 2); // Starting at register 3003, reading 2 registers
if (result == node.ku8MBSuccess) {
data[0] = node.getResponseBuffer(0);
data[1] = node.getResponseBuffer(1);
float power = convertToFloat(data[0], data[1]);
Serial.print("Power: ");
Serial.println(power);
} else {
Serial.print("Failed to read power, error: ");
Serial.println(result, HEX);
}
// Read Power Factor (register 3007)
result = node.readInputRegisters(1,3007, 2); // Starting at register 3007, reading 2 registers
if (result == node.ku8MBSuccess) {
data[0] = node.getResponseBuffer(0);
data[1] = node.getResponseBuffer(1);
float powerFactor = convertToFloat(data[0], data[1]);
Serial.print("Power Factor: ");
Serial.println(powerFactor);
} else {
Serial.print("Failed to read power factor, error: ");
Serial.println(result, HEX);
}
delay(1000);
}
float convertToFloat(uint16_t highWord, uint16_t lowWord) {
uint32_t combined = (uint32_t)highWord << 16 | lowWord;
return ((float)&combined);
}
//
EM1200 Series SE 6.0.1.9 ENG.zip (6.5 MB)
Test5_EM1200.ino (2.1 KB)
output:
Failed to read power, error: E2
Failed to read power factor, error: E2
please guide me
