Consecutive registers vs. shared registers across projects


Thread Starter


Today at the office we have been discussing what is the best approach for defining our own modbus registers.

On one hand we would like to use the same modbus registers for the same parameters across projects. That way we can use general master software to request the same parameters from different types of slaves. Therefore we plan to define the modbus registers we use along with their associated parameters in a central document, which is common for all projects.

On the other hand, for reasons of efficiency we would also like our master applications to be able to request a batch of modbus registers in one query and not request only one register in each query.

However, if we use the same modbus registers for the same parameters across projects, we won't be able to achieve register consecutiveness.

Similarly, if we define the needed registers consecutively for each project, we won't be able to use the same registers for the same parameters across projects.

Since we can't have it both ways, I would like to ask which of the two above mentioned alternatives are common practice.

Thanks in advance.


Lynn August Linse

Actually, you can have it both ways (unless you are running out of logic space).

Nothing stops you from creating project specific data ranges, then using 'MOV' or other instructions to aggregate a 'common block' elsewhere. this also helps the 'common block' be smaller since you don't bloat it with one-offs.

It does complicate writable settings, but common blocks which are read aggressively by many hosts are probably not the best place to put write/control anyway.