Easy Modbus
  1. Home
  2. Modbus register maps
  3. Carlo Gavazzi
  4. WM50 power analyzer with TCD branch channels

Power meter (power analyzer) · Modbus register map

Carlo Gavazzi WM50 power analyzer with TCD branch channels Modbus register map

Updated 29 October 2026

Short answer

The WM50 is a modular Carlo Gavazzi power analyzer for a main feeder plus up to 96 single-phase TCD branch channels (grouped into 2/3-phase loads). Live values are IEEE-754 floats and energies are 64-bit Wh/varh counters, both sent low word first. This map covers the main feeder's voltage, current, power, PF, frequency, energy and tariff values, identification, status and alarm words, reset and remote-output commands, and channel 1 / load 1 of the branch blocks as a pattern.

This page lists 81 Modbus registers for the Carlo Gavazzi WM50 power analyzer with TCD branch channels — 15 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
WM50 power analyzer with TCD branch channels
Equipment type
Power meter (power analyzer)
Registers
81 (15 writable)
Transport
Modbus RTU, Modbus TCP
Default unit ID
Not stated
Documented addressing
Modicon 3xxxx/4xxxx (drop the prefix, subtract 1)
32-bit word order
CDAB low word first (word-swapped)
Firmware
X0 (all WM50 firmware letters A and B)
Also known as
WM50, WM50AV5, WM50-96, WM50 AV5
Source document
WM50 Communication Protocol (User version) · rev. 1.0.0 · rev. 2017-09-27
Download CSV all columns JSON Manufacturer PDF ↗

Integration notes: Carlo Gavazzi WM50 power analyzer with TCD branch channels

Integration in brief

Read input registers (function 04, or 03) from 0050h as low-word-first floats for main-feeder values and 0500h-051Fh as UINT64 Wh/varh counters (least significant word first). Branch circuits start at C200h, 14 registers per channel.

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 80V L1-NFLOAT32 CDABV L1-N (float)Read
IR 96A L1FLOAT32 CDABA L1 (float)Read
IR 110W systemFLOAT32 CDABW system (float)Read
IR 134PF systemFLOAT32 CDABPF systemRead
IR 136FrequencyFLOAT32 CDABFrequencyRead
IR 1280Total kWh+UINT64 CDABTotal kWh+ in WhRead
IR 11Carlo Gavazzi identification codeUINT16Model ID (99 = WM50)Read
IR 49666Channel 1 active powerFLOAT32 CDABBranch channel 1 active powerRead

Enable Modbus control & writes

Fit a communication module (the status word at 4002h shows MC485232 or MCETH as present) and set its communication parameters on the instrument as described in the WM50 instruction manual; this document does not list them.

Byte order & addressing

Network setup

Watch out for

Carlo Gavazzi WM50 power analyzer with TCD branch channels 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.

81 of 81 shown
Carlo Gavazzi WM50 power analyzer with TCD branch channels Modbus register map
TableAddressNameDescriptionTypeOrderScaleUnitsAccessValues / bits
IR0doc 300001 / 0000hBase firmware versionHigh byte ASCII model letter (A = WM50AV5); low byte revision number.UINT16Read
IR1doc 300002 / 0001hEthernet module firmware versionOnly with the MCETH module; 0 if absent. High byte model letter, low byte revision.UINT16Read
IR11doc 300012 / 000BhCarlo Gavazzi identification codeReads 99 (0x0063) for WM50.UINT16Read99 = WM50
IR32doc 300033 / 0020hSerial number13 ASCII characters, two per register, high byte first.STRING[14]Read
IR80doc 300081 / 0050hV L1-NFLOAT32CDABVRead
IR82doc 300083 / 0052hV L2-NFLOAT32CDABVRead
IR84doc 300085 / 0054hV L3-NFLOAT32CDABVRead
IR86doc 300087 / 0056hV L-N systemFLOAT32CDABVRead
IR88doc 300089 / 0058hV L1-L2FLOAT32CDABVRead
IR90doc 300091 / 005AhV L2-L3FLOAT32CDABVRead
IR92doc 300093 / 005ChV L3-L1FLOAT32CDABVRead
IR94doc 300095 / 005EhV L-L systemFLOAT32CDABVRead
IR96doc 300097 / 0060hA L1FLOAT32CDABARead
IR98doc 300099 / 0062hA L2FLOAT32CDABARead
IR100doc 300101 / 0064hA L3FLOAT32CDABARead
IR102doc 300103 / 0066hA NCalculated by the base unit, or measured when the optional module is fitted.FLOAT32CDABARead
IR104doc 300105 / 0068hW L1FLOAT32CDABWRead
IR106doc 300107 / 006AhW L2FLOAT32CDABWRead
IR108doc 300109 / 006ChW L3FLOAT32CDABWRead
IR110doc 300111 / 006EhW systemFLOAT32CDABWRead
IR112doc 300113 / 0070hVA L1FLOAT32CDABVARead
IR114doc 300115 / 0072hVA L2FLOAT32CDABVARead
IR116doc 300117 / 0074hVA L3FLOAT32CDABVARead
IR118doc 300119 / 0076hVA systemFLOAT32CDABVARead
IR120doc 300121 / 0078hvar L1FLOAT32CDABvarRead
IR122doc 300123 / 007Ahvar L2FLOAT32CDABvarRead
IR124doc 300125 / 007Chvar L3FLOAT32CDABvarRead
IR126doc 300127 / 007Ehvar systemFLOAT32CDABvarRead
IR128doc 300129 / 0080hPF L1Negative = leading (capacitive), positive = lagging (inductive).FLOAT32CDABRead
IR130doc 300131 / 0082hPF L2Negative = leading (capacitive), positive = lagging (inductive).FLOAT32CDABRead
IR132doc 300133 / 0084hPF L3Negative = leading (capacitive), positive = lagging (inductive).FLOAT32CDABRead
IR134doc 300135 / 0086hPF systemNegative = leading (capacitive), positive = lagging (inductive).FLOAT32CDABRead
IR136doc 300137 / 0088hFrequencyFLOAT32CDABHzRead
IR138doc 300139 / 008AhAsymmetry L-NFLOAT32CDAB%Read
IR140doc 300141 / 008ChAsymmetry L-LFLOAT32CDAB%Read
IR142doc 300143 / 008EhPhase sequence+1 = L1-L2-L3 sequence, -1 = wrong sequence.FLOAT32CDABRead
IR154doc 300153 / 009AhA systemSource prints Modicon 300153 for this row; the physical address 009Ah is used.FLOAT32CDABARead
IR1280doc 301281 / 0500hTotal kWh+Imported active energy. Counted in Wh / varh.UINT64CDABWhRead
IR1284doc 301285 / 0504hTotal kvarh+Counted in Wh / varh.UINT64CDABvarhRead
IR1288doc 301289 / 0508hTotal kWh-Exported active energy. Counted in Wh / varh.UINT64CDABWhRead
IR1292doc 301293 / 050ChTotal kvarh-Counted in Wh / varh.UINT64CDABvarhRead
IR1296doc 301297 / 0510hPartial kWh+Resettable partial counter. Counted in Wh / varh.UINT64CDABWhRead
IR1300doc 301301 / 0514hPartial kvarh+Counted in Wh / varh.UINT64CDABvarhRead
IR1304doc 301305 / 0518hPartial kWh-Counted in Wh / varh.UINT64CDABWhRead
IR1308doc 301309 / 051ChPartial kvarh-Counted in Wh / varh.UINT64CDABvarhRead
IR1316doc 301317 / 0524hTariff 1 kWh+UINT64CDABWhRead
IR1332doc 301333 / 0534hTariff 2 kWh+UINT64CDABWhRead
IR1520doc 301521 / 05F0hReal-time tariffUINT16Read0 = Tariff 1; 1 = Tariff 2; 2 = Tariff 3; 3 = Tariff 4; 4 = Tariff 5; 5 = Tariff 6; 6 = Tariff disabled
IR16384doc 316385 / 4000hVirtual alarmsBITMAP16Readbit 0 = Alarm 1 on; bit 1 = Alarm 2 on; bit 2 = Alarm 3 on; bit 3 = Alarm 4 on; bit 4 = Alarm 5 on; bit 5 = Alarm 6 on; bit 6 = Alarm 7 on; bit 7 = Alarm 8 on; bit 8 = Alarm 9 on; bit 9 = Alarm 10 on; bit 10 = Alarm 11 on; bit 11 = Alarm 12 on; bit 12 = Alarm 13 on; bit 13 = Alarm 14 on; bit 14 = Alarm 15 on; bit 15 = Alarm 16 on
IR16385doc 316386 / 4001hOutput port status and configurationBits 2-7: port closed (non-pulse ports). Bits 10-15: port set as pulse output.BITMAP16Readbit 2 = Port 1 closed; bit 3 = Port 2 closed; bit 4 = Port 3 closed; bit 5 = Port 4 closed; bit 6 = Port 5 closed; bit 7 = Port 6 closed; bit 10 = Port 1 configured as pulse; bit 11 = Port 2 configured as pulse; bit 12 = Port 3 configured as pulse; bit 13 = Port 4 configured as pulse; bit 14 = Port 5 configured as pulse; bit 15 = Port 6 configured as pulse
IR16386doc 316387 / 4002hHardware modules fittedBITMAP16Readbit 0 = MC485232 present; bit 1 = MCETH present; bit 2 = MATPN present; bit 3 = MFI6R4 present; bit 4 = MFI6O6 present
IR16387doc 316388 / 4003hInput port statusInverted logic: bit = 0 means the input is closed, 1 means open.BITMAP16Readbit 0 = Port 1 open; bit 1 = Port 2 open; bit 2 = Port 3 open; bit 3 = Port 4 open; bit 4 = Port 5 open; bit 5 = Port 6 open
IR16391doc 316392 / 4007hWiring check statusAll bits 0 = wiring correct.BITMAP16Readbit 0 = Wrong voltage sequence; bit 1 = Current L1 inverted; bit 2 = Current L2 inverted; bit 3 = Current L3 inverted; bit 4 = Currents L1/L2 swapped; bit 5 = Currents L1/L3 swapped; bit 6 = Currents L2/L3 swapped; bit 7 = Currents L1/L2/L3 swapped
IR49408doc 349409 / C100hChannel 1 voltage referencePhase this TCD channel is referenced to.UINT16Read1 = L1; 2 = L2; 3 = L3
IR49664doc 349665 / C200hChannel 1 currentTCD branch channel; channel n starts 14 registers after channel n-1 (channel 96 at C732h).FLOAT32CDABARead
IR49666doc 349667 / C202hChannel 1 active powerTCD branch channel; channel n starts 14 registers after channel n-1 (channel 96 at C732h).FLOAT32CDABWRead
IR49668doc 349669 / C204hChannel 1 reactive powerTCD branch channel; channel n starts 14 registers after channel n-1 (channel 96 at C732h).FLOAT32CDABvarRead
IR49670doc 349671 / C206hChannel 1 apparent powerTCD branch channel; channel n starts 14 registers after channel n-1 (channel 96 at C732h).FLOAT32CDABVARead
IR49672doc 349673 / C208hChannel 1 power factorTCD branch channel; channel n starts 14 registers after channel n-1 (channel 96 at C732h).FLOAT32CDABRead
IR49674doc 349675 / C20AhChannel 1 THD currentTCD branch channel; channel n starts 14 registers after channel n-1 (channel 96 at C732h).FLOAT32CDAB%Read
IR51040doc 351041 / C760hLoad 1 system voltage2-phase/3-phase load built from TCD channels.FLOAT32CDABVRead
IR51042doc 351043 / C762hLoad 1 current L12-phase/3-phase load built from TCD channels.FLOAT32CDABARead
IR51044doc 351045 / C764hLoad 1 current L22-phase/3-phase load built from TCD channels.FLOAT32CDABARead
IR51046doc 351047 / C766hLoad 1 current L3Only when the load is configured 3-phase.FLOAT32CDABARead
IR51048doc 351049 / C768hLoad 1 active power2-phase/3-phase load built from TCD channels.FLOAT32CDABWRead
IR51054doc 351055 / C76EhLoad 1 power factor2-phase/3-phase load built from TCD channels.FLOAT32CDABRead
HR5183doc 305184 / 143FhDefault tariffTariff used when tariff management is set to remote command; default 6.UINT16Read/write0 = Tariff 1; 1 = Tariff 2; 2 = Tariff 3; 3 = Tariff 4; 4 = Tariff 5; 5 = Tariff 6; 6 = Disabled
HR12549doc 312550 / 3105hRemote output port 1Needs an MFI6O6 or MFI6R4 module and the port set as REMOTE.UINT16Read/write0 = Open; 1 = Close
HR12550doc 312551 / 3106hRemote output port 2Needs an MFI6O6 or MFI6R4 module and the port set as REMOTE.UINT16Read/write0 = Open; 1 = Close
HR12551doc 312552 / 3107hRemote output port 3Needs an MFI6O6 or MFI6R4 module and the port set as REMOTE.UINT16Read/write0 = Open; 1 = Close
HR12552doc 312553 / 3108hRemote output port 4Needs an MFI6O6 or MFI6R4 module and the port set as REMOTE.UINT16Read/write0 = Open; 1 = Close
HR12553doc 312554 / 3109hRemote output port 5Needs an MFI6O6 or MFI6R4 module and the port set as REMOTE.UINT16Read/write0 = Open; 1 = Close
HR12554doc 312555 / 310AhRemote output port 6Needs an MFI6O6 or MFI6R4 module and the port set as REMOTE.UINT16Read/write0 = Open; 1 = Close
HR13568doc 313569 / 3500hReset total kWh+Write 1 to execute.UINT16Write1 = Execute
HR13569doc 313570 / 3501hReset total kvarh+Write 1 to execute.UINT16Write1 = Execute
HR13570doc 313571 / 3502hReset total kWh-Write 1 to execute.UINT16Write1 = Execute
HR13571doc 313572 / 3503hReset total kvarh-Write 1 to execute.UINT16Write1 = Execute
HR13572doc 313573 / 3504hReset partial kWh+Write 1 to execute.UINT16Write1 = Execute
HR13573doc 313574 / 3505hReset partial kvarh+Write 1 to execute.UINT16Write1 = Execute
HR13574doc 313575 / 3506hReset partial kWh-Write 1 to execute.UINT16Write1 = Execute
HR13575doc 313576 / 3507hReset partial kvarh-Write 1 to execute.UINT16Write1 = Execute

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 WM50 power analyzer with TCD branch channels

What Modbus registers does the Carlo Gavazzi WM50 power analyzer with TCD branch channels have?

This map lists 81 registers: 66 input registers, 15 holding registers. 15 of them can be written. Registers vary with firmware, options and configuration, so confirm against the device.

Are the Carlo Gavazzi WM50 power analyzer with TCD branch channels 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. Each row shows a 6-digit Modicon number for function 04 (3xxxxx; replace the first digit with 4 for function 03) beside the hex 'physical address' that the document says goes in the frame. Wire address = physical address: 300081 / 0050h is requested as 0x0050.

What byte order does the Carlo Gavazzi WM50 power analyzer with TCD branch channels 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 WM50 power analyzer with TCD branch channels?

Start with IR 80 V L1-N (V L1-N (float)); IR 96 A L1 (A L1 (float)); IR 110 W system (W system (float)); IR 134 PF system (PF system); IR 136 Frequency (Frequency); IR 1280 Total kWh+ (Total kWh+ in Wh); IR 11 Carlo Gavazzi identification code (Model ID (99 = WM50)); IR 49666 Channel 1 active power (Branch channel 1 active power).

How do I enable Modbus control of the Carlo Gavazzi WM50 power analyzer with TCD branch channels?

Fit a communication module (the status word at 4002h shows MC485232 or MCETH as present) and set its communication parameters on the instrument as described in the WM50 instruction manual; this document does not list them.

Where is the official Carlo Gavazzi WM50 power analyzer with TCD branch channels Modbus documentation?

The source is WM50 Communication Protocol (User version) (rev. 1.0.0), revision 2017-09-27, published free by Carlo Gavazzi at https://www.gavazziautomation.com/fileadmin/images/PIM/OTHERSTUFF/COMPRO/WM50_CP.pdf.

More Carlo Gavazzi Modbus register maps

Source: WM50 Communication Protocol (User version) · rev. 1.0.0 · rev. 2017-09-27. Register numbers, types, scaling and units are reproduced as published; descriptions are our own.