Carlo Gavazzi WM30 / WM40 Modbus register map
Modular three-phase power analyzers (96 mm panel), Modbus RTU or TCP through a communication module
- Official
- 531 registers
- Modbus TCP and RTU
- Revision 2 · 2026-10-17
- Identity: model, firmware
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus TCP and RTU
- Unit ID
- 1
- TCP port
- 502default
- Serial
- 9600 8N1 · 9600 baud, 8 data bits, none parity, 1 stop bit
- Byte / word order
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 0-based
- Max read
- 125 registers per request
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 93 holding registers, 438 input registers
- Groups
- 11
- Revision
- 2 · 2026-10-17
- Added
- ()
- File
- maps/carlo-gavazzi/wm30-wm40.mbmap.json · 87 KB · history
- SHA-256
- d67ad6dcf6faea5d08fc50de3787043acd7d3df76116d7d7630ff5908272a6c9
- Manufacturer
- gavazziautomation.com
Device identity
What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.
| Role | Register | Address | Type | Values |
|---|---|---|---|---|
| Firmware | Base firmware version revision | input 0 | uint16 bits 0–7 | |
| Model | Carlo Gavazzi identification code | input 11 | uint16 | 65 = WM30, 66 = WM40, 98 = WM20 |
Sources and notes
- WM20-WM30-WM40 Communication Protocol · version rev. 3.0, 2016-02-17
Source: Carlo Gavazzi, "WM20-WM30-WM40 Communication Protocol", rev. 3.0 (2016-02-17)
- FC03 or FC04 read (the same values), FC06 and FC10 write; at most 125 registers per read.
- Floats and 64-bit integers are low word first (bytes high first in each word).
- Firmware codes in the protocol: X = WM30, Y = WM40, Z = WM20, followed by the revision. Registers without a note are on both WM30 and WM40; most min, max and demand max values and the odd/even harmonics are WM40 only.
- Not in this map: harmonic FFT blocks (0x0600-0x08D0), harmonic phase angles (0x0900), alarm set-up blocks (0x1050, 0x1500), per-variable min/max resets (0x3200) and module settings other than RS485.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 0 | uint16 bits 8–15 | R | High byte: ASCII model letter (A = AV5, B = AV6, C = AV4, D = AV7); low byte: revision | |||
| IR | 0 | uint16 bits 0–7 | R | ||||
| IR | 80 | float32 CDAB | R | V | |||
| IR | 82 | float32 CDAB | R | V | |||
| IR | 84 | float32 CDAB | R | V | |||
| IR | 86 | float32 CDAB | R | V | |||
| IR | 88 | float32 CDAB | R | V | |||
| IR | 90 | float32 CDAB | R | V | |||
| IR | 92 | float32 CDAB | R | V | |||
| IR | 94 | float32 CDAB | R | V | |||
| IR | 96 | float32 CDAB | R | A | |||
| IR | 98 | float32 CDAB | R | A | |||
| IR | 100 | float32 CDAB | R | A | |||
| IR | 102 | float32 CDAB | R | A | Calculated by the base; measured by the optional module on WM40 | ||
| IR | 104 | float32 CDAB | R | W | |||
| IR | 106 | float32 CDAB | R | W | |||
| IR | 108 | float32 CDAB | R | W | |||
| IR | 110 | float32 CDAB | R | W | |||
| IR | 112 | float32 CDAB | R | VA | |||
| IR | 114 | float32 CDAB | R | VA | |||
| IR | 116 | float32 CDAB | R | VA | |||
| IR | 118 | float32 CDAB | R | VA | |||
| IR | 120 | float32 CDAB | R | var | |||
| IR | 122 | float32 CDAB | R | var | |||
| IR | 124 | float32 CDAB | R | var | |||
| IR | 126 | float32 CDAB | R | var | |||
| IR | 128 | float32 CDAB | R | Negative = lead (C), positive = lag (L) | |||
| IR | 130 | float32 CDAB | R | ||||
| IR | 132 | float32 CDAB | R | ||||
| IR | 134 | float32 CDAB | R | ||||
| IR | 136 | float32 CDAB | R | Hz | |||
| IR | 138 | float32 CDAB | R | % | |||
| IR | 140 | float32 CDAB | R | % | |||
| IR | 142 | float32 CDAB | R | +1 = L1-L2-L3, -1 = wrong sequence | |||
| IR | 144 | float32 CDAB | R | WM40 only | |||
| IR | 146 | float32 CDAB | R | WM40 only | |||
| IR | 148 | float32 CDAB | R | WM40 only | |||
| IR | 150 | float32 CDAB | R | Optional module only; WM40 only | |||
| IR | 152 | float32 CDAB | R | Optional module only; WM40 only | |||
| IR | 160 | float32 CDAB | R | % | |||
| IR | 162 | float32 CDAB | R | % | |||
| IR | 164 | float32 CDAB | R | % | |||
| IR | 166 | float32 CDAB | R | % | |||
| IR | 168 | float32 CDAB | R | % | |||
| IR | 170 | float32 CDAB | R | % | |||
| IR | 172 | float32 CDAB | R | % | |||
| IR | 174 | float32 CDAB | R | % | |||
| IR | 176 | float32 CDAB | R | % | |||
| IR | 178 | float32 CDAB | R | % | WM40 only | ||
| IR | 180 | float32 CDAB | R | % | WM40 only | ||
| IR | 182 | float32 CDAB | R | % | WM40 only | ||
| IR | 184 | float32 CDAB | R | % | WM40 only | ||
| IR | 186 | float32 CDAB | R | % | WM40 only | ||
| IR | 188 | float32 CDAB | R | % | WM40 only | ||
| IR | 190 | float32 CDAB | R | % | WM40 only | ||
| IR | 192 | float32 CDAB | R | % | WM40 only | ||
| IR | 194 | float32 CDAB | R | % | WM40 only | ||
| IR | 196 | float32 CDAB | R | % | WM40 only | ||
| IR | 198 | float32 CDAB | R | % | WM40 only | ||
| IR | 200 | float32 CDAB | R | % | WM40 only | ||
| IR | 202 | float32 CDAB | R | % | WM40 only | ||
| IR | 204 | float32 CDAB | R | % | WM40 only | ||
| IR | 206 | float32 CDAB | R | % | WM40 only | ||
| IR | 208 | float32 CDAB | R | % | WM40 only | ||
| IR | 210 | float32 CDAB | R | % | WM40 only | ||
| IR | 212 | float32 CDAB | R | % | WM40 only | ||
| IR | 214 | float32 CDAB | R | % | WM40 only | ||
| IR | 216 | float32 CDAB | R | % | WM40 only | ||
| IR | 218 | float32 CDAB | R | % | WM40 only | ||
| IR | 336 | float32 CDAB | R | V | |||
| IR | 338 | float32 CDAB | R | V | |||
| IR | 340 | float32 CDAB | R | V | |||
| IR | 342 | float32 CDAB | R | V | |||
| IR | 344 | float32 CDAB | R | V | |||
| IR | 346 | float32 CDAB | R | V | |||
| IR | 348 | float32 CDAB | R | V | |||
| IR | 350 | float32 CDAB | R | V | |||
| IR | 352 | float32 CDAB | R | A | |||
| IR | 354 | float32 CDAB | R | A | |||
| IR | 356 | float32 CDAB | R | A | |||
| IR | 358 | float32 CDAB | R | A | |||
| IR | 360 | float32 CDAB | R | W | |||
| IR | 362 | float32 CDAB | R | W | |||
| IR | 364 | float32 CDAB | R | W | |||
| IR | 366 | float32 CDAB | R | W | |||
| IR | 368 | float32 CDAB | R | VA | |||
| IR | 370 | float32 CDAB | R | VA | |||
| IR | 372 | float32 CDAB | R | VA | |||
| IR | 374 | float32 CDAB | R | VA | |||
| IR | 376 | float32 CDAB | R | var | |||
| IR | 378 | float32 CDAB | R | var | |||
| IR | 380 | float32 CDAB | R | var | |||
| IR | 382 | float32 CDAB | R | var | |||
| IR | 384 | float32 CDAB | R | Negative = lead (C), positive = lag (L) | |||
| IR | 386 | float32 CDAB | R | ||||
| IR | 388 | float32 CDAB | R | ||||
| IR | 390 | float32 CDAB | R | ||||
| IR | 392 | float32 CDAB | R | Hz | |||
| IR | 394 | float32 CDAB | R | % | |||
| IR | 396 | float32 CDAB | R | % |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).