Modbus Publisher Multiple Register Size
-
I recently bought a Publisher for Modbus IP publish-ip-unlimited licence.
Now when trying to feed a third party TCP Modbus Master, I get in trouble.
The master needs to read multiple registers with length 120. That fails. I tried reading multiple registers with length 16, that worked. 32 didn't.
Sadly there is no documentation about a lenght restriction IMHO.
For my project it is really important to be able read 120 registers at once!!! If not implemented in the module, would it be possible getting that included soon?
Anybody who can give advice?
Alex
-
Hi Alex,
Is your third party modbus master reporting errors in the large reads? If you only have a point being published at Holding Register address 0 as a 2 byte data type, then try to read 2 registers starting with Holding Register address 0, it will throw an illegal address for the request trying to read address 1. I wonder if your publisher doesn't have contiguous addresses in the data? Or, if it does, it is less than 32 registers in width (less than 64 bytes, so 16 published as 4 byte data types, 32 as 2, etc.)? I just confirmed I was able to line up 120 registers and read them in a single request. All the points need to be enabled as well.
I can see how it would be nice to introduce a feature to optionally zero-fill registers which are requested but not configured.
-
Hi Phil,
thanks for your reply. To have a feature you mentioned was great! In our project i had to generate several meta points just to be able supply modbus publisher with zeroes.
Concerning the problem mentioned, i have new findings. Initially i did not define the modbus registers linearly corresponding their address. For example i defined
0 lenght 4 ...
64 length 2 ...
4 length 4
8 length 4
...
60 lentgh 4
...Now, they are ordered strictly monotonically increasing corresponding their offset.
Problem solved!Should be documented somewhere maybe?
Alex
-
Hi Alex,
I will bring it up with the team.
I don't think they need to be contiguous in the table, but it's probably the easiest way to verify the spacing of the register offsets for the data types. The import thing is that there are no gaps between registers and that all points are enabled. I will talk to the team about the need to have points enabled, too.
Yeah, we'll be sure to include a note about this behavior in the publisher's documentation on the page in the next release.