MICROMASTER 440 Motor kW and kWh Mapping Over PROFIBUS

David Krause13 min read
SiemensTechnical ReferenceVFD / Drives
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Overview

The Siemens MICROMASTER 440 (MM440) is a general-purpose vector inverter that publishes motor, drive, and command data to a higher-level controller (PLC / DCS / SCADA) over an optional PROFIBUS DP module (catalog number 6SE6400-1PB00-0AA0). The drive does not expose its instantaneous kilowatt figure by default to a CCR (Central Control Room) dashboard. To publish motor shaft kW or cumulative kWh, the engineer must explicitly route a connector output into a PZD (Process Data Word) word through index parameter P2051 and read the resulting word on the Simatic S7 CPU using SFC14 (DPRD_DAT).

This reference covers the connector/binector (BICO) model that drives MM440 signal routing, the exact parameter indices used to publish r0032 (active filtered power, kW) and r0039 (energy consumption, kWh), the NORM_X scaling rules with P2000/P2002/P2003, the S7 receiving code, and field-proven commissioning checks. Companion drives in the MICROMASTER family (MM420, MM430) use the same routing model with minor parameter number differences.

Safety note. Any time you wire motor terminals (U, V, W) or insert/replace the PROFIBUS option module, the MM440 must be fully de-energized, the DC bus discharged, and the supply locked out per IEC 60204-1. After re-assembly, run a no-load commissioning pass before connecting mechanical load.

Power, Energy, and Torque: Which MM440 Parameter Do You Actually Want?

Engineers frequently interchange the MM440 power-related parameters because three of them are commonly displayed in similar kW units. Choosing the wrong one yields a value that updates correctly but does not match the meter at the feeder or the trend on the SCADA. The three candidates are:

Parameter Quantity Unit Type Range / Resolution Use Case
r0032 Act. filtered power (motor shaft) kW Floating-point, filtered ±200 % of P0305 Real-time load share, surge detection, dashboard
r0039 Energy consumption meter (cumulative) kWh Unsigned 32-bit integer 0 to 4 294 967 295 Shift reports, billing, ISO 50001 reporting
r0034 Motor thermal utilization (i²t) % Percentage 0 to 100 (100 = trip) Motor protection trending

For instantaneous motor kilowatt (the original question in this thread), route r0032 to a PZD word. For cumulative kilowatt-hours since last reset, read r0039 over the PKW channel or split it into two PZD words for cyclic transfer.

The MM440 Connector and Binector Model (BICO)

Every MM440 firmware version implements a Siemens-proprietary signal routing layer called BICO. It separates signal sources from signal sinks:

  • Binectors are single-bit digital signals. Identified as Bxxxx (e.g., B0007 = drive fault active).
  • Connectors are 16/32-bit analog signals. Identified as CO: xxxx (output) or CI: xxxx (input of a function block).

The PROFIBUS PZD interface is itself a function block. It has 10 outbound CI (input) connectors on parameter P2051[0..9] that select which connector output each PZD word carries. Setting P2051[8] = 32 is the literal BICO statement "PZD word 9 source equals connector r0032 (filtered power)".

This indirection is the reason a default MM440 cannot publish kW: P2051[i] is factory-defaulted to control/status words, and the engineer must re-target it.

PROFIBUS Hardware Layer and Telegram Selection

Option Module Identification

Verify the option board before mapping parameters:

Catalog Number Protocol Baud Rate Notes
6SE6400-1PB00-0AA0 PROFIBUS DP-V0/V1 9.6 kbps to 12 Mbps Standard MM440 DP module
6SE6400-1PN00-0AA0 PROFINET IO 100 Mbps Migration path; uses SFB52/53
6SE6400-1CB00-0AA0 CANopen up to 1 Mbps Use CiA 402 mapping

PPO Type and PZD Word Budget

The MM440 GSD file (typically SIEM8100.GSD) exposes five PPO types per the PROFIdrive profile v3:

PPO Type PKW Words PZD Words (out / in) Recommended Use
1 4 2 / 2 Speed control + cyclic parameter access (r0039 read)
2 4 4 / 4 Speed + motor current + status
3 0 2 / 2 Pure speed control, fastest bus cycle
4 0 6 / 6 Speed + kW + current + torque
5 0 10 / 10 Full telemetry including r0039 split

For the "publish motor kW to CCR" requirement, PPO type 4 or 5 is recommended. PPO type 3 is too narrow; PPO types 1 and 2 require you to steal one PZD slot for r0032 or fall back on PKW.

Parameter Reference Table (Drive-Side)

Parameter Access Index Type Default Description
r0032 RO — FLOAT — CO: Act. filtered power (motor shaft, kW)
r0039[0] RO — U32 — CO: Energy consumption meter (kWh)
r0039[1] RO — U32 — CO: Energy recovered (regenerative kWh, vector control only)
P2051[0..9] RW Index U16 0/22/21/25/0/0/0/0/0/0 CI: PZD to CB (source connector for each PZD word)
r2050[0..9] RO Index U16 — CO: PZD from CB (last received PZD word)
P2042 RW — U8 1 PROFIBUS node address (1 to 126)
P0927 RW — U8 0 Parameter changeable via PROFIBUS (0 = no, 1 = yes)
P2000 RW — FLOAT 50.00 Reference frequency (Hz) — NORM_X basis for r0021
P2002 RW — FLOAT = P0305 Reference power (kW) — NORM_X basis for r0032
P2003 RW — FLOAT = P0305 Reference current (A) — NORM_X basis for r0027
P1240 RW — FLOAT 10.0 Vdc controller / load model Tc (filter for r0032)
P1300 RW — U8 1 Open-loop/closed-loop control mode
P0040 RW — U8 0 Reset energy meter (1 = reset, 0 = run)
P0971 RW — U8 0 Save parameters to non-volatile memory (1 = save)

Step-by-Step: Publishing r0032 Over PROFIBUS

Prerequisites

  • MM440 firmware V2.x or V3.x confirmed via r0018.
  • PROFIBUS option module 6SE6400-1PB00-0AA0 seated and locked.
  • Drive commissioned: P0010 = 0, motor data (P0301 through P0311) entered, motor identification (P1910 = 1) completed.
  • STEP 7 / TIA Portal project with MM440 GSD imported and slave configured for PPO type 4 or 5.

Procedure

  1. Place the drive in Ready to Run: confirm P0010 = 0 (commissioning filter released).
  2. Set access level to Expert: P0003 = 3.
  3. Route command and setpoint to PROFIBUS:
    P0700 = 6 (selection command source = PROFIBUS)
    P1000 = 6 (setpoint source = PROFIBUS)
  4. Confirm PROFIBUS configuration parameter:
    P2043 must match the PPO type selected in HW Config. For PPO 5 with 10 PZD words: P2043 = 5 (if available on your firmware revision; otherwise leave default and rely on GSD).
  5. Target the PZD outbound words:
    P2051[0] = 32 (PZD1 = r0032 motor kW)
    P2051[1] = 148 (PZD2 = ZSW1 status word, optional)
    P2051[2] = 21 (PZD3 = actual frequency Hz)
    P2051[3] = 25 (PZD4 = actual current A)
    P2051[4..9] = 0 (unused)
  6. Save to non-volatile memory:
    P0971 = 1 (acknowledges by auto-resetting to 0 within ~3 s).
  7. Power-cycle the drive to apply the new bus configuration.

After this sequence, the next PROFIBUS cycle will populate the slave input PZD area with the listed connector values. The mapping persists across power cycles because P0971 = 1 wrote the index table to EEPROM.

NORM_X Scaling: Reading the Word in Engineering Units

The MM440 PROFIBUS PZD words are encoded as 16-bit NORM_X (also called "Siemens normalized"):

Hex Code Decimal Fraction Meaning
0x0000 0 0 % Zero (positive side)
0x4000 16384 +100 % Reference value (positive)
0x7FFF 32767 +199.99 % Maximum positive
0x8000 -32768 -200 % Maximum negative
0xC000 -16384 -100 % Reference value (negative)

For r0032 (power), the reference basis is P2002 (default = motor nameplate P0305). To convert a raw word read into engineering units:

kW_actual = ( DINT_TO_REAL( INT_TO_DINT( DBW0 ) ) / 16384.0 ) * P2002
percent_load = 100.0 * DINT_TO_REAL( INT_TO_DINT( DBW0 ) ) / 16384.0

If P2002 = 7.50 kW (motor nameplate) and the read word is 0x2000 (8192 decimal), the motor is producing (8192 / 16384) × 7.50 = 3.75 kW, i.e., 50 % load.

Pitfall. If you commission at 400 V / 50 Hz motor nameplate and later swap to a 460 V / 60 Hz motor, P2002 auto-defaults to the new P0305. The PLC scaling math must be updated or you will read half (or double) the expected kW. Always re-derive scaling after a motor swap.

Reading r0039 (Energy Counter) Cyclically on PZD

The kWh counter is a 32-bit unsigned integer. To publish it cyclically without using PKW bandwidth, route two consecutive connector outputs to two consecutive PZD words and reassemble on the S7 side:

  1. P2051[4] = 39 low word + offset trick — on firmware ≥ V3.1 you can split r0039 by mapping connector 39 to the low 16 bits and using a derived scaled value (kW·h integer divided by 1000) for the high word. On most firmware revisions, the cleanest path is:
    Option A (PKW): configure PPO type 1, SFC14/SFC15 with PKW channel set to read parameter 0x0027 (39 decimal).
    Option B (PZD split): assign P2051[4] = 39 and P2051[5] = 0, then apply a scaling block: kWh = DBW_4 + DBW_5 * 65536. This works because r0039 fits in 32 bits; verify scaling by cross-checking against a known load cycle.
  2. On the S7 side, recombine: DWORD_kWh := DBW_HI * 65536 + DBW_LO (treat as unsigned).

For energy reports that survive MM440 power-cycles, the meter is stored in non-volatile memory automatically when the drive is switched off normally (controlled ramp-down). A hard DC-bus discharge during a fault does not corrupt the meter; it freezes at the last value.

Simatic S7 Receiving Code (SFC14 / SFC15)

Reading Motor kW (PPO Type 4, 6 PZD words = 12 bytes)

CALL  "DPRD_DAT"
      LADDR   := W#16#100       // I/O base address from HW Config
      RET_VAL := MW100          // 0 = OK; non-zero = DP error
      RECORD  := P#DB100.DBX0.0 BYTE 12

DB100 layout after the call (per PPO 4 assignment above):

Byte Offset DBW Source Meaning
0–1 DBW0 P2051[0] = 32 Motor kW (NORM_X scaled by P2002)
2–3 DBW2 P2051[1] = 148 Status word 1
4–5 DBW4 P2051[2] = 21 Actual frequency (Hz)
6–7 DBW6 P2051[3] = 25 Actual current (A)
8–11 — — Unused (but RECORD length must cover all 6 PZD)

Scaling Logic in Structured Text

// IEC 61131-3 ST, equivalent to ladder scaling above
IF DB100.DBX10.0 THEN        // drive faulted
    Motor_kW := 0.0;
ELSE
    raw_int := DB100.DBW0;
    // sign-extend 16-bit to 32-bit DINT
    IF raw_int > 32767 THEN
        raw_int := raw_int - 65536;
    END_IF;
    Motor_kW := (DINT_TO_REAL(raw_int) / 16384.0) * RefPower_kW;
END_IF;

Sending Setpoint and Control (SFC15)

CALL  "DPWR_DAT"
      LADDR   := W#16#100
      RECORD  := P#DB200.DBX0.0 BYTE 12
      RET_VAL := MW102

// DB200.DBW0 = control word 1 (STW1, e.g., 0x047E for run)
// DB200.DBW2 = main setpoint (NORM_X of P2000 Hz)

The standard control word sequence (STW1) for a basic run command on MM440 is:

  • 0x047E — OFF1 = 0 prerequisite, ramp enable.
  • 0x047F — OFF1 = 1 (run command).
  • Follow with setpoint word at the same instant or one cycle later.

Diagnostic Data Flow (SVG)

Motor (M)P0305 / P0307MM440 (Inverter)CO: r0032, r0039P2051[i]BICO routingPROFIBUS DPPZD wordsS7 CPUSFC14 → DBCCR / SCADA reads DB100.DBW0 and scales by P2002 for kW

Verification Procedure

  1. With drive stopped, force STW1 = 0x047E via SFC15, then 0x047F to command run.
  2. Read DB100.DBW2 (status). Bit 2 = "Operation enabled" — confirm 1.
  3. Apply no mechanical load. DB100.DBW0 should read within ±5 % of 0x0000 (filtered kW near zero). Some residual is normal due to magnetizing current.
  4. Apply a known mechanical load (e.g., calibrated dynamometer). Compute expected kW from torque × speed / 9550. Compare with DBW0-scaled value. Tolerance: ±3 % at steady state.
  5. Cross-check kWh: meter r0039 on BOP. Run drive at constant load for 5 minutes, compute kWh = (kW × 5 / 60), confirm the meter incremented by approximately that value.
  6. Capture DP diagnostic in STEP 7: Online → PROFIBUS DP → Diagnostics. Confirm no slave diagnostic interrupts and bus cycle time ≤ 5 ms.
  7. Inspect RET_VAL of SFC14 in OB1: must equal 0 (W#16#0000). Non-zero values are W#16#8090 (module missing) or W#16#80A0 (negative acknowledge from slave — typically a PZD length mismatch).

Troubleshooting Matrix

Symptom Root Cause Diagnostic Corrective Action
DBW0 always 0x0000 even under load P2051[0] not set to 32; or drive in commissioning mode (P0010 ≠ 0) BOP shows P2051[0] value Set P2051[0] = 32; confirm P0010 = 0
DBW0 saturates at 0x7FFF regardless of load PZD configured but no run enable; STW1 wrong bits Check DBW2 status bits Send STW1 sequence 047E → 047F, confirm bits 0/3/6 of STW1
DBW0 scaling off by factor of 2 P2002 default mismatch Compare r2002 on BOP with motor plate Set P2002 = P0305 explicitly
DBW0 always 0 even with run command Wrong LADDR in SFC14 Read RET_VAL; check HW Config I/O addresses Correct LADDR to match DP slave slot base
kW value latched at last value Motor model disabled (P1300 = 0/1) and load is dynamic Inspect P1300 Use V/f with slip compensation (P1300 ≥ 2) or vector control
r0039 not incrementing Counter frozen because P0040 = 1 Check P0040 value Set P0040 = 0
SFC14 RET_VAL = W#16#8081 PZD length mismatch between HW Config and RECORD parameter Compare Match RECORD length to configured PZD bytes (e.g., 12 for PPO 4)
Drive enters F0080 (PROFIBUS timeout) Bus cable break, terminating resistor missing, address conflict LED on PROFIBUS module Verify 120 Ω terminators at both ends, unique address
kW value negative when motor runs in reverse Normal — NORM_X signed encoding Read raw word directly Apply ABS() if load sign is irrelevant
SFC14 RET_VAL = W#16#80B0 Drive in fault state, PZD not updated Read r0947 fault code Acknowledge fault via STW1 bit 7, address root cause

Field-Proven Caveats

  • Firmware versions. V2.x of MM440 firmware indexes P2051 from 0 to 9 (10 PZD words). V3.x extends to 0 to 15 in some variants but the slave's GSD must be regenerated if more than 10 are used. Confirm with the firmware version reported in r0018.
  • P2002 on motor swap. The default factory value of P2002 mirrors P0305 at first commissioning only. After subsequent motor data changes the user must re-confirm P2002.
  • Energy meter wrap. At 4 294 967 295 kWh the meter rolls over. For very-high-duty pumps and compressors, sample r0039 into a separate S7 retentive counter and check for delta.
  • Vector control only. The two-element kWh meter (r0039[0] consumed, r0039[1] recovered) is only meaningful when P1300 = 20 or 21 (sensorless/sensor vector control).
  • SINAMICS migration. On SINAMICS G120 (successor to MM440), the equivalent parameters are r31 (active power, kW) and r35 (energy kWh), with STARTER / Startdrive commissioning. The BICO structure is preserved but indexed differently (drive object 1 by default).
  • Determinism. r0032 is filtered with the P1240 time constant. For faster control loops (e.g., load-share within a multi-pump station), reduce P1240 to 1.0 s or use the unfiltered r0031 derivative for the control variable and r0032 for SCADA display.

Reference Documentation

FAQ

What is the difference between r0032 and r0039 on the MICROMASTER 440?

r0032 is the real-time motor shaft power in kW (filtered, instantaneous). r0039 is the cumulative energy in kWh since the last reset. Use r0032 for load trending and dashboards; use r0039 for shift reports, billing, and ISO 50001 energy reports.

How do I publish motor kW from an MM440 to a Simatic S7 over PROFIBUS?

Set P2051[0] = 32 to route connector r0032 into PZD word 1, configure the slave for PPO type 4 or 5, then read the cyclic PZD on the S7 using SFC14 (DPRD_DAT) into a data block. Scale the NORM_X word by dividing by 16384 and multiplying by P2002.

Why is my kW reading stuck at zero even though the motor is running?

Verify three things in order: (1) P2051[0] = 32, (2) the drive is not in commissioning mode (P0010 = 0), and (3) the SFC14 LADDR matches the I/O base address configured in HW Config. Also check the SFC14 RET_VAL for DP errors.

Can I read the kWh energy meter (r0039) without using the PKW channel?

Yes. Map two consecutive PZD words (for example P2051[4] and P2051[5]) to the low and high 16-bit halves of r0039 and reassemble them on the S7 side as a 32-bit unsigned integer. Alternatively, use the PKW channel with PPO type 1 or 2 if you have a PKW slot available.

What should I check when migrating this mapping to a SINAMICS G120?

The connector model is preserved but the active power parameter on G120 is r31 and the energy meter is r35. PZD configuration moves from P2051 to p2051 (lowercase, DO1) and is commissioned via STARTER or SINAMICS Startdrive. PROFINET replacement of the PROFIBUS module uses SFB52/53 (READ/WRITE) on the S7 side instead of SFC14/15.

Back to blog