AB7072 Some Registers Reporting Zeroes


I am using an AB7072 to communicate between a device using RS485 to a SCADA network. I believe I have all of the networking settings correct, as most of the data is reporting correctly (reading from Input Registers). However there are a few registers that I am trying to read (0x09 to 0x14, labeled ‘Altitude’ in the .cfg file) that are reporting zeroes when they should be constant integer values. My question is, is there something I am doing wrong in this config file? Or is this a correct set up and the problem might be with the slave device?

Thanks for the help!

Lidar12.cfg (16.0 KB)

If the other registers are being read successfully and you are seeing the values, than it’s most likely the slave is sending zeros.

You can confirm this by taking a log of the serial traffic (Click ‘Start Logging’ icon or go to ‘Tools - Start Logging’, let it run for a few seconds then click ‘Stop Logging’).

You should see your Query which will look like this:

x01 - Slave Address
x04 - Function Code
x09 - Data Address of 1st register (in slave)
x0C - Number of Registers

The Response will look like this:

x01- Slave Address
x04 - Function Code
x18 - Number of bytes
xXXXXXX…X - your data (24 bytes)

If the Response starts with x01 x84 then there is an error. (See Exception Codes | Simply Modbus Software)

Thanks Kyle!

I was able to get it figured out by looking at the log file. It looks like the data was getting passed correctly, but it looks like the AB7072 reads registers from the slave device in the order they are programmed into the config file, then writes them to its own memory in that order. So the points list / registry map that the master device sees becomes different than that of the slave device.

Thanks again

Great - glad you were able to figure it out!

Keep in mind that there are options for byte swapping under ‘Response’ > ‘Input Registers’ as well.