cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Your Friends List is a way to easily have access to the community members that you interact with the most! X

How do Kepware Block Size Internal Registers affect the number of tags that are read?

Solar_IT
5-Regular Member

How do Kepware Block Size Internal Registers affect the number of tags that are read?

I'm new here and starting to work with Kepware.

For this new site, in the Properties of the RTAC device, if we leave the Block Sizes, Internal Registers at the default setting of 32, the last 11 tags show "Unknown" Value in the Quick Client. If we change the setting to 16, there are 3 Unknown. At 8 there are 3 Unknown, but 9 there are 4. I've tried several other Register numbers and the Unknown tags varies up and down, with no discernible pattern.

 

We just can't determine the logic behind what is set in Internal Registers and how many tags show an Unknown value. We currently have the setting at 1 and it's showing all the tags.

 

Anyone know how to properly determine what the Internal Registers should be?

I'm attaching 4 screenshots showing the Registers setting and the Tags that are Unknown.

 

Thanks!

Mike

 

 

1 REPLY 1
bmacri
5-Regular Member
(To:Solar_IT)

Hi Mike,

 

Kepware takes the memory address and breaks them into blocks based on that Block Size value.  For example, if I am connecting to a Modbus device and I have tags with address 40001 through 40100 with a block size of 10, Kepware will read tags 40001-400010 in one request, 40011-4020 in another request and so on.  Under the covers Kepware says from the starting address of 40001 read 10 bytes.

 

The problem you are running into is the controller only has a limited amount of memory for whatever address type you are asking for.  For example, if the controller has 200 bytes allocated and you want to read all of that memory, you will need to have a block size that evenly goes into that amount.  If you have a block size of 120, Kepware will send these requests:

Starting from address 0 read 120 bytes.

Starting from address 121 read 120 bytes.

The first request will be fine but the second request will fail because the controller only has 200 bytes allocated and 121+120 > 200.  If your last request goes over the max then that will fail and the tags in that block will have bad quality.  That's why the number of tags with bad quality changes based on the block size value.

 

To solve this either allocate more memory in the controller for that address type (how to do this depends on the channel and device model so I can't be more specific) or figure out what the memory range is and pick a block size that goes into it evenly.

 

I hope this helps.

 

Thanks!

-Ben Macri

Top Tags