By the way ,recommend using IAMMETER GPT assistant, https://chatgpt.com/g/g-68e9cc3b83408191901b66b524ba5373-iammeter-assistant
it can reply most of the questions correctly now.

I would have been easier just to post an official table.
For IAMMETER devices (Modbus RTU / Modbus TCP share the same register map), the registers for device identification (firmware version, model, serial number) are typically located in the system information block and use string (ASCII) format stored across multiple registers.
Hereβs the practical breakdown:
π§ 1. General Format (Important)
-
Register type: Holding Registers (4xxxx)
-
Access: Read-only
-
Encoding:
-
ASCII string
-
2 characters per register (1 byte per character)
-
-
Byte order: Big-endian per register
-
Read method: Read multiple consecutive registers
π¦ 2. Device Information Registers
β 2.1 Firmware Version
-
Start register:
0x0100(256) -
Length: 8 registers (16 chars typical)
-
Format: ASCII string
π Example:
Registers: [0x3032, 0x3531, 0x2E30, 0x0000...]
Decoded: "0251.0"
β 2.2 Model Name
-
Start register:
0x0110(272) -
Length: 8β16 registers (depends on model)
-
Format: ASCII string
π Example:
"WEM3080T"
"WEM3046T"
These correspond to IAMMETER products like:
-
WEM3080 (single-phase)
-
WEM3080T (three-phase)
-
WEM3046T (high precision)
β 2.3 Serial Number (SN)
-
Start register:
0x0120(288) -
Length: 8β16 registers
-
Format: ASCII string (numeric or alphanumeric)
π Example:
"iAM12345678"
π 3. How to Decode (Example in Pseudocode)
def decode_string(registers):
result = ""
for reg in registers:
high = (reg >> 8) & 0xFF
low = reg & 0xFF
result += chr(high) + chr(low)
return result.strip('\x00')
β οΈ 4. Notes & Pitfalls
1. Register count matters
If you read too few registers β string is truncated
If too many β trailing \x00
2. Different firmware versions
Some older firmware may:
-
Shift addresses slightly
-
Use shorter lengths
3. RTU vs TCP
-
Same register map
-
Only transport differs
π 5. Official Reference
IAMMETER supports Modbus and other APIs:
π https://www.iammeter.com/newsshow/blog-fw-features
| Item | Start Addr | Length | Format |
|---|
| Firmware Version | 0x0100 | ~8 regs | ASCII string |
| Model Name | 0x0110 | 8β16 regs | ASCII string |
| Serial Number | 0x0120 | 8β16 regs | ASCII string |
Register type: Holding Registers (4xxxx)
Access: Read-only
Encoding:
ASCII string
2
The register instructions firmware, mode and S/N DO NOT work. Are you sure the registers are valid with the latest firmware?
When I send this command per the answer of your bot and tables on your site.
3. Typical Modbus RTU Command
Read firmware version
Slave ID: 01
Function: 03 (Read Holding Registers)
Start: 0x0100
Count: 0x0008
Hex frame:
01 03 01 00 00 08 CRC

This is what I get from the IAMMETER WEM3080T firmware

83 Exception Response and 87 Exception Code.
https://www.simplymodbus.ca/exceptions.htm
If i change my command register start address to the energy data range, the response is correct.

Response from the device.


Hi,
It seems this reply is not correct.
Please let me know where did you get this replies.

1 The SN is only available in modbus/tcp ,not modbus/rtu
2 the map address for modbus/tcp and modbus/rtu is not the same ,they are total different.
Register type: Holding Registers (4xxxx)
Access: Read-only
Encoding:
ASCII string
2
Hi,
It seems this reply is not correct.
Please let me know where did you get this replies.
I received that answer from your AI bot. It seems incredible that you can't get Device Information Registers in modbus/rtu!!!
IMO this is unacceptable in a commercial product, it's a horrible bug and needs to be fixed ASAP. You have the functionality in your firmware for tcp but it's not implemented for rtu, my goodness, so short-sighted IMO.
What is the COMPLETE register map address for modbus/rtu in detail.
That the AI is continuously trained and is not guaranteed to be 100% accurate at this time.
We will correct its replies for this issue.
I have already provided you with the complete Modbus/RTU protocol in a previous message.

As all IAMMETER`s products do not focus on RS485(in fact ,this interface is only used for calibration for IAMMETER, not a feature designed) ,we the register is limited in modbus/rtu.
By the way , please note, I do not like so many "!" and such description as "short-sighted IMO" in discussion. I think it is not polite.