Janitza UMG96RM-EL power meter
Register map(s) for this device, each at the trust rung it earned. Addresses are 0-based
as on the wire. Word order and scaling are confirmed at the hardware-verified rung and at no rung below it.
interop-verified
Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.
| point | address (0-based) | type | scale | unit |
| voltage_l1_n | 19000 | F32BE | 1 | |
| voltage_l2_n | 19002 | F32BE | 1 | |
| voltage_l3_n | 19004 | F32BE | 1 | |
| voltage_l1_l2 | 19006 | F32BE | 1 | |
| voltage_l2_l3 | 19008 | F32BE | 1 | |
| voltage_l1_l3 | 19010 | F32BE | 1 | |
| current_l1 | 19012 | F32BE | 1 | |
| current_l2 | 19014 | F32BE | 1 | |
| current_l3 | 19016 | F32BE | 1 | |
| current_vector_sum | 19018 | F32BE | 1 | |
| real_power_l1 | 19020 | F32BE | 1 | |
| real_power_l2 | 19022 | F32BE | 1 | |
| real_power_l3 | 19024 | F32BE | 1 | |
| real_power_sum | 19026 | F32BE | 1 | |
| apparent_power_l1 | 19028 | F32BE | 1 | |
| apparent_power_l2 | 19030 | F32BE | 1 | |
| apparent_power_l3 | 19032 | F32BE | 1 | |
| apparent_power_sum | 19034 | F32BE | 1 | |
| reactive_power_l1 | 19036 | F32BE | 1 | |
| reactive_power_l2 | 19038 | F32BE | 1 | |
| reactive_power_l3 | 19040 | F32BE | 1 | |
| reactive_power_sum | 19042 | F32BE | 1 | |
| cos_phi_l1 | 19044 | F32BE | 1 | |
| cos_phi_l2 | 19046 | F32BE | 1 | |
| cos_phi_l3 | 19048 | F32BE | 1 | |
| frequency | 19050 | F32BE | 1 | |
| real_energy_l1 | 19054 | F32BE | 1 | |
| real_energy_l2 | 19056 | F32BE | 1 | |
| real_energy_l3 | 19058 | F32BE | 1 | |
| real_energy_sum | 19060 | F32BE | 1 | |
| thd_u_l1 | 19110 | F32BE | 1 | |
| thd_u_l2 | 19112 | F32BE | 1 | |
| thd_u_l3 | 19114 | F32BE | 1 | |
| thd_i_l1 | 19116 | F32BE | 1 | |
| thd_i_l2 | 19118 | F32BE | 1 | |
| thd_i_l3 | 19120 | F32BE | 1 | |
link settings as documented (unverified): FC 03,04,06,16,23; Supports Big-Endian and Little-Endian byte sequences. If Little-Endian is required, add 32768 to the register address.
bench facts as documented (unverified)
| broadcast | supported |
| protocol notes | Modbus register addresses are updated every 200ms. Measured values in short format do not take into account the set transformer ratio, whereas float or integer formats do. |
| doc revision | 1.040.109.4.h |
field reports — community-sourced, unverified (checked 2026-06-11)
- When mapping registers to Ignition SCADA, users may receive 'bad' quality values due to addressing mismatches. Enabling zero-based addressing in Ignition's advanced settings is required to align with Janitza's 1-based register numbering, and word swapping may be needed for FLOAT data types. [source]
- Firmware updates may occasionally introduce register mapping changes affecting SCADA integrations. [source]
- When integrating with Siemens S7-1500 PLCs, users may need to swap the byte order in the receive buffer or configure the Modbus master to expect swapped bytes for FLOAT values. [source]
- confirmed: Modbus Functions (Slave) supports 03, 04, 06, 16, 23 — confirmed by Janitza UMG 96RM-EL Modbus-address list and Formulary (Dok. Nr. 1.040.109.4.h)
- confirmed: Supports Big-Endian and Little-Endian byte sequences. If Little-Endian is required, add 32768 to the register address — confirmed by Janitza UMG 96RM-EL Modbus-address list and Formulary (Dok. Nr. 1.040.109.4.h)
- confirmed: Modbus register addresses are updated every 200ms — confirmed by Janitza UMG 96RM-EL Modbus-address list and Formulary (Dok. Nr. 1.040.109.4.h)
- confirmed: Measured values in short format do not take into account the set transformer ratio, whereas float or integer formats do — confirmed by Janitza UMG 96RM-EL Modbus-address list and Formulary (Dok. Nr. 1.040.109.4.h)
- confirmed: Register map summary (voltage_l1_n @ 19000, voltage_l2_n @ 19002, voltage_l3_n @ 19004, voltage_l1_l2 @ 19006, voltage_l2_l3 @ 19008, voltage_l1_l3 @ 19010, current_l1 @ 19012, current_l2 @ 19014, current_l3 @ 19016, current_vector_sum @ 19018, real_power_l1 @ 19020, real_power_l2 @ 19022, real_power_l3 @ 19024, real_power_sum @ 19026, apparent_power_l1 @ 19028, apparent_power_l2 @ 19030, apparent_power_l3 @ 19032, apparent_power_sum @ 19034, reactive_power_l1 @ 19036, reactive_power_l2 @ 19038, reactive_power_l3 @ 19040, reactive_power_sum @ 19042, cos_phi_l1 @ 19044, cos_phi_l2 @ 19046, cos_phi_l3 @ 19048, frequency @ 19050, real_energy_l1 @ 19054, real_energy_l2 @ 19056, real_energy_l3 @ 19058, real_energy_sum @ 19060, thd_u_l1 @ 19110, thd_u_l2 @ 19112, thd_u_l3 @ 19114, thd_i_l1 @ 19116, thd_i_l2 @ 19118, thd_i_l3 @ 19120) — confirmed by Janitza UMG 96RM-EL Modbus-address list and Formulary (Dok. Nr. 1.040.109.4.h)
The trust ladder
Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.
- generated — A prompt produced it. Unproven — anyone can regenerate this.
- structure-verified — Decode path is structurally sound (addresses, widths, finite values). Does NOT prove word order or scaling.
- interop-verified — Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.
- simulator-verified — Decoded correctly against a protocol emulator seeded with known-true values — catches word-order/scaling errors vs the emulator, not the physical device.
- hardware-verified x1 — Matched a real device with operator-attested readings as ground truth — the only rung that confirms word order + scaling on the wire.