This is the code which i used with Modbusmaster library
#include <ModbusMaster.h>
#define MAX485_DE 2
#define MAX485_RE_NEG 2
// instantiate ModbusMaster object
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);
// Init in receive mode
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
// Modbus communication runs at 19200 baud
Serial.begin(19200);
Serial1.begin(19200, SERIAL_8E1);
// Modbus slave ID 1
node.begin(1, Serial1);
// Callbacks allow us to configure the RS485 transceiver correctly
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}
void loop()
{
uint8_t result;
uint16_t data[6];
// Toggle the coil at address 0x0002 (Manual Load Control)
//result = node.writeSingleCoil(0x0003, state);
//state = !state;
// Read 16 registers starting at 0x3900)
result = node.readHoldingRegisters(133, 30);
if (result == node.ku8MBSuccess)
{
Serial.println("---------------------------------------------");
Serial.print("L - L Voltage:: ");
Serial.println(node.getResponseBuffer(33)/100.0f);
Serial.print("L - N Voltage: ");
Serial.println((node.getResponseBuffer(41)+node.getResponseBuffer(42))/100.0f);
Serial.print("V1 - N Voltage: ");
Serial.println(node.getResponseBuffer(43)/100.0f);
}
delay(1000);
}
When I use this code nothing prints on Serial monitor...
This is the code i used with simplemodbusmaster library
#include <SimpleModbusMaster.h>
#define baud 19200
#define timeout 1000
#define polling 2000 // the scan rate
#define retry_count 10
#define TxEnablePin 2
#define TOTAL_NO_OF_REGISTERS 31
enum
{
PACKET1,
PACKET2,
PACKET3,
PACKET4,
PACKET5,
// PACKET6,
// PACKET7,
// PACKET8,
// PACKET9,
PACKET10,
PACKET11,
PACKET12,
// PACKET13,
// PACKET14,
// PACKET15,
// PACKETn,
TOTAL_NO_OF_PACKETS // leave this last entry
};
Packet packets[TOTAL_NO_OF_PACKETS];
//packetPointer packet1 = &packets[PACKET1];
//packetPointer packet2 = &packets[PACKET2];
// Masters register array
unsigned int regs[TOTAL_NO_OF_REGISTERS];
void setup()
{
// Initialize each packet
Serial.begin(19200);
Serial1.begin(19200);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// modbus_construct(&packets[PACKET1], 1(adres PM710 sampai ke n), READ_INPUT_REGISTERS, 4010(adress registry), 1(jenis data), 10(pengurutan data sampai ke n));
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
modbus_construct(&packets[PACKET1], 1, READ_HOLDING_REGISTERS, 133, 2, 10); //L-N //A8
modbus_construct(&packets[PACKET2], 1, READ_HOLDING_REGISTERS, 0135, 2, 12); //Frekuency //B
modbus_construct(&packets[PACKET3], 1, READ_HOLDING_REGISTERS, 40137, 2, 14); //A-N //C
modbus_construct(&packets[PACKET4], 1, READ_HOLDING_REGISTERS, 40107, 2, 16); //B-N //D
modbus_construct(&packets[PACKET5], 1, READ_HOLDING_REGISTERS, 40117, 2, 18); //C-N //E
//
// modbus_construct(&packets[PACKET6], 2, READ_INPUT_REGISTERS, 3998, 2, 15); //REAL ENERGY //F
// modbus_construct(&packets[PACKET7], 1, READ_INPUT_REGISTERS, 4005, 1, 16); //REAL POWER //G
// modbus_construct(&packets[PACKET8], 1, READ_INPUT_REGISTERS, 4006, 1, 17); //AMP POWER //H
// modbus_construct(&packets[PACKET9], 1, READ_INPUT_REGISTERS, 4007, 1, 18); //KVAR DAYA REAKTIF //I
//
modbus_construct(&packets[PACKET10], 1, READ_HOLDING_REGISTERS, 40143, 2, 20); //A-B //J
modbus_construct(&packets[PACKET11], 1, READ_HOLDING_REGISTERS, 40145, 2, 22); //B-C //K
modbus_construct(&packets[PACKET12], 1, READ_HOLDING_REGISTERS, 40147, 2, 24); //C-A //L
//
// modbus_construct(&packets[PACKET13], 1, READ_INPUT_REGISTERS, 4019, 1, 22); //ARUS A //M
// modbus_construct(&packets[PACKET14], 1, READ_INPUT_REGISTERS, 4020, 1, 23); //ARUS B //N
// modbus_construct(&packets[PACKET15], 1, READ_INPUT_REGISTERS, 4021, 1, 24); //ARUS C //O
//
//modbus_construct(&packets[PACKET2], 3, PRESET_MULTIPLE_REGISTERS, 0, 1, 20);
/*
Valid modbus byte formats are:
SERIAL_8N2: 1 start bit, 8 data bits, 2 stop bits
SERIAL_8E1: 1 start bit, 8 data bits, 1 Even parity bit, 1 stop bit
SERIAL_8O1: 1 start bit, 8 data bits, 1 Odd parity bit, 1 stop bit
*/
// Initialize the Modbus Finite State Machine
/* packet1->id = 2;
packet1->function = READ_HOLDING_REGISTERS;
packet1->address = 0;
packet1->no_of_registers = 3;
packet1->register_array = regs;*/
modbus_configure(&Serial1, baud, SERIAL_8E1, timeout, polling, retry_count, TxEnablePin, packets, TOTAL_NO_OF_PACKETS, regs);
}
void loop()
{
modbus_update();
int A, B, C, D, E, F, G, H, I, J, K, L, M, N, O;
A = regs[10];
B = regs[12];
C = regs[14];
D = regs[16];
E = regs[18];
// F = regs[15];
// G = regs[16];
// H = regs[17];
// I = regs[18];
J = regs[20];
K = regs[22];
L = regs[24];
// M = regs[22];
// N = regs[23];
// O = regs[24];
// n = regs[n];
Serial.print("A = ");
Serial.println(A);
//Serial.println(A / 77.69624);
Serial.print("B = ");
Serial.println(B);
//Serial.println(B / 333.333333);
//
Serial.print("C = ");
Serial.println(C/10);
//
Serial.print("D = ");
Serial.println(D/10);
//
Serial.print("E = ");
Serial.println(E/10);
//
// Serial.print("F = ");
// Serial.println(F);
//
// Serial.print("G = ");
// Serial.println(G);
//
// Serial.print("H = ");
// Serial.println(H);
//
// Serial.print("I = ");
// Serial.println(I);
//
Serial.print("J = ");
Serial.println(J);
//
Serial.print("K = ");
Serial.println(K);
//
Serial.print("L = ");
Serial.println(L);
//
// Serial.print("M = ");
// Serial.println(M);
//
// Serial.print("N = ");
// Serial.println(N);
//
// Serial.print("O = ");
// Serial.println(O);
Serial.println("============================================");
//Voltage2 = regs[12];
//Serial.print("Voltage L-N : ");
//Serial.print(Voltage);
//Serial.println(" V");
//Serial.println(Voltage1);
//Serial.println(Voltage2);
//Serial.println(regs[10]);
//Serial.println(regs[11]);
// Serial.println("DEBUG || OUTPUT");
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Serial.print("requests: ");
// Serial.print(packets[PACKET1].requests);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Serial.print(" || Voltage L-N :");
// Serial.println(Voltage);
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Serial.print(" || Voltage L-N :");
// Serial.print(Voltage/10);
// Serial.println(" Volt");
// Serial.println("=======================================");
// Serial.print(" || Frekuency :");
// Serial.print(F/100);
// Serial.println(" Hz");
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Serial.println(" V");
Serial.print("successful_requests: ");
Serial.println(packets[PACKET1].successful_requests);
Serial.println(packets[PACKET10].successful_requests);
Serial.println(packets[PACKET11].successful_requests);
Serial.println(" || ");
Serial.print("failed_requests: ");
Serial.print(packets[PACKET1].failed_requests);
Serial.println(" || ");
Serial.print("exception_errors: ");
Serial.print(packets[PACKET1].exception_errors);
Serial.println(" || ");
Serial.print("connection: ");
Serial.print(packets[PACKET1].connection);
Serial.println(" || ");
// Serial.println(" ");
delay(1000);
}
pls let me know what is wrong in above two codes