Open, machine-readable Modbus register maps for energy meters, inverters, drives and other field devices. Each device is one YAML file with the address, data type, byte order, unit and scale of every register, and the document it was transcribed from.
Vendor manuals bury this in PDF tables with mixed addressing conventions (30001, 0x0000, "register 1"). Here every address is the zero-based value sent on the wire, and the 30001-style reference is derived from it, so the two can never disagree.
| Vendor | Model | Category | Registers | Hardware-verified |
|---|---|---|---|---|
| ABB | A43/A44 | energy-meter | 166 | not yet |
| ABB | ACS580 | vfd | 31 | not yet |
| ABB | ACS880 | vfd | 28 | not yet |
| ABB | B23/B24 | energy-meter | 121 | not yet |
| ABB | M4M 20/M4M 30 | power-analyzer | 228 | not yet |
| Carlo Gavazzi | EM111/EM112 | energy-meter | 48 | not yet |
| Carlo Gavazzi | EM210 | energy-meter | 65 | not yet |
| Carlo Gavazzi | EM24-DIN | energy-meter | 78 | not yet |
| Carlo Gavazzi | EM24-IS | energy-meter | 30 | not yet |
| Carlo Gavazzi | EM330/ET330 | energy-meter | 74 | not yet |
| Carlo Gavazzi | EM340/ET340 | energy-meter | 82 | not yet |
| Danfoss | VLT AQUA Drive FC 202 | vfd | 19 | not yet |
| Danfoss | VLT AutomationDrive FC 302 | vfd | 19 | not yet |
| Danfoss | VLT HVAC Drive FC 102 | vfd | 20 | not yet |
| Eastron | SDM120-Modbus | energy-meter | 32 | not yet |
| Eastron | SDM120CT-M | energy-meter | 35 | not yet |
| Eastron | SDM630-Modbus | energy-meter | 97 | not yet |
| Eastron | SDM630MCT | energy-meter | 83 | not yet |
| Eastron | SDM72D-M | energy-meter | 16 | not yet |
| Fronius | Primo GEN24 Plus/Symo GEN24 Plus | inverter | 224 | not yet |
| Fronius | Primo GEN24/Symo GEN24 | inverter | 178 | not yet |
| Fronius | Smart Meter | energy-meter | 73 | not yet |
| Fronius | Tauro ECO | inverter | 168 | not yet |
| Fronius | Tauro | inverter | 188 | not yet |
| Fronius | Verto 3 MPPT | inverter | 188 | not yet |
| Fronius | Verto 4 MPPT | inverter | 198 | not yet |
| Fronius | Verto Plus | inverter | 234 | not yet |
| Janitza | UMG 103-CBM | energy-meter | 53 | not yet |
| Janitza | UMG 509-PRO | power-analyzer | 61 | not yet |
| Janitza | UMG 604-PRO | power-analyzer | 61 | not yet |
| Janitza | UMG 96-PA | power-analyzer | 54 | not yet |
| Janitza | UMG 96-RM-E | power-analyzer | 61 | not yet |
| Janitza | UMG 96-RM | power-analyzer | 61 | not yet |
| Klemsan | KLEA 320P | power-analyzer | 48 | not yet |
| Klemsan | KLEA 4 | power-analyzer | 43 | not yet |
| Klemsan | KLEA 6 | power-analyzer | 49 | not yet |
| Lovato Electric | DMG110 | power-analyzer | 55 | not yet |
| Lovato Electric | DMG210 | power-analyzer | 55 | not yet |
| Lovato Electric | DMG800 | power-analyzer | 54 | not yet |
| Schneider Electric | ATV320 | vfd | 1071 | not yet |
| Schneider Electric | ATV340 | vfd | 1741 | not yet |
| Schneider Electric | ATV600 | vfd | 1879 | not yet |
| Schneider Electric | ATV61 | vfd | 852 | not yet |
| Schneider Electric | ATV71 | vfd | 926 | not yet |
| Schneider Electric | ATV900 | vfd | 1911 | not yet |
| Schneider Electric | EM6400NG | power-analyzer | 424 | not yet |
| Schneider Electric | iEM3000 | energy-meter | 98 | not yet |
| Schneider Electric | ION7400 | power-analyzer | 807 | not yet |
| Schneider Electric | ION9000 | power-analyzer | 845 | not yet |
| Schneider Electric | PM2100/PM2200 | power-analyzer | 679 | not yet |
| Schneider Electric | PM3250/PM3255 | power-analyzer | 267 | not yet |
| Schneider Electric | PM5100/PM5300 | power-analyzer | 877 | not yet |
| Schneider Electric | PM5500/PM5600/PM5700 | power-analyzer | 3108 | not yet |
| Schneider Electric | PM8000 | power-analyzer | 809 | not yet |
| Siemens | PAC2200 | power-analyzer | 79 | not yet |
| Siemens | PAC2200CLP | power-analyzer | 81 | not yet |
| Siemens | PAC3200 | power-analyzer | 151 | not yet |
| Siemens | PAC3220 | power-analyzer | 91 | not yet |
| Siemens | PAC4200 | power-analyzer | 222 | not yet |
| Siemens | SINAMICS G120C | vfd | 63 | not yet |
| Siemens | SINAMICS V20 | vfd | 77 | not yet |
| SMA | Sunny Tripower Smart Energy | inverter | 31 | not yet |
| SolarEdge | Meter via Inverter | energy-meter | 37 | not yet |
| SolarEdge | SunSpec Inverter | inverter | 41 | not yet |
"Hardware-verified" means someone read the registers from a real device and recorded it under verified.
The other maps are transcribed from the sources they list. Have one of these devices? A verification is one of the
most useful contributions you can make.
schema_version: 1
vendor: Eastron
model: SDM630-Modbus
category: energy-meter
summary: Three-phase DIN-rail energy meter with RS485 Modbus RTU; every value is a 32-bit float.
connection:
interfaces: [rtu]
default_unit_id: 1
default_byte_order: ABCD
sources:
- title: Eastron SDM630Modbus Smart Meter Modbus Protocol Implementation
publisher: Eastron
version: V1.8
url: https://...
registers:
- key: voltage_l1_n
name: Phase 1 line to neutral voltage
table: input # coil, discrete_input, input or holding
address: 0 # zero-based protocol address (reference 30001)
type: float32 # bool, int16, uint16, int32, uint32, float32, int64, uint64, float64, string, bitfield16
unit: V
access: rOptional per register: byte_order (ABCD, CDAB, BADC, DCBA), scale (engineering value = raw × scale),
scale_factor (key of a register holding a power-of-ten exponent, as SunSpec devices use), length (for string,
bitfield and raw),
values (meaning of enumerated values), applies_to (wiring modes), group, description and notes.
The full contract is schema/device.schema.json.
python3 tools/maps.py build writes dist/index.json and one JSON file per device. Each register gains its
30001-style reference, address_hex, Modbus function_code, effective byte_order and a
proxus_mcp_address.
The last one plugs into Proxus Industrial MCP Server, which lets AI assistants such as Claude read Modbus devices. With a map at hand you can ask:
Read ir:52 on meter-1 as float32 ABCD. It's the total active power of an Eastron SDM630.
Adding a device takes one YAML file and a pull request; a check runs on every pull request and explains anything that needs fixing. See CONTRIBUTING.md. No device of your own? Ask for one with a device request.
Maps record facts (addresses, data types, units) in this project's own format and words, with a link to the document they come from. Vendor documents themselves are never stored here.
Found a wrong register? Open an issue or a pull request with the source or a reading that shows it. If you represent a manufacturer and want a map corrected, linked to a newer document or removed, open an issue or contact the maintainers through the repository owner's GitHub profile; requests are handled within five working days.
The maps (devices/) are under CC BY 4.0. If you reuse them, credit
"Modbus Register Maps by Proxus contributors" with a link to this repository. The tooling and schema are under
Apache-2.0.
Register maps describe how devices communicate; vendor names and model numbers belong to their owners. Always check a map against your device's documentation before you write to a register.
