MODBUS RTU registers and formats for device firmware version, model name and serial number.

I need the register mapping for this information. Not using WiFI for this application.

Thread Status
8
144
2
2
0

Sort replies by:

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

ItemStart AddrLengthFormat
Firmware Version0x0100~8 regsASCII string
Model Name0x01108–16 regsASCII string
Serial Number0x01208–16 regsASCII string

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

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.

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

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.


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 deta
Looks like you are new here. Register for free, learn and contribute.