Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Modbus Communication between EATON Power Meter and Accuenergy Data Acquisition Server 3

Status
Not open for further replies.

Gbawn

Electrical
Jan 12, 2021
15
Hi All,

I am using an Accuenergy Data Acquisition Server ( to log data from a number of power meters. Each of the power meters communicates with the Accuenergy via Modbus RTU. I am having trouble getting the Accuenergy to poll data from an EATON IQ100 meter. A snapshot of the Modus Map for the EATON Meter is below. Theses are the three parameters that I am trying to poll.

image_ngorvi.png


I am new to Modbus (I'm an electrician) and I think I might be setting up the Modbus template wrong. In setting up the template the Acculink logger. The UI requires the following:

image_pwijja.png


For Function, I select "Read_Holding REGISTERS" As I believe the power meter Modbus map uses Holding Registers only. I then enter 0383 as the starting address and in "Count", I enter 6. The UI then asks for the following:
image_rugzph.png


To read "Watts, 3-Ph total" i enter the address 0383 and in multiplier the number 1. Does this seem correct so far? Unfortunately I can'f seem to make it work... I have also attached the full modbus map for the EATON meter in case I am missing somethig.
 
Replies continue below

Recommended for you

First, do you have the devices communicating? Modbus ID, Baud rates, parity, IP addresses, etc. The count portion would be if you want a number of sequential registers read in a batch.

Modbus can drive you crazy at first. Understand this, although it is a "standard", not everyone follow the standard the same way. Ex: vendor #1 starts first register at 0, vender #2 starts at 1. This is pretty common, your registers are offset by 1.

Last, I copied this from the net, but helpful:

"Modbus Register Addressing



Modbus registers by definition are associated with a function, and an offset within that function. The various functions define certain types of registers (bits, data registers, etc). Some registers are considered read-only and some may be written to. There are separate functions for reading the various register types, writing the various types, as well as ancillary diagnostic functions. The two common (16-bit) data register types are commonly known as “Holding Registers” and “Input Registers” (function 03 and function 04 respectively).



The specific register within the function is referenced by an offset (starting at 0). This is the actual data which is transmitted during the data query. At some point, certain PLC manufacturers starting using a “3xxxx” or “4xxxx” reference designation in an attempt to provide an absolute address to the register (ie: which would reference both the function and the register). Note however, that it is counter-intuitive since the “3x” references function 04 and the “4x” references function 03, which furthers confusion.



To add more confusion to the scenario, some device manufacturers start their “4xxxx” references at 40001, and some start at 40000. The starting register corresponds to offset “0” within the given function. It is not always evident which reference a manufacturer uses, and it is best to clearly read the documentation to attempt to gain understanding.



The three addressing methodologies are as follows:



Modbus “Standard”

4xxxx (base 1)

4xxxx (base 0)

Function 3, Offset 0

40001

40000

Function 3, Offset 1

40002

40001



It is imperative to understand which addressing methodology is being used by the system so that the correct registers are accessed. This is especially important in the case of 32-bit registers because an “out-by-one” situation (where the wrong register offset is read by one placement) can cause corrupt data being read.

"
 
Hi,

I am able to communicate with the power meter if I connect it directly to a laptop and run the ICC Modbus master tool. So I don't think there is anything wrong with the serial link. I just can't get the Accuenergy Data Acquisition Server to talk to the meter. It's definitely something with the Accuenergy that is not correct.

Are you suggesting that I should try using 40383 or 400383 for the address? Rather than entering 0383.

Thanks for your help.

 
Gbawn,

You can't add hex 0383 to decimal 40000 like that. The mix of relative addresses and absolute addresses used by various manufacturers is confusing enough without throwing hex and decimal into the mix. I wish everyone did it the same way. I'll try to help, though I'm not sure that my advice will work without the devices in front of me to play with.

Eaton shows you the decimal relative addresses in the table. They have an absolute decimal starting location of 40000 for those meters, and there is a hexadecimal address offset of -1 because the hex addressing in their table begins at 0 which corresponds to the decimal location of 1. This means the addresses in the table actually begin at absolute hex starting location 9C40, which corresponds to relative hex location 0. This means that if you want the absolute hex address (which I think is what the AcuLink wants), you add 40000 to the relative decimal address location shown in the table, subtract 1, then convert the result to hex. I'm using the Windows 10 calculator set up in programmer mode to do this. Alternatively, you could also just select HEX (blue box shows up next to HEX), enter 9C40, then add the hex value shown in the table to get the result.

For example, per their manual, the meter serial number is shown in the table at relative decimal address range 9-16 (hex 0008-000F - note the hex address starting location is 1 less than the decimal address). This means the serial number starts at absolute decimal addresses 40009, which I then subtract 1 from to get 40008. I make sure decimal is selected (blue box next to DEC), then enter 40008 decimal into the calculator to find the absolute hex address 9C48 is where the serial number starts. Alternatively, I make sure HEX is selected, then enter 9C40 and add 8 in the calculator to find the absolute hex address 9C48 is where the serial number starts.

This means that the memory block for power readings you're looking at starts at 40900, so subtracting 1 and converting the resulting 40899 in the calculator gives me 9FC3 hex as the starting hex address for the block. Alternatively, enter hex mode in a calculator, enter 9C40, then add 383. You'll get 9FC3 that way, too. Try that as the starting address of the block you're configuring in your AcuLink.

When you do get data, if it doesn't make sense you may need to swap the byte order, as Eaton's documentation says that those registers are in IEEE 32-bit float representation where the lower addressed register is the higher order half.

Finally, you may have to try some of the other registers in their Modbus map that stores power readings if the registers you've selected don't give you the results you expect.

Good luck.

xnuke
"Live and act within the limit of your knowledge and keep expanding it to the limit of your life." Ayn Rand, Atlas Shrugged.
Please see FAQ731-376 for tips on how to make the best use of Eng-Tips.
 
Hi xnuke,

Thanks for that. So if I use 9FC3 as the stating address and I enter the count as 6. Does that mean that the "Watts, 3-Ph total" address should be 9FC3?
 
Gbawn,

It's difficult for me to determine if this is a comm or register related issue from your description. You mention ICC Master tool - is that part of the Accuenergy SW suite or a 3rd party tool? Just because a protocol sniffer sees things doen not necessarily mean your device is seeing things.

From the Accuenergy manual, have you verified:

"After the device is added, it can be found in the Modbus Devices pages. A device that is successfully connected and communicating with the gateway will have display a green ON status
under the status column. Whiles a device that is offline will display a red OFF warning symbol
under the status menu."

If this is not happy, nothing else is going to work. If it's a register based issue, one thing to try if you are hunting for the correct area is to choose a register (assuming meters are on line and power system running), that you know won't change much and you can recognize the value. Frequency is pretty stable, so if you are communicating and just can't find the values you are looking for, try polling the frequency register. If you get that right, then there may be an "A Ha" experience finding the offset, MSB/LSB, etc.
 
xnuke is a Modbus Pro, I can tell.

You should probably start by trying to extract a single register from your device. Then you know the communication is working and can tell if you are getting the data you expect.

Brad Waybright

The more you know, the more you know you don't know.
 
This is not an addressing issue (with the exception of Holding vs Input registers).

The first column in the first graphic in the first post provide both the zero-base hexadecimal address and the corresponding one-based decimal address in the 2nd column, 0x0383 and (4)00900 [6 digit addressing] or (4)0900 [5 digit addressing].

The master in the 2nd graphic is requesting zero-based hex addressing "Start: Block starting address in hexadecimal." So the hex starting address 0383 wins.

According the threads on other fora, the OP claims to have done that.


In other fora threads, outstanding issues have been revealed as:

1. The provided map does not actually say "Holding Registers", anywhere that I could find. Some meters use the Input Registers (3xxxx) for this kind of read-only data.

2. This is supposedly Modbus RTU over RS-485, but a screen shot of something showed an RS-232 connection. Is it RS-485 or RS-232?

3. A screen shot showed a Baud rate showed 9600, a different screen shot showed a baud rate 57.6K.
What's baud rate?

4. A screen shot showed a slave node ID as 2, but queries regarding whether the slave node ID was the same on both ends have gone unanswered.

5. A query regarding the relationship of the ICC Modbus Master tool and its serial port vs the datalogger serial has gone unanswered.

Lots of hopping around on different fora, not a lot of answers.

The OP needs to speak up.
 
Hi All,

Thanks for all the responses. Things me quickly on here...Some of them came in late last night and I only got back on site this morning, at which point I was able to make some progress with the meter. Following the instructions from XNUKE above I have been able to read data from the meter using the Acculink. AS i suspected it seems like the problem was to do with the addressing in the Acculink. Using the starting address as 9FC3 seems to work when reading "Watts, 3-Ph total" I'm still not sure if the data I'm getting is sensible but at least I can now communicate with the meter and the Acculink is logging data. I will do some experimenting and might try reversing the Byte order as suggested by xnuke. I will follow up if I have trouble.

danw2 I appreciate your responses as well. Sorry If I was a bit slow getting back to your questions. I had a lot going on and I was focused on the posts that seemed to be offering the most relevant advice, like the one from xnuke above. I apologize if the image on the control.com forum was misleading. The image shows the default EATON meter settings. The actual settings are correct i.e RS485 and Baud rate 9600 which I did confirm in one of my other posts on that forum. I was confident that the problem wasn't to do with the meter settings or the serial link. I had already checked those things multiple times and had managed to connect to the meter over the RS485 link using a laptop running the Modbus Master Tool. Sorry for "hopping" around on multiple forums.

Thanks for your help.
 
>they have an absolute decimal starting location of 40000 for those meters

Imagine not including little tidbit in the header of the map.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor