Skip to main content

Phoenix Contact EEM-EM3xx / EEM-DM3xx (MID energy meter)

Status: Vendor Confirmed · Register points: 569 · Transports: Modbus RTU, Modbus TCP

A curated ModDef profile for the Phoenix Contact EEM-EM3xx / EEM-DM3xx (MID energy meter). Import it as phoenixcontact.eem-em3xx or load the .moddef.yaml directly.

Connect to one over Web Serial and watch its values live in the device dashboard.

Usage

Load the profile, bind a transport, and read a point by name. The runtime applies the offset, scaling, byte order, and sentinels from the definition.

doc, _ := moddef.Load("phoenix-contact-eem-em3xx.moddef.yaml")
dev, _ := client.New(doc, "phoenix-contact-eem-em3xx", transport) // your modbus.Transport
v, _ := dev.ReadPoint(ctx, "voltage_l1_n")
fmt.Println(v)

Commands

Multi-step register procedures (spec §11.7) this profile defines — write params, arm a trigger, poll for completion, then read the result. Run one with your language's command executor (RunCommand, runCommand, run_command, or md_cmd_begin/md_cmd_tick in C/C++).

start_all_partial_meters — Start All Partial Energy Meters

Write 0x0D01 to register 0x0526 to start every partial energy meter, then read back the status bitmap (manual table A-22)

Results

FieldType
statusUINT32

stop_all_partial_meters — Stop All Partial Energy Meters

Write 0x0D02 to register 0x0526 to stop every partial energy meter, then read back the status bitmap (manual table A-22)

Results

FieldType
statusUINT32

reset_all_partial_meters — Reset All Partial Energy Meters

Write 0x0D03 to register 0x0526 to reset every partial energy meter to zero, then read back the status bitmap. The MID-sealed total energy meters are not affected (manual table 6-1)

Results

FieldType
statusUINT32

sync_demand_interval — Synchronize Demand Interval

Close the running mean-value interval and start a new one by writing 0x0001 to register 0x053D; only effective when 0x053C selects broadcast synchronization (manual table A-18)

Results

FieldType
interval_configUINT32

save_configuration — Save Configuration And Restart

Buffer the pending configuration in EEPROM and restart the device by writing 0xA1 to register 0xE200 (manual table A-21). Communication drops for the duration of the restart

Results

FieldType
serial_numberSTRING

load_configuration — Load Configuration From EEPROM

Discard the pending configuration and reload the stored one by writing 0xB2 to register 0xE200 (manual table A-21)

Results

FieldType
modbus_addressUINT32

Measurands

The 13 semantic quantities this device reports, each linked to the measurand catalog. Query a device by measurand instead of a raw point when you want portable code.

Base quantityNameUnitDescription
voltageVoltageVRMS voltage; qualify with phase_ref (L1_N, L1_L2, ...)
currentCurrentARMS current; qualify with phase_ref / direction
active_powerActive PowerWInstantaneous real power
reactive_powerReactive PowervarInstantaneous reactive power
apparent_powerApparent PowerVAInstantaneous apparent power
power_factorPower Factor1 (ratio)Ratio of real to apparent power (dimensionless)
frequencyFrequencyHzGrid frequency
energy_activeActive EnergyWhCumulative active energy register
energy_reactiveReactive EnergyvarhCumulative reactive energy register
energy_apparentApparent EnergyVAhCumulative apparent energy register
device_statusDevice StatusundefinedOverall device operating status (enum)
fault_codeFault CodeundefinedVendor fault code (enum or integer)
alarm_statusAlarm StatusundefinedAlarm state (enum or flag set)

Source