Energy Analyzer interfacing via Modbus protocol

Hi,
I am trying interfacing Janitza UMG96S energy analyzer with Data logger. I am facing some issues regarding reading correct data from Modbus address. The device supports RS485 interface only and i am using RS485 to USB converter and MoDBUS poll software to view data on addresses mentioned in analyzer user manual.
The address starts from 200 and ends at 430 approx. The relevant data which i require is available on addresses 200 to 212, 270 to 281 and 416.
Now when i select address range 200 to 220 the modpoll gives correct value.. As soon as include the 270 to 281 addresses along with 200 to 215, the data which was being correctly displayed earlier becomes totally different.
Now if i only choose data range from 270 to 281 modpoll display correct data. This time again if i add 200 to 212 address in address range the data again gets disturb...

I am unable to figure out this problem. Please note i am reading the holding register and Data type U16. Device communication is correctly established...

Kindly share your thoughts on this...
Best Regards
 
So you read (4)0201 through (4)0221 with Function code 03, in one transaction and you get good data in all the registers.

Then, in a separate transaction, you read (4)0271-(4)0282 and you notice that (4)0201 through (4)0221 has changed? Where did you 'put' or move the data from (4)0201 through (4)0221 so that it wouldn't change?
 
Hi@David_2, Let me clarify.
1. In Modpoll software, i select range of modbuss adresses from 200 to 259. It reads data from analyzer correctly.
2. In Modpoll software i select range of modbus addresses from 260 to 320. It reads data from analyzer correctly.
3. In Modpoll software i select range of modbus addresses from 200 to 340. It reads data from analyzer incorrectly. both the 200 to 259 and 260 to 320 range addresses which were giving correct values when reading separately goes incorrect.

Other than Modpoll software, i used the datalogger software of Sungrow logger 1000A (which i want to use permanently to display multiple analyzer outputs), samething is happening. Here i am reading only limited essential addresses of voltage, current, power, frequency, power factor etc. Address 200 to 212, 275 to 282 and 416. The issue is same. I have attached google drive link for some images for your reference.
Link: https://drive.google.com/drive/folders/1EVMxDAHYcYu6y4XQl-RXAzXbCTqkrLBB?usp=drive_link

And regarding this part " Where did you 'put' or move the data from (4)0201 through (4)0221 so that it wouldn't change? ", I check and uncheck the box available on left side on sungrow datalogger dashboard (in Attached images).
In case of Modpoll software, simply selecting the register address range
 
>In Modpoll software i select range of modbus addresses from 200 to 340

That attempts to read 140 registers which exceeds the Modbus maximum limit of registers-per-read-transaction of 125 registers (quantity of 250, 16 bit bytes). Slave/server devices can have their own more limited maximum number

I'm surprised Modpoll attempts the transaction and executes an instruction with an out-of-range value for Quantity-of-registers, or that an exception code isn't the response from the slave.

Limit the read requests to 125 or fewer registers. The meter clearly supports replying with 60 registers.
 
>In Modpoll software i select range of modbus addresses from 200 to 340

That attempts to read 140 registers which exceeds the Modbus maximum limit of registers-per-read-transaction of 125 registers (quantity of 250, 16 bit bytes). Slave/server devices can have their own more limited number

I'm surprised Modpoll attempts the transaction executes an instruction with an out-of-range value for Quantity-of-registers, or that an exception code isn't the response from the slave.

Limit the read requests to 125 or fewer registers. The meter clearly supports replying with 60 registers.
I might have misinterpreted my query somewhere. Even if i select the range of Modbus Addresses in bit and piece like from range 200 to 212, 275 to 281, 416 the results are same.. The read results of the analyzer doesn't change if the modbus address selection range is from 200 to 259.If i add even a single more address i.e., 260, the reads results of all the address (which were correct earlier/realtime) will change. I only want to read data from address 200 to 212 & 275 to 281 & 416. the screen shots i have attached in Google drive, explains the scenario. selecting a single address from range 275 to 281 beside the 200 to 212 modbus addresses changes everything.
 
It's unlikely anyone here will be familiar with the data logger software you're using. Therefore, I recommend you diagnose and troubleshoot this issue using Modbus Poll only, which many users here have used and are familiar with. In addition, Modbus Poll allows you to view and log the communication traffic (Display->Communication...). This will be helpful in determining the exact request and response packets being exchanged between Modbus Poll and your energy analyzer.

Note that the manual for your energy analyzer states "Maximum 120 bytes only can be read out into a block!" on page 51.
https://www.janitza.com/files/downl...96s-version-with-external-power-supply-en.pdf

Therefore, you can only request up to 60 registers in a single request. The issues you're seeing could be caused by exceeding this limitation.

Additionally on that same page in the manual, it states that the energy analyzer supports only function codes 03 (Read holding register) and 16 (Preset multiple registers). It does not support function code 04 (Read input registers). Make sure you're using the correct Function (i.e. "03 Read Holding Registers (4x)) in your Read/Write Definition in Modbus Poll. I also recommend that you review your "Register Type" settings in your data logger configuration.
 
Top