Easy Modbus
  1. Home
  2. Modbus register maps
  3. Carlo Gavazzi
  4. WM15 power analyzer

Power meter (power analyzer) · Modbus register map

Carlo Gavazzi WM15 power analyzer Modbus register map

Updated 16 October 2026

Short answer

The WM15 is a 96x96 mm panel power analyzer with an RS485 Modbus RTU port. Values are mostly 32-bit integers sent low word first with fixed weights; functions 03 and 04 are equivalent and up to 125 registers can be read at once. This map covers voltages, currents, powers, PF (both sign conventions), frequency, energy totals and partials, run hours, THD, demand and max values, output/alarm status, alarm and pulse-output setup, serial settings, resets and device state.

This page lists 119 Modbus registers for the Carlo Gavazzi WM15 power analyzer — 22 writable — with the table, 0-based wire address, data type, word order, scale, units and access of each, re-typed from Carlo Gavazzi’s own free documentation (linked below) and checked against it.

Manufacturer
Carlo Gavazzi
Model
WM15 power analyzer
Equipment type
Power meter (power analyzer)
Registers
119 (22 writable)
Transport
Modbus RTU
Default unit ID
1
Default serial
9600 baud, 8N1
Documented addressing
Modicon 3xxxx/4xxxx (drop the prefix, subtract 1)
32-bit word order
CDAB low word first (word-swapped)
Firmware
Rows apply to all firmware unless noted (OS/OX/OSPF/OXPF 1.0)
Also known as
WM15, WM15-96, WM1596AV53XOSX, WM1596AV53XOSPFB, WM1596AV53HOSX
Source document
WM15 Communication Protocol · Version 1.2 · rev. 2019-12-20
Download CSV all columns JSON Manufacturer PDF ↗

Integration notes: Carlo Gavazzi WM15 power analyzer

Integration in brief

Read input registers 0000h-0059h with function 04 (or 03) in one request; decode INT32 values low word first and apply the fixed weights (V and W x10, A and PF x1000, energy x10).

Minimum registers to map

Addresses are 0-based wire addresses. Enough to monitor and run the unit; map more as the job needs.

RegisterNameTypeWhyAccess
IR 0V L1-NINT32 CDABV L1-NRead
IR 12A L1INT32 CDABA L1Read
IR 40W systemINT32 CDABW systemRead
IR 49PF systemINT16PF systemRead
IR 51FrequencyINT16FrequencyRead
IR 52kWh(+) totalINT32 CDABkWh(+) totalRead
IR 78kWh(-) totalINT32 CDABkWh(-) totalRead

Enable Modbus control & writes

Modbus RTU is on the OS (RS485) versions; OX versions have no serial port. Address, baud rate, parity and stop bits are in registers 2000h-2003h.

Byte order & addressing

Network setup

Watch out for

Carlo Gavazzi WM15 power analyzer Modbus registers

Address = 0-based wire address (the documented number is shown under it when it differs) · Order: ABCD = high word first, CDAB = low word first · Scale: engineering value = raw × scale.

119 of 119 shown
Carlo Gavazzi WM15 power analyzer Modbus register map
TableAddressNameDescriptionTypeOrderScaleUnitsAccessValues / bits
IR0doc 300001 / 0000hV L1-NINT32CDAB× 0.1VRead
IR2doc 300003 / 0002hV L2-NINT32CDAB× 0.1VRead
IR4doc 300005 / 0004hV L3-NINT32CDAB× 0.1VRead
IR6doc 300007 / 0006hV L1-L2INT32CDAB× 0.1VRead
IR8doc 300009 / 0008hV L2-L3INT32CDAB× 0.1VRead
IR10doc 300011 / 000AhV L3-L1INT32CDAB× 0.1VRead
IR11doc 300012 / 000BhCarlo Gavazzi identification codeRead alone; shares 000Bh with V L3-L1 high word.UINT16Read1680 = WM1596AV53XOSX; 1681 = WM1596AV53XOSPFB; 1682 = WM1596AV53XOXX; 1683 = WM1596AV53XOXPFB; 1684 = WM1596AV53HOSX
IR12doc 300013 / 000ChA L1INT32CDAB× 0.001ARead
IR14doc 300015 / 000EhA L2INT32CDAB× 0.001ARead
IR16doc 300017 / 0010hA L3INT32CDAB× 0.001ARead
IR18doc 300019 / 0012hW L1INT32CDAB× 0.1WRead
IR20doc 300021 / 0014hW L2INT32CDAB× 0.1WRead
IR22doc 300023 / 0016hW L3INT32CDAB× 0.1WRead
IR24doc 300025 / 0018hVA L1INT32CDAB× 0.1VARead
IR26doc 300027 / 001AhVA L2INT32CDAB× 0.1VARead
IR28doc 300029 / 001ChVA L3INT32CDAB× 0.1VARead
IR30doc 300031 / 001Ehvar L1INT32CDAB× 0.1varRead
IR32doc 300033 / 0020hvar L2INT32CDAB× 0.1varRead
IR34doc 300035 / 0022hvar L3INT32CDAB× 0.1varRead
IR36doc 300037 / 0024hV L-N systemINT32CDAB× 0.1VRead
IR38doc 300039 / 0026hV L-L systemINT32CDAB× 0.1VRead
IR40doc 300041 / 0028hW systemINT32CDAB× 0.1WRead
IR42doc 300043 / 002AhVA systemINT32CDAB× 0.1VARead
IR44doc 300045 / 002Chvar systemINT32CDAB× 0.1varRead
IR46doc 300047 / 002EhPF L1Sign = direction: negative exported, positive imported.INT16× 0.001Read
IR47doc 300048 / 002FhPF L2Sign = direction: negative exported, positive imported.INT16× 0.001Read
IR48doc 300049 / 0030hPF L3Sign = direction: negative exported, positive imported.INT16× 0.001Read
IR49doc 300050 / 0031hPF systemSign = direction: negative exported, positive imported.INT16× 0.001Read
IR50doc 300051 / 0032hPhase sequenceMeaningful on 3-phase systems only.INT16Read0 = L1-L2-L3; -1 = L1-L3-L2
IR51doc 300052 / 0033hFrequencyINT16× 0.1HzRead
IR52doc 300053 / 0034hkWh(+) totalINT32CDAB× 0.1kWhRead
IR54doc 300055 / 0036hkvarh(+) totalINT32CDAB× 0.1kvarhRead
IR56doc 300057 / 0038hW system demandINT32CDAB× 0.1WRead
IR58doc 300059 / 003AhW system demand maxINT32CDAB× 0.1WRead
IR60doc 300061 / 003ChkWh(+) partialINT32CDAB× 0.1kWhRead
IR62doc 300063 / 003Ehkvarh(+) partialINT32CDAB× 0.1kvarhRead
IR64doc 300065 / 0040hkWh(+) L1INT32CDAB× 0.1kWhRead
IR66doc 300067 / 0042hkWh(+) L2INT32CDAB× 0.1kWhRead
IR68doc 300069 / 0044hkWh(+) L3INT32CDAB× 0.1kWhRead
IR78doc 300079 / 004EhkWh(-) totalINT32CDAB× 0.1kWhRead
IR80doc 300081 / 0050hkvarh(-) totalINT32CDAB× 0.1kvarhRead
IR82doc 300083 / 0052hkWh(-) partialINT32CDAB× 0.1kWhRead
IR84doc 300085 / 0054hkvarh(-) partialINT32CDAB× 0.1kvarhRead
IR86doc 300087 / 0056hkVAh totalINT32CDAB× 0.1kVAhRead
IR88doc 300089 / 0058hkVAh partialINT32CDAB× 0.1kVAhRead
IR90doc 300091 / 005AhRun hour meterINT32CDAB× 0.01hRead
IR92doc 300093 / 005ChRun hour meter kWh(-)Hours run while exporting.INT32CDAB× 0.01hRead
IR110doc 300111 / 006EhRun hour meter partialINT32CDAB× 0.01hRead
IR112doc 300113 / 0070hRun hour meter kWh(-) partialINT32CDAB× 0.01hRead
IR114doc 300115 / 0072hPF L1 (lead/lag)Sign = lead/lag: negative capacitive, positive inductive.INT16× 0.001Read
IR115doc 300116 / 0073hPF L2 (lead/lag)Sign = lead/lag: negative capacitive, positive inductive.INT16× 0.001Read
IR116doc 300117 / 0074hPF L3 (lead/lag)Sign = lead/lag: negative capacitive, positive inductive.INT16× 0.001Read
IR117doc 300118 / 0075hPF system (lead/lag)Sign = lead/lag: negative capacitive, positive inductive.INT16× 0.001Read
IR118doc 300119 / 0076hLoad type L1INT16Read1 = Inductive (L); -1 = Capacitive (C)
IR119doc 300120 / 0077hLoad type L2INT16Read1 = Inductive (L); -1 = Capacitive (C)
IR120doc 300121 / 0078hLoad type L3INT16Read1 = Inductive (L); -1 = Capacitive (C)
IR121doc 300122 / 0079hLoad type systemINT16Read1 = Inductive (L); -1 = Capacitive (C)
IR130doc 300131 / 0082hTHD A L1INT32CDAB× 0.01%Read
IR132doc 300133 / 0084hTHD A L2INT32CDAB× 0.01%Read
IR134doc 300135 / 0086hTHD A L3INT32CDAB× 0.01%Read
IR138doc 300139 / 008AhTHD V L1-NINT32CDAB× 0.01%Read
IR140doc 300141 / 008ChTHD V L2-NINT32CDAB× 0.01%Read
IR142doc 300143 / 008EhTHD V L3-NINT32CDAB× 0.01%Read
IR146doc 300147 / 0092hTHD V L1-L2INT32CDAB× 0.01%Read
IR148doc 300149 / 0094hTHD V L2-L3INT32CDAB× 0.01%Read
IR150doc 300151 / 0096hTHD V L3-L1INT32CDAB× 0.01%Read
IR154doc 300155 / 009AhA L1 demandINT32CDAB× 0.001ARead
IR156doc 300157 / 009ChA L2 demandINT32CDAB× 0.001ARead
IR158doc 300159 / 009EhA L3 demandINT32CDAB× 0.001ARead
IR160doc 300161 / 00A0hA L1 demand maxINT32CDAB× 0.001ARead
IR162doc 300163 / 00A2hA L2 demand maxINT32CDAB× 0.001ARead
IR164doc 300165 / 00A4hA L3 demand maxINT32CDAB× 0.001ARead
IR166doc 300167 / 00A6hA L1 maxINT32CDAB× 0.001ARead
IR168doc 300169 / 00A8hA L2 maxINT32CDAB× 0.001ARead
IR170doc 300171 / 00AAhA L3 maxINT32CDAB× 0.001ARead
IR172doc 300173 / 00AChW L1 demandINT32CDAB× 0.1WRead
IR174doc 300175 / 00AEhW L2 demandINT32CDAB× 0.1WRead
IR176doc 300177 / 00B0hW L3 demandINT32CDAB× 0.1WRead
IR178doc 300179 / 00B2hW L1 demand maxINT32CDAB× 0.1WRead
IR180doc 300181 / 00B4hW L2 demand maxINT32CDAB× 0.1WRead
IR182doc 300183 / 00B6hW L3 demand maxINT32CDAB× 0.1WRead
IR184doc 300185 / 00B8hW L1 maxINT32CDAB× 0.1WRead
IR186doc 300187 / 00BAhW L2 maxINT32CDAB× 0.1WRead
IR188doc 300189 / 00BChW L3 maxINT32CDAB× 0.1WRead
IR190doc 300191 / 00BEhW system demand (dup)Same value as 0038h.INT32CDAB× 0.1WRead
IR192doc 300193 / 00C0hW system demand max (dup)Same value as 003Ah.INT32CDAB× 0.1WRead
IR194doc 300195 / 00C2hW system maxINT32CDAB× 0.1WRead
IR214doc 300215 / 00D6hVA demandINT32CDAB× 0.1VARead
IR216doc 300217 / 00D8hVA demand maxINT32CDAB× 0.1VARead
IR218doc 300219 / 00DAhVA maxINT32CDAB× 0.1VARead
IR770doc 300771 / 0302hFirmware versionHigh byte: bits 4-7 major, 0-3 minor; low byte revision.UINT16Read
IR773doc 300774 / 0305hDigital output statusINT16Read0 = Open; 1 = Closed
IR774doc 300775 / 0306hAlarm statusINT16Read0 = Not active (or delay running); 1 = Active
IR1340doc 301241 / 053ChFrequency (high resolution)INT32CDAB× 0.001HzRead
HR4096doc 304097 / 1000hPassword0 = no password, max 9999.UINT16Read/write
HR4098doc 304099 / 1002hMeasuring systemMID versions accept only 0 and 1.UINT16Read/write0 = 3Pn (default); 1 = 3P; 2 = 2P; 3 = 1P
HR4099doc 304100 / 1003hCT ratioRaw 10-20000 = CT 1.0-2000.0; read-only on MID.UINT32CDAB× 0.1Read/write
HR4112doc 304113 / 1010hDemand integration timeUINT32CDABRead/write0 = 1 min; 1 = 5 min; 2 = 10 min; 3 = 15 min (default); 4 = 20 min; 5 = 30 min; 6 = 60 min
HR4114doc 304115 / 1012hPulse output TonUINT16Read/write0 = 30 ms (default); 1 = 100 ms
HR4116doc 304117 / 1014hAlarm enableUINT16Read/write0 = Disabled (default); 1 = Enabled
HR4117doc 304118 / 1015hAlarm linked variableUINT16Read/write1 = Active power system (kW); 2 = Apparent power system (kVA); 3 = Reactive power system (kvar); 4 = Power factor system; 5 = Phase currents (A); 6 = Phase voltages (V); 7 = Delta voltages (V)
HR4118doc 304119 / 1016hAlarm set point 1 (on)-15000.00 to +15000.00 in the linked variable's unit.INT32CDAB× 0.01Read/write
HR4120doc 304121 / 1018hAlarm set point 2 (off)-15000.00 to +15000.00.INT32CDAB× 0.01Read/write
HR4122doc 304123 / 101AhAlarm delay0-3600.UINT16sRead/write
HR4126doc 304127 / 101EhOutput typeUINT16Read/write0 = Disabled (default); 1 = Pulse kWh; 2 = Alarm
HR4127doc 304128 / 101FhOutput normal stateUINT16Read/write0 = Normally open (default); 1 = Normally closed
HR4128doc 304129 / 1020hkWh per pulseRaw 1-10000; default 1000 (1 kWh).UINT32CDAB× 0.001kWhRead/write
HR4356doc 304357 / 1104hWrong-connection checkUINT16Read/write0 = Disabled; 1 = Enabled (default)
HR4357doc 304357 / 1105hWrong-connection statusUINT16Read0 = Correct; 1 = Connection error
HR4363doc 304360 / 110BhRun hour counter start currentPrimary current, raw 10-12000000; default 10 (10 mA).UINT32CDAB× 0.001ARead/write
HR8192doc 308193 / 2000hRS485 address1-247, default 1.UINT16Read/write
HR8193doc 308194 / 2001hRS485 baud rateUINT16Read/write1 = 9600 (default); 2 = 19200; 3 = 38400; 4 = 57600; 5 = 115200
HR8194doc 308195 / 2002hRS485 parityUINT16Read/write1 = None (default); 2 = Even
HR8195doc 308196 / 2003hRS485 stop bitsUINT16Read/write0 = 1 (default); 1 = 2
HR16387doc 316388 / 4003hReset totals and run hoursWrite 1. Non-MID models only.UINT16Read/write
HR16388doc 316389 / 4004hReset partials and partial run hoursWrite 1.UINT16Read/write
HR16389doc 316390 / 4005hReset demand, demand max and maxWrite 1.UINT16Read/write
HR20487doc 320488 / 5007hProduction yearUINT16Read
HR20498doc 320499 / 5012hDevice stateUINT16Read0 = Run; 1 = Fault; 2 = Configuration error (phase/terminal mapping)

Notes on this map

Check it against the live device. A register map tells you what the controller can expose; the unit in front of you may differ by firmware or options. Read a few registers and compare them with the unit’s own display; for a 32-bit value the float and byte-order decoder shows all four word orders at once, so a wrong word order or scale is obvious. New to this? Read what a register map is and why addresses are off by one.

Questions about the Carlo Gavazzi WM15 power analyzer

What Modbus registers does the Carlo Gavazzi WM15 power analyzer have?

This map lists 119 registers: 94 input registers, 25 holding registers. 22 of them can be written. Registers vary with firmware, options and configuration, so confirm against the device.

Are the Carlo Gavazzi WM15 power analyzer Modbus addresses 0-based or 1-based?

The manufacturer's document numbers registers Modicon 3xxxx/4xxxx (drop the prefix, subtract 1). Every address on this page is the 0-based wire address you put in the request; the documented number is shown under it where it differs. Registers are printed as a 6-digit Modicon number for function 04 (3xxxxx; use 4xxxxx for function 03) beside the hex physical address that goes in the frame; the hex address is authoritative. A few printed Modicon numbers do not match their hex address (1105h, 110Bh, 053Ah, 053Ch); the 'documented' field keeps them as printed and the wire address follows the hex.

What byte order does the Carlo Gavazzi WM15 power analyzer use for 32-bit values?

Multi-register values in this map use CDAB (low word first (word-swapped)). Set your client to this order for every 32/64-bit value in the table.

What are the minimum Modbus registers to integrate the Carlo Gavazzi WM15 power analyzer?

Start with IR 0 V L1-N (V L1-N); IR 12 A L1 (A L1); IR 40 W system (W system); IR 49 PF system (PF system); IR 51 Frequency (Frequency); IR 52 kWh(+) total (kWh(+) total); IR 78 kWh(-) total (kWh(-) total).

How do I enable Modbus control of the Carlo Gavazzi WM15 power analyzer?

Modbus RTU is on the OS (RS485) versions; OX versions have no serial port. Address, baud rate, parity and stop bits are in registers 2000h-2003h.

Where is the official Carlo Gavazzi WM15 power analyzer Modbus documentation?

The source is WM15 Communication Protocol (Version 1.2), revision 2019-12-20, published free by Carlo Gavazzi at https://www.gavazziautomation.com/fileadmin/images/PIM/OTHERSTUFF/COMPRO/WM15_CP.pdf.

More Carlo Gavazzi Modbus register maps

Source: WM15 Communication Protocol · Version 1.2 · rev. 2019-12-20. Register numbers, types, scaling and units are reproduced as published; descriptions are our own.