ABB M1M 20 / M1M 30 Modbus register map
Panel-mounted multifunction power meters from ABB's M1M range. The Modbus manual covers energy counters, real-time electrical values, harmonic distortion, digital I/O, device information and communication settings. The M1M 20 and M1M 30 come in RS-485 and Ethernet versions.
- Protocol
- Modbus RTU (RS-485) and Modbus TCP/IP (Ethernet versions)
- Defaults
- Modbus TCP uses port 502 by default (p. 6). Modbus RTU address range is 1 to 247, baud rates 9600 to 115200 and parity none, even or odd (p. 27). Function codes 03 and 10 hex are supported (p. 7).
- Addresses in the manual
- 0-based protocol addresses, as sent on the wire
- 32 and 64-bit values
- High word first (AB CD)
- Registers listed
- 75
- Checked against
- 9AKK108467A2704, version 1.3
Address base. Register addresses are printed in hexadecimal and the manual's request examples put the same value in the start-address field, for example 0x5000 for total active energy import and 0x5B02 for phase voltage L1 (p. 11, p. 14). Addresses here are those hex values converted to decimal. Only rows applicable to both the M1M 20 and M1M 30 are listed; the manual also has M1M 30-only average, maximum and minimum blocks. Address 20480 in the manual is address 20480 on the wire.
Word order. The manual states Modbus is big-endian and its multi-register examples carry the most significant word first, for example total energy 0x0F4243 read from four registers 00 00 00 00 00 0F 42 43 (p. 7, p. 11). A register value of 0xFFFF means the quantity cannot be measured in the current wiring mode (p. 7).
Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.
Downloads
The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.
Registers
| Manual | Wire | Register | Type | Regs | Unit | Scale | Access | Area |
|---|---|---|---|---|---|---|---|---|
| 20480 | 20480 | Active energy importActiveEnergyImport · Printed as hex 5000. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20484 | 20484 | Active energy exportActiveEnergyExport · Printed as hex 5004. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20492 | 20492 | Reactive energy importReactiveEnergyImport · Printed as hex 500C. |
uint64 | 4 | kvarh | 0.01 | R | Holding (FC03) |
| 20496 | 20496 | Reactive energy exportReactiveEnergyExport · Printed as hex 5010. |
uint64 | 4 | kvarh | 0.01 | R | Holding (FC03) |
| 23296 | 23296 | Three-phase system voltageVoltageSystem · Printed as hex 5B00. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23298 | 23298 | Phase voltage L1Voltage_L1N · Printed as hex 5B02. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23300 | 23300 | Phase voltage L2Voltage_L2N · Printed as hex 5B04. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23302 | 23302 | Phase voltage L3Voltage_L3N · Printed as hex 5B06. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23304 | 23304 | Line voltage L1-L2Voltage_L1L2 · Printed as hex 5B08. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23306 | 23306 | Line voltage L3-L2Voltage_L3L2 · Printed as hex 5B0A. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23308 | 23308 | Line voltage L1-L3Voltage_L1L3 · Printed as hex 5B0C. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23310 | 23310 | Three-phase system currentCurrentSystem · Printed as hex 5B0E. |
uint32 | 2 | A | 0.01 | R | Holding (FC03) |
| 23312 | 23312 | Current L1Current_L1 · Printed as hex 5B10. |
uint32 | 2 | A | 0.01 | R | Holding (FC03) |
| 23314 | 23314 | Current L2Current_L2 · Printed as hex 5B12. |
uint32 | 2 | A | 0.01 | R | Holding (FC03) |
| 23316 | 23316 | Current L3Current_L3 · Printed as hex 5B14. |
uint32 | 2 | A | 0.01 | R | Holding (FC03) |
| 23318 | 23318 | Neutral currentCurrent_N · Printed as hex 5B16. Neutral current is listed for M1M 20 and 30 only. |
uint32 | 2 | A | 0.01 | R | Holding (FC03) |
| 23322 | 23322 | Active power totalActivePower_Total · Printed as hex 5B1A. |
int32 | 2 | W | 0.01 | R | Holding (FC03) |
| 23324 | 23324 | Active power L1ActivePower_L1 · Printed as hex 5B1C. |
int32 | 2 | W | 0.01 | R | Holding (FC03) |
| 23326 | 23326 | Active power L2ActivePower_L2 · Printed as hex 5B1E. |
int32 | 2 | W | 0.01 | R | Holding (FC03) |
| 23328 | 23328 | Active power L3ActivePower_L3 · Printed as hex 5B20. |
int32 | 2 | W | 0.01 | R | Holding (FC03) |
| 23330 | 23330 | Reactive power totalReactivePower_Total · Printed as hex 5B22. |
int32 | 2 | var | 0.01 | R | Holding (FC03) |
| 23332 | 23332 | Reactive power L1ReactivePower_L1 · Printed as hex 5B24. |
int32 | 2 | var | 0.01 | R | Holding (FC03) |
| 23334 | 23334 | Reactive power L2ReactivePower_L2 · Printed as hex 5B26. |
int32 | 2 | var | 0.01 | R | Holding (FC03) |
| 23336 | 23336 | Reactive power L3ReactivePower_L3 · Printed as hex 5B28. |
int32 | 2 | var | 0.01 | R | Holding (FC03) |
| 23338 | 23338 | Apparent power totalApparentPower_Total · Printed as hex 5B2A. The manual prints the unit of this row as VAR; the other apparent power rows say VA. |
int32 | 2 | VA | 0.01 | R | Holding (FC03) |
| 23340 | 23340 | Apparent power L1ApparentPower_L1 · Printed as hex 5B2C. |
int32 | 2 | VA | 0.01 | R | Holding (FC03) |
| 23342 | 23342 | Apparent power L2ApparentPower_L2 · Printed as hex 5B2E. |
int32 | 2 | VA | 0.01 | R | Holding (FC03) |
| 23344 | 23344 | Apparent power L3ApparentPower_L3 · Printed as hex 5B30. |
int32 | 2 | VA | 0.01 | R | Holding (FC03) |
| 23346 | 23346 | Line frequencyFrequency · Printed as hex 5B32. |
uint16 | 1 | Hz | 0.01 | R | Holding (FC03) |
| 23347 | 23347 | Power angle totalPowerAngle_Total · Printed as hex 5B33. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23348 | 23348 | Power angle L1PowerAngle_L1 · Printed as hex 5B34. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23349 | 23349 | Power angle L2PowerAngle_L2 · Printed as hex 5B35. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23350 | 23350 | Power angle L3PowerAngle_L3 · Printed as hex 5B36. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23351 | 23351 | Voltage angle L1VoltageAngle_L1 · Printed as hex 5B37. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23352 | 23352 | Voltage angle L2VoltageAngle_L2 · Printed as hex 5B38. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23353 | 23353 | Voltage angle L3VoltageAngle_L3 · Printed as hex 5B39. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23357 | 23357 | Current angle L1CurrentAngle_L1 · Printed as hex 5B3D. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23358 | 23358 | Current angle L2CurrentAngle_L2 · Printed as hex 5B3E. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23359 | 23359 | Current angle L3CurrentAngle_L3 · Printed as hex 5B3F. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23360 | 23360 | Power factor totalPowerFactor_Total · Printed as hex 5B40. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23361 | 23361 | Power factor L1PowerFactor_L1 · Printed as hex 5B41. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23362 | 23362 | Power factor L2PowerFactor_L2 · Printed as hex 5B42. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23363 | 23363 | Power factor L3PowerFactor_L3 · Printed as hex 5B43. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23368 | 23368 | Displacement factor totalCosphi_Total · Printed as hex 5B48. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23369 | 23369 | Displacement factor L1Cosphi_L1 · Printed as hex 5B49. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23370 | 23370 | Displacement factor L2Cosphi_L2 · Printed as hex 5B4A. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23371 | 23371 | Displacement factor L3Cosphi_L3 · Printed as hex 5B4B. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23808 | 23808 | Voltage THD L1THD_Voltage_L1 · Printed as hex 5D00. The 39 registers that follow hold the individual harmonics (2nd up to 40th, up to 15th on the M1M 20). |
uint16 | 1 | % | 0.1 | R | Holding (FC03) |
| 23936 | 23936 | Voltage THD L2THD_Voltage_L2 · Printed as hex 5D80. The 39 registers that follow hold the individual harmonics (2nd up to 40th, up to 15th on the M1M 20). |
uint16 | 1 | % | 0.1 | R | Holding (FC03) |
| 24064 | 24064 | Voltage THD L3THD_Voltage_L3 · Printed as hex 5E00. The 39 registers that follow hold the individual harmonics (2nd up to 40th, up to 15th on the M1M 20). |
uint16 | 1 | % | 0.1 | R | Holding (FC03) |
| 24576 | 24576 | Current THD L1THD_Current_L1 · Printed as hex 6000. The 39 registers that follow hold the individual harmonics (2nd up to 40th, up to 15th on the M1M 20). |
uint16 | 1 | % | 0.1 | R | Holding (FC03) |
| 24704 | 24704 | Current THD L2THD_Current_L2 · Printed as hex 6080. The 39 registers that follow hold the individual harmonics (2nd up to 40th, up to 15th on the M1M 20). |
uint16 | 1 | % | 0.1 | R | Holding (FC03) |
| 24832 | 24832 | Current THD L3THD_Current_L3 · Printed as hex 6100. The 39 registers that follow hold the individual harmonics (2nd up to 40th, up to 15th on the M1M 20). |
uint16 | 1 | % | 0.1 | R | Holding (FC03) |
| 25344 | 25344 | Digital output 1 statusDigitalOutput1 · Printed as hex 6300. 0 = off, 1 = on. The output type must be set to communication on the meter display for remote control (p. 21, write example p. 22). |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 25345 | 25345 | Digital output 2 statusDigitalOutput2 · Printed as hex 6301. 0 = off, 1 = on. The output type must be set to communication on the meter display. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 25352 | 25352 | Digital inputs 1 and 2 statusDigitalInputs12 · Printed as hex 6308. Two registers, one per input; 0 = off, 1 = on. |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 35072 | 35072 | Serial numberSerialNumber · Printed as hex 8900. ASCII text. |
string | 5 | 1 | R | Holding (FC03) | |
| 35080 | 35080 | Meter firmware versionFirmwareVersion · Printed as hex 8908. ASCII text. |
string | 8 | 1 | R | Holding (FC03) | |
| 35088 | 35088 | Product type number IDProductTypeId · Printed as hex 8910. Printed data type is ASCII, one register. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 35097 | 35097 | Product tag nameProductTag · Printed as hex 8919. ASCII text. The manual says only the product tag name can be changed in this block. |
string | 5 | 1 | RW | Holding (FC03) | |
| 35168 | 35168 | Type designationTypeDesignation · Printed as hex 8960. ASCII text. |
string | 6 | 1 | R | Holding (FC03) | |
| 35174 | 35174 | Product nameProductName · Printed as hex 8966. ASCII text. |
string | 8 | 1 | R | Holding (FC03) | |
| 36087 | 36087 | Timer up counterTimerUpCounter · Printed as hex 8CF7. |
uint32 | 2 | h | 0.1 | R | Holding (FC03) |
| 35840 | 35840 | Current transformer primaryCTPrimary · Printed as hex 8C00. All current and voltage transformer registers must be written together in one request (p. 26). |
uint32 | 2 | 1 | RW | Holding (FC03) | |
| 35842 | 35842 | Current transformer secondaryCTSecondary · Printed as hex 8C02. Written together with the other ratio registers. |
uint32 | 2 | 1 | RW | Holding (FC03) | |
| 35844 | 35844 | Voltage transformer primaryVTPrimary · Printed as hex 8C04. Written together with the other ratio registers. |
uint32 | 2 | 1 | RW | Holding (FC03) | |
| 35846 | 35846 | Voltage transformer secondaryVTSecondary · Printed as hex 8C06. Written together with the other ratio registers. |
uint32 | 2 | 1 | RW | Holding (FC03) | |
| 36069 | 36069 | Wiring typeWires · Printed as hex 8CE5. Set separately from the transformer ratios. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 36075 | 36075 | Modbus RTU addressRTU_Address · Printed as hex 8CEB. Range 1 to 247. The three serial registers must be written in one request. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 36076 | 36076 | Modbus RTU baud rateRTU_Baudrate · Printed as hex 8CEC. Allowed values 9600, 19200, 38400, 57600, 115200. The manual example writes 19200 as 0x00004B00. |
uint32 | 2 | baud | 1 | RW | Holding (FC03) |
| 36078 | 36078 | Modbus RTU parityRTU_Parity · Printed as hex 8CEE. 0 = none, 1 = even, 2 = odd. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 36079 | 36079 | Ethernet DHCP enableTCP_DHCP · Printed as hex 8CEF. 0 = disabled, 1 = enabled. Ethernet versions only; all TCP/IP registers are written together. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 36080 | 36080 | Ethernet IP addressTCP_IP · Printed as hex 8CF0. Packed as 0xAABBCCDD for A.B.C.D. |
uint32 | 2 | 1 | RW | Holding (FC03) | |
| 36082 | 36082 | Ethernet subnet maskTCP_Mask · Printed as hex 8CF2. Packed as 0xAABBCCDD for A.B.C.D. |
uint32 | 2 | 1 | RW | Holding (FC03) | |
| 36084 | 36084 | Ethernet gatewayTCP_Gateway · Printed as hex 8CF4. Packed as 0xAABBCCDD for A.B.C.D. |
uint32 | 2 | 1 | RW | Holding (FC03) |
Scale is the number to multiply the raw value by to get the unit. Types with more than one register (32 and 64-bit) follow the word order above.
Open in Modbus Poll
- Download the Modbus Poll blocks file.
- Open Modbus Poll, connect to the device and set its unit ID. In Modbus Poll set Word order to AB CD.
- In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
- The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.
Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.
Source and accuracy
Manufacturer document: M1M Power Meters Modbus Manual (library.e.abb.com)
9AKK108467A2704, version 1.3, p. 4-28. Read on 2026-10-24.
Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.
Found a mistake? Report it by email with the register address and the manual page.