A significant amount of Modbus device documentation uses 40001 to refer to holding register 1. The offset of 40,000 indicates holding register, also sometimes called a "4X" register. This notation is sometimes referred to as "Modicon" convention since Modicon PLCs are where this method was first used and documented. When this form of notation is used, the following offsets are used:
0x Coil 00001-09999
1x Discrete Input 10001-19999
3x Input Register 30001-39999
4x Holding Register 40001-49999
This notation has the limitation of only supporting 9,999 registers of each type. The extended form of the same notation uses an offset of 400,000 to reference a holding register. The entire list of applicable offsets is:
0x Coil 000001-065535
1x Discrete Input 100001-165535
3x Input Register 300001-365535
4x Holding Register 400001-465535
This is only a documentation convention. The offset or register type determines the function code used to access that register. The addresses that go out over the wire start at 0 and run through 65,535 in all cases. Raw address is always one less than register number.
If documentation lists register 40001 you should enter register number 1 and select holding register as the type. Some Control Solutions products do use the notation shown above. Babel Buster SP and the AddMe III family all use register numbers starting at 1 in all cases, along with an indication of register type selected from a list of descriptive names such as "holding register".
How to I read individual bits in a register?
The bit mask shown in the expanded form of the RTU read map is a 4 digit hexadecimal (16 bit) value used to mask out one or more bits in a register. The selected bits will be right justified, so a single bit regardless of where positioned in the source register will be stored locally as 0 or 1. The notation of register number followed by a colon and number from 0 to 15 indicates a single bit picked from that register. The hex bit mask values would be as follows, assuming a register number of 40001.