> For the complete documentation index, see [llms.txt](https://docs.smart-stuff.nl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.smart-stuff.nl/p1-modbus-dongle/firmware-v2-current/register-mapping/phoenix-eem-xm3xx.md).

# Phoenix Contact EEM / XM3xx

## Mapping behaviour

* Device Manager mapping value: `9`
* Profile: `PHOENIX`
* Read function codes: `FC03` and `FC04`
* Register widths: 32-bit entries unless a text/fill range is shown
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type      | Source or fixed value          | Conversion | Missing         |
| ----------------------- | ----: | --------- | ------------------------------ | ---------- | --------------- |
| `32768` / `0x8000`      |     2 | `float32` | `line_voltage_l12_v`           | —          | source\_default |
| `32770` / `0x8002`      |     2 | `float32` | `line_voltage_l23_v`           | —          | source\_default |
| `32772` / `0x8004`      |     2 | `float32` | `line_voltage_l31_v`           | —          | source\_default |
| `32774` / `0x8006`      |     2 | `float32` | `voltage_l1_v`                 | —          | source\_default |
| `32776` / `0x8008`      |     2 | `float32` | `voltage_l2_v`                 | —          | source\_default |
| `32778` / `0x800A`      |     2 | `float32` | `voltage_l3_v`                 | —          | source\_default |
| `32780` / `0x800C`      |     2 | `float32` | `constant 50.0f`               | —          | —               |
| `32782` / `0x800E`      |     2 | `float32` | `current_l1_a`                 | —          | source\_default |
| `32784` / `0x8010`      |     2 | `float32` | `current_l2_a`                 | —          | source\_default |
| `32786` / `0x8012`      |     2 | `float32` | `current_l3_a`                 | —          | source\_default |
| `32790` / `0x8016`      |     2 | `float32` | `net_power_total_kw`           | scale 1000 | source\_default |
| `32792` / `0x8018`      |     2 | `float32` | `constant 0.0f`                | —          | —               |
| `32794` / `0x801A`      |     2 | `float32` | `apparent_power_total_va`      | —          | source\_default |
| `32796` / `0x801C`      |     2 | `float32` | `constant 1.0f`                | —          | —               |
| `32798` / `0x801E`      |     2 | `float32` | `net_power_l1_kw`              | scale 1000 | source\_default |
| `32800` / `0x8020`      |     2 | `float32` | `net_power_l2_kw`              | scale 1000 | source\_default |
| `32802` / `0x8022`      |     2 | `float32` | `net_power_l3_kw`              | scale 1000 | source\_default |
| `32804` / `0x8024`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32806` / `0x8026`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32808` / `0x8028`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32810` / `0x802A`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32812` / `0x802C`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32814` / `0x802E`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32816` / `0x8030`      |     2 | `float32` | `constant 1.0f`                | —          | —               |
| `32818` / `0x8032`      |     2 | `float32` | `constant 1.0f`                | —          | —               |
| `32820` / `0x8034`      |     2 | `float32` | `constant 1.0f`                | —          | —               |
| `32859` / `0x805B`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32875` / `0x806B`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32877` / `0x806D`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32879` / `0x806F`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33272` / `0x81F8`      |     2 | `float32` | `energy_delivered_tariff1_kwh` | —          | source\_default |
| `33274` / `0x81FA`      |     2 | `float32` | `energy_delivered_tariff2_kwh` | —          | source\_default |
| `33276` / `0x81FC`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33278` / `0x81FE`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33291` / `0x820B`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33303` / `0x8217`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33315` / `0x8223`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33327` / `0x822F`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34822` / `0x8806`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34824` / `0x8808`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34826` / `0x880A`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34828` / `0x880C`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34830` / `0x880E`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34832` / `0x8810`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `37630` / `0x92FE`      |     2 | `float32` | `energy_total_abs_kwh`         | —          | source\_default |
| `37638` / `0x9306`      |     2 | `float32` | `energy_delivered_total_kwh`   | —          | source\_default |
| `37646` / `0x930E`      |     2 | `float32` | `energy_returned_total_kwh`    | —          | source\_default |
| `37686` / `0x9336`      |     2 | `float32` | `reactive_energy_total_varh`   | —          | source\_default |
| `37712` / `0x9350`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `37714` / `0x9352`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `37716` / `0x9354`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `37718` / `0x9356`      |     2 | `float32` | `energy_total_abs_kwh`         | —          | source\_default |
| `40129` / `0x9CC1`      |     2 | `uint32`  | `device_serial_u32`            | —          | source\_default |
| `40131` / `0x9CC3`      |     2 | `uint32`  | `constant 0x0107`              | —          | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.
