The following describes how to use the register windowing feature of the Packet Power Ethernet Gateway (EG4) Modbus interface. The windowing feature allows data from multiple monitoring nodes to be accessed via a single slave ID, instead of requiring individual slave IDs for each monitoring node and thus being limited by the 254 slave ID limit.
NOTE: EG4 uses 0-based register numbers that correspond to the actual protocol-level register numbers, NOT the Modbus legacy 1-based register numbers. Depending on your Modbus client software you may have to read register numbers 1 higher than specified in EG4. For example, to read register 1 (as seen on EG4) you may have to specify register 2 in your Modbus client software.
Use windowed Modbus node maps
1. Define a map for an individual node that includes all reading data you want to access.
2. Pick your register window size - it can be any number larger than the largest register number used in your map.
This will determine how many consecutive register numbers are reserved for each node. In this example we will use 20, which is larger than the largest register number (13) and leaves some room for future expansion if necessary.
3. Define the node mapping, which will determine the slave ID, the register offset (which will be added to each register number within the map) and the size of the register window (chosen above) for each monitoring node.
Note that in most cases you will want to set all nodes to the same slave ID, however that is not a requirement. You can use as many slave IDs as you need to. The only restriction is that register windows within the same slave ID should not overlap (that would result in duplicate mappings). In our example we will use slave ID 1 and reserve 20 registers for each node, starting with 0. This will result in windows of registers 0-19, 20-39 and 40-59.
4. Verify that all readings are correctly mapped.
In this example, you should see readings:
A from the 1st node in registers 1,2,3,11,12,13 (or 2,3,4,12,13,14 if reading via a 1-based Modbus client)
B from the 2nd node in registers 21,22,23,31,32,33 (or 22,23,24,32,33,34 if reading via a 1-based Modbus client)
C from the 3rd node in registers 41,42,43,51,52,53 (or 42,43,44,52,53,54 if reading via a 1-based Modbus client)