Dear TEAM,
I m using ELMEASURE ELECTRICAL METER,I need to take a reading form that meter through RS485 ,
herewith i have enclosed my code and snap shot for what i getting please can any one kindly help me,
bcz i struggle last 30days for this.
i using modbus master.h file
holding register address 40100(starting)
thanks in advance
Mr.PI.
#include <ModbusMaster.h>
#define MAX485_DE 11
#define MAX485_RE_NEG 10
// Generic catch-all implementation.
template <typename T_ty> struct TypeInfo { static const char * name; };
template <typename T_ty> const char * TypeInfo<T_ty>::name = "unknown";
// Handy macro to make querying stuff easier.
#define TYPE_NAME(var) TypeInfo< typeof(var) >::name
// Handy macro to make defining stuff easier.
#define MAKE_TYPE_INFO(type) template <> const char * TypeInfo<type>::name = #type;
//Type-specific implementations.
//MAKE_TYPE_INFO( int16 )
//MAKE_TYPE_INFO( int32 )
//MAKE_TYPE_INFO( uint16 )
//MAKE_TYPE_INFO( uint32 )
//MAKE_TYPE_INFO( float32 )
MAKE_TYPE_INFO( short )
MAKE_TYPE_INFO( int )
MAKE_TYPE_INFO( float )
//MAKE_TYPE_INFO( HEX )
int i;
ModbusMaster node1;
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);
pinMode(MAX485_RE_NEG, OUTPUT);
pinMode(MAX485_DE, OUTPUT);
//Modbus communication runs at 9600 baud
Serial.begin(9600);
node1.begin(1, Serial);
node1.preTransmission(preTransmission);
node1.postTransmission(postTransmission);
}
void loop() {
uint8_t result; // 0-255
//float result;
result = node1.readHoldingRegisters(100, 20);
//Serial.println(result);
if (result == node1.ku8MBSuccess)
{
/* for(i=00;i<21;i++)
{
if(i==20)
{
Serial.println("ENDED");
}
else{*/
Serial.println(result);
Serial.println(node1.getResponseBuffer(0X65));
float res = node1.getResponseBuffer(0X65);
float res1 = *((float*)(node1.getResponseBuffer(0X65)));
Serial.println(res1);
// Serial.println("UPDATE:");
delay(2000);
//}
// Serial.print("V2: ");
// Serial.println(node1.getResponseBuffer(103));
// delay(2000);
// }
/* float res1 = node1.getResponseBuffer(103);
float res2 = *((float*)(node1.getResponseBuffer(103)));
Serial.println(res1);
Serial.print("V3: ");
Serial.println(node1.getResponseBuffer(104));
delay(2000);
float res2 = node1.getResponseBuffer(104);
float res3 = *((float*)(node1.getResponseBuffer(104)));
Serial.println(res1);
Serial.print("V4: ");
Serial.println(node1.getResponseBuffer(105));
delay(2000);
float res3 = node1.getResponseBuffer(105);
float res4 = *((float*)(node1.getResponseBuffer(105)));
Serial.println(res1);
Serial.print("V5: ");
Serial.println(node1.getResponseBuffer(106));
delay(2000);
float res4 = node1.getResponseBuffer(105);
float res5 = *((float*)(node1.getResponseBuffer(106)));
Serial.println(res1);
Serial.print("V6: ");
Serial.println(node1.getResponseBuffer(107));
delay(2000);
float res5 = node1.getResponseBuffer(107);
float res6 = *((float*)(node1.getResponseBuffer(107)));
Serial.println(res1);
Serial.print("V7: ");
Serial.println(node1.getResponseBuffer(108));
delay(2000);
float res6 = node1.getResponseBuffer(108);
float res7 = *((float*)(node1.getResponseBuffer(108)));
Serial.println(res1);
Serial.print("V8: ");
Serial.println(node1.getResponseBuffer(109));
delay(2000);
float res7 = node1.getResponseBuffer(109);
float res8 = *((float*)(node1.getResponseBuffer(109)));
Serial.println(res1);
Serial.print("V9: ");
Serial.println(node1.getResponseBuffer(109));
delay(2000);
float res8 = node1.getResponseBuffer(102);
float res9 = *((float*)(node1.getResponseBuffer(102)));
Serial.println(res1);
Serial.print("V10: ");
Serial.println(node1.getResponseBuffer(110));
delay(2000);
float res9 = node1.getResponseBuffer(110);
float res10 = *((float*)(node1.getResponseBuffer(110)));
Serial.println(res1);
/* Serial.print("V31: ");
Serial.println(node1.getResponseBuffer(100));
delay(2000);
Serial.print("VLN: ");
Serial.println(node1.getResponseBuffer(100));
delay(2000);
Serial.print("V12: ");
Serial.println(node1.getResponseBuffer(100));
delay(2000);
Serial.print("V1: ");
Serial.println(node1.getResponseBuffer(100));
delay(2000);
Serial.print("V2: ");
Serial.println(node1.getResponseBuffer(100));
delay(2000);
Serial.print("V3: ");
Serial.println(node1.getResponseBuffer(100));
delay(2000);
/*Serial.print("A: ");
Serial.println(node.getResponseBuffer(13));
Serial.print("PF: ");
Serial.println(node.getResponseBuffer(07));*/
}
else
Serial.println("Fail");
delay(100);
}
sketch_may16b123.ino (4.75 KB)