Separate the space from the number
Holding register 10 and input register 10 are different objects. FC03 selects holding registers; FC04 selects input registers. A client must know both the space and the PDU offset before it can form the request.
- 00001 commonly means coil PDU 0
- 10001 commonly means discrete input PDU 0
- 30001 commonly means input register PDU 0
- 40001 commonly means holding register PDU 0
Do not trust the prefix convention blindly
Some manuals number the first row 0, some 1, and some print a 3xxxx or 4xxxx label while still expecting the displayed number to be entered directly. Read the addressing note, inspect an example frame if supplied, or test a value with an unmistakable meaning.
Prove the address before decoding
Keep the first read as an unsigned 16-bit raw value. Once the raw word matches the manual or a known device state, add width, signedness, byte/word order, scale, and unit. Changing all of those at once makes an off-by-one error look like an endianness problem.