Community Tip - Visit the PTCooler (the community lounge) to get to know your fellow community members and check out some of Dale's Friday Humor posts! X
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
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