Configuring MM440 and ABB ACS550/800 Profibus Communication with S7-400
This technical reference covers the complete engineering workflow for integrating eight Siemens MICROMASTER 440 (MM440) inverters and ten ABB ACS550 / ACS800 drives on a single Profibus-DP network, controlled by a SIMATIC S7-400 CPU, with data displayed on WinCC faceplates. It expands the PPO4-only approach with explicit parameter numbers, normalization math, SFC14/SFC15 wrappers, and a reusable Function Block (FB) template for SCADA-driven Start/Stop, direction, and feedback.
1. System Architecture Overview
The network is a classical DP-V0 master/slave topology. The S7-400 (e.g., CPU 414-3 PN/DP or CPU 416-3) acts as the Class 1 master. MM440 drives connect through a Profibus option module (order code 6SE6400-1PB00-0AA0), and ABB ACS550/ACS800 drives connect through a RPBA-01 Profibus adapter. WinCC v7.x runs on a PC station connected via Industrial Ethernet or MPI for operator visualization.
2. Prerequisites
- STEP 7 v5.5 or TIA Portal V15.1+ with the HSP (Hardware Support Package) for the S7-400 and the GSD files for MM440 (
SIEM808F.GSDvia 6SE6400-1PB00-0AA0) and ABB (ABB0810.GSDfor RPBA-01). - MM440 firmware ≥ 3.2 for full PPO4 consistency on 6-word PZD (verify with
r0019= drive firmware). - ABB ACS550 standard firmware (550-01) and ACS800 system firmware ≥ ASXR7210 for type 4 PPO support.
- WinCC v7.4 SP1 or TIA WinCC Professional V15.1, plus a configured PC station routed to the S7-400.
- Import the ABB Drives function blocks for Siemens PLCs - Quick start-up guide (A_A4) for the proven FB template and TIA example project.
3. PPO Type Selection - Why PPO4
PPO (Parameter Process Object) telegrams split the cyclic payload into PKW (parameter channel) and PZD (process data). For drives that are fully configured at commissioning and operated exclusively through process data, PPO4 (0 PKW + 6 PZD) is the universal choice: it is supported on MM440 firmware 3.2+ and on ABB ACS550/ACS800 with the RPBA-01 adapter.
| PPO Type | PKW Words | PZD Words OUT | PZD Words IN | Use Case |
|---|---|---|---|---|
| PPO1 | 4 | 2 | 2 | Legacy parameter acyclic writes during run |
| PPO2 | 4 | 6 | 6 | Full PKW + extended PZD |
| PPO3 | 0 | 2 | 2 | Minimal cyclic I/O |
| PPO4 | 0 | 6 | 6 | Selected: 0 PKW, 6 PZD for both vendors |
| PPO5 | 4 | 10 | 10 | Heavily customized PZD |
With PPO4 active, the first PZD word on the input side is always Status Word 1 (ZSW1) and the first output PZD is always Control Word 1 (STW1). The remaining 5 PZD words are freely mapped using vendor-specific BICO-style connectors (P2051 on Siemens, parameter group 51 on ABB).
4. MM440 Parameter Configuration
Set the following parameters via the BOP-2, STARTER, or the SIMATIC Manager drive commissioning tool. Each drive on the bus needs a unique Profibus address (default 0 → set per drive to avoid DP address conflict).
| Parameter | Value | Meaning |
|---|---|---|
| P0700 | 6 | Command source = Profibus (CB on COMM board) |
| P1000 | 6 | Setpoint source = Profibus |
| P0927 | 1 | Parameter changeable via Profibus |
| P2012 | 6 | PZD length = 6 words (IN/OUT symmetrical) |
| P2013 | 0 | PKW length = 0 words (PPO4) |
| P2051.0 | 51 | OUT PZD2 → Control Word 1 (STW1) |
| P2051.1 | 21 | OUT PZD3 → Main setpoint frequency (NSOLL) |
| P2051.2 | 52 | OUT PZD4 → Control Word 2 (STW2) – not used, set to 0 if not needed |
| P2051.3 | 0 | OUT PZD5 → reserved |
| P2051.4 | 0 | OUT PZD6 → reserved |
| P2051.5 | 0 | OUT PZD7 → reserved |
On the receive side, MM440 returns the data in the order you bind through P2051 INx:
| Parameter | Value | Meaning |
|---|---|---|
| P2051 IN0 | 51 | IN PZD2 → Status Word 1 (ZSW1) |
| P2051 IN1 | 21 | IN PZD3 → Actual frequency (NIST) |
| P2051 IN2 | 53 | IN PZD4 → Status Word 2 (ZSW2) |
| P2051 IN3 | 27 | IN PZD5 → Actual current (IAIST) |
| P2051 IN4 | 32 | IN PZD6 → Actual power (PAIST) |
| P2051 IN5 | 39 | IN PZD7 → Energy meter (kWh) |
4.1 Normalization Reference Values (Siemens)
Siemens drives send process data as integers with reference to the values set in P2000–P2004. The native Siemens protocol uses 0–16384 (4000hex) for 0–100% of the reference value. Use 4000hex for the speed setpoint in the PLC program to start at 100% and scale linearly.
| Parameter | Suggested Value | Meaning |
|---|---|---|
| P2000 | 50.00 Hz | Reference frequency for 100% / 4000h |
| P2002 | Motor rated current × 1.2 (e.g., 7.2 A) | Reference current; choose ≥ max operating current |
| P2003 | Torque reference (Nm) | Reference torque |
| P2004 | 150.0 % | Reference power; values are returned as % of P2004 |
For example, if a motor nameplate is 5.5 kW and you set P2004 = 150%, then 100% power on the bus = 1.5 × 5.5 kW = 8.25 kW. Adjust to suit panel metering.
5. ABB ACS550 and ACS800 Parameter Configuration
ABB uses a parameter group 51 (51.xx) and 52 (52.xx) for process data. With RPBA-01, PPO4 is the supported type for both ACS550 and ACS800. The Profibus node address is set with parameter 51.02 (range 1–126).
| Parameter | ACS550 | ACS800 (with RPBA-01) | Meaning |
|---|---|---|---|
| 51.01 (FBA type) | 1 = Profibus | 1 = Profibus | Fieldbus adapter type |
| 51.02 (Node addr) | 4 (example) | 5 (example) | DP slave address (must match HW Config) |
| 51.03 (Baud rate) | 0 = auto | 0 = auto | Auto-detect 9.6 kbit/s to 12 Mbit/s |
| 51.04 (PPO type) | 4 | 4 | 0 PKW + 6 PZD |
| 51.05 (Telegram type) | PPO4 | PPO4 | Telegram = PPO4 |
| 51.06 (Comm loss t) | 1.0 s | 1.0 s | Time before fieldbus-loss fault |
| 10.01 (Ext1 start) | 10 = Fieldbus | 10.01 = COMM.CW | Start/stop source |
| 11.03 (Ref1 sel) | 3 = FBA ref1 | 11.06 = FBA REF1 | Setpoint source |
5.1 ABB PZD Mapping (PPO4)
Unlike Siemens, the ABB mapping is fixed for the first two words but configurable for the remainder through 52.xx:
| Slot | ABB Default (Fixed) | Note |
|---|---|---|
| OUT PZD1 | Control Word | Always CW (1 = Drive_CTRL_WORD1) |
| OUT PZD2 | Reference 1 | Frequency setpoint |
| OUT PZD3 | Reference 2 (52.03) | Typically unused, can be torque ref |
| OUT PZD4 | 52.04 (default 0) | Free assignment |
| OUT PZD5 | 52.05 (default 0) | Free assignment |
| OUT PZD6 | 52.06 (default 0) | Free assignment |
| Slot | ABB Default (Fixed Input) | Note |
|---|---|---|
| IN PZD1 | Status Word | Always SW (1 = Drive_STATUS_WORD1) |
| IN PZD2 | Actual 1 | Actual frequency (rounded 0–20000) |
| IN PZD3 | 52.11 (default 0) | Free – e.g., motor current |
| IN PZD4 | 52.12 (default 0) | Free – e.g., motor power |
| IN PZD5 | 52.13 (default 0) | Free – e.g., DC bus voltage |
| IN PZD6 | 52.14 (default 0) | Free – e.g., fault word |
5.2 ABB Normalization
ABB uses different scaling depending on the signal:
| Signal | Scale | Example |
|---|---|---|
| Frequency (ref1, actual1) | 0 – 20000 = 0 – 100% of 99.xx | 50 Hz ref → 10000, 60 Hz → 12000 |
| Motor current | 0 – 10000 = 0 – rated current (param 99.06) | 5.0 A at 10.0 A rated → 5000 |
| Motor power | -10000 – 10000 = -100% – 100% of rated power | Sign indicates motoring (positive) vs regenerating (negative) |
| Status / Control Word | Bit-mapped per ABB drive profile | Bit 0 = ON, bit 1 = OFF, bit 3 = FAULT |
6. S7-400 Hardware Configuration (HW Config)
- Open SIMATIC Manager → your S7-400 station → HW Config.
- Insert the CPU (e.g., 6ES7416-3XR05-0AB0) on rail 0, slot 3.
- Drag the MM440 GSD file (Profidrive Drive V3.1) from the catalog → set to PPO type 4 (slot 0: PPO type 4).
- Drag the ABB ACS550 / ACS800 GSD (RPBA-01 v2.x) → set PPO type 4.
- Assign unique DP addresses (e.g., MM440 #1 = 4, MM440 #2 = 5, …, ABB #1 = 12, …, ABB #10 = 21). The address MUST match the drive's parameter
51.02(ABB) or Profibus address set via the DIP switch on the MM440 Profibus option board. - Read the I-address and Q-address ranges. For a PPO4 slave they are 12 bytes of inputs and 12 bytes of outputs (6 PZD × 2 bytes).
Example mapping for the first MM440 (DP address 4) with PPO4:
| Offset | Address | Word | Content |
|---|---|---|---|
| Q 0 | PQW 256 | STW1 | Control Word 1 |
| Q 2 | PQW 258 | NSOLL | Frequency setpoint (4000h = 100%) |
| Q 4 | PQW 260 | STW2 | Control Word 2 |
| Q 6 | PQW 262 | — | Free |
| Q 8 | PQW 264 | — | Free |
| Q 10 | PQW 266 | — | Free |
| I 0 | PIW 256 | ZSW1 | Status Word 1 |
| I 2 | PIW 258 | NIST | Actual frequency (0–4000h) |
| I 4 | PIW 260 | ZSW2 | Status Word 2 |
| I 6 | PIW 262 | IAIST | Actual current (0–4000h relative to P2002) |
| I 8 | PIW 264 | PAIST | Actual power (0–4000h relative to P2004) |
| I 10 | PIW 266 | kWh | Energy counter |
7. SFC14 / SFC15 Programming on S7-400
Although you can read PIW/PQW directly for diagnostic or simple I/O, the recommended pattern for DP slaves with consistent user data > 4 bytes is to use SFC14 (DPRD_DAT) and SFC15 (DPWR_DAT). PPO4 (12 bytes) exceeds the 4-byte consistency limit, so SFC14/15 is mandatory for any guarantee of atomic reads/writes.
7.1 Sample SFC15 / SFC14 Call (Structured Text)
// Drive DB: "DRV_DB_MM4" (instance DB of FB_CTRL_MM4)
// Inputs: iDP_Addr (BYTE) = 4 (logical DP address from HW Config)
// Outputs: DriveData_IN[0..5] (6 WORDs) populated by SFC14
// --- WRITE (PLC → drive) ---
DriveData_OUT[0] := iControlWord; // STW1
DriveData_OUT[1] := iSetpointRaw; // 4000h = P2000
DriveData_OUT[2] := 16#0000; // STW2 (unused)
DriveData_OUT[3] := 0;
DriveData_OUT[4] := 0;
DriveData_OUT[5] := 0;
ret := DPWR_DAT(
LADDR := WORD#16#100, // logical base address of slave (= 256 dec)
RECORD := DriveData_OUT, // ANY pointer to 12 bytes
RET_VAL := wWriteRetVal); // return code (0 = OK)
// --- READ (drive → PLC) ---
ret := DPRD_DAT(
LADDR := WORD#16#100,
RECORD := DriveData_IN, // 12 bytes, 6 WORDs
RET_VAL := wReadRetVal);
// After return, wReadRetVal = 0 → DriveData_IN valid
iStatusWord := DriveData_IN[0]; // ZSW1
rActualFreq_Hz := WORD_TO_REAL(DriveData_IN[1]) / 16384.0 * 50.0;
rActualCurrent := WORD_TO_REAL(DriveData_IN[3]) / 16384.0 * P2002_Motor;
rActualPowerPct := WORD_TO_REAL(DriveData_IN[4]) / 16384.0 * P2004_Pct;
7.2 Error Codes SFC14/15
| RET_VAL (hex) | Meaning | Action |
|---|---|---|
| 0000 | No error | — |
| 8090 | Address not configured / slave missing | Check DP address and wiring |
| 8092 | DP segment fault | Check terminator, cabling |
| 80A0 | Negative acknowledgement from slave | Check slave diagnostics buffer |
| 80B0 | Slave fault | Slave in diagnostic state, call SFC13 |
| 80C0 | Data inconsistency | Length mismatch in RECORD |
| 80C1 | DP slave not ready | Wait for slave startup |
8. Normalization Math and Scaling
8.1 Siemens 0–16384 (4000hex) Reference
Siemens uses a 14-bit signed raw value where 4000hex = 16384dec represents 100% of the configured reference (P2000, P2002, P2003, P2004). For a motor with P2000 = 50 Hz and a raw value 0x4000 received on NIST:
rActualFreq_Hz = (NIST_raw / 16384.0) * P2000
= (16384 / 16384.0) * 50
= 50.0 Hz
For P2002 = 12.0 A and raw 0x4000 on IAIST, current = 12.0 A. For P2004 = 150% and raw 0x4000 on PAIST, power = 150% of motor rated. If the motor is 7.5 kW, that is 11.25 kW.
8.2 ABB 0–20000 Reference
ABB drives with default Drive Profile use 0–20000 = 0–100% of the reference speed (parameter 99.08). For a motor with 50 Hz rated:
rActualFreq_Hz = (Actual1_raw / 20000.0) * RatedFreq_Hz
For a raw value of 10000, frequency = 25 Hz. For motor current with reference = 99.06 (motor nominal current) and raw 0–10000, use the same divide by 10000 multiplication by 99.06.
9. Reusable Function Block for SCADA Faceplates
To reduce engineering time across 18 drives, wrap SFC14/15 calls in a single FB. The FB takes only the DP address and returns typed engineering values. This pattern is also used in the ABB Drives function blocks for Siemens PLCs quick start guide.
FUNCTION_BLOCK FB_DRIVE_CTRL
VAR_INPUT
iDP_Addr : BYTE; // logical DP address from HW Config
iRatedFreq_Hz : REAL := 50.0;
iRatedCurrent : REAL := 10.0;
iRatedPowerPct : REAL := 150.0;
iCmdStart : BOOL; // from HMI
iCmdStop : BOOL;
iCmdReset : BOOL;
iSetpoint_Hz : REAL;
END_VAR
VAR_OUTPUT
oReady : BOOL;
oRunning : BOOL;
oFault : BOOL;
oActualFreq_Hz : REAL;
oActualCurrent : REAL;
oActualPowerPct: REAL;
oActualEnergy : WORD;
oControlWord : WORD;
oStatusWord : WORD;
END_VAR
VAR
sCtrl : WORD;
sSetp : WORD;
sOut : ARRAY[0..5] OF WORD;
sIn : ARRAY[0..5] OF WORD;
sRW : INT;
END_VAR
BEGIN
// 1. Compose control word (STW1) and setpoint
sCtrl := 16#047E; // ready, no coast, no fault (set 0x047E for READY state)
IF iCmdStart THEN sCtrl := sCtrl OR 16#000F; END_IF;
IF iCmdStop THEN sCtrl := 16#047E; END_IF; // OFF1 (ramp stop)
IF iCmdReset THEN sCtrl := 16#04C7; END_IF; // Fault acknowledge bit 7
sSetp := REAL_TO_WORD((iSetpoint_Hz / iRatedFreq_Hz) * 16384.0);
sOut[0] := sCtrl;
sOut[1] := sSetp;
sOut[2] := 0;
sOut[3] := 0;
sOut[4] := 0;
sOut[5] := 0;
// 2. Write to drive (SFC15)
sRW := DPWR_DAT(
LADDR := WORD#16#100 + INT_TO_WORD(iDP_Addr - 1) * 12,
RECORD := sOut,
RET_VAL := sRW);
// 3. Read from drive (SFC14)
sRW := DPRD_DAT(
LADDR := WORD#16#100 + INT_TO_WORD(iDP_Addr - 1) * 12,
RECORD := sIn,
RET_VAL := sRW);
// 4. Decode status
oStatusWord := sIn[0];
oRunning := (sIn[0] AND 16#0007) = 16#0007; // bits 0,1,2 = RUNNING
oFault := (sIn[0] AND 16#0008) <> 0; // bit 3 = fault active
oReady := (sIn[0] AND 16#0001) <> 0; // bit 0 = ready to switch on
// 5. Decode engineering values (Siemens 0–16384)
oActualFreq_Hz := WORD_TO_REAL(sIn[1]) / 16384.0 * iRatedFreq_Hz;
oActualCurrent := WORD_TO_REAL(sIn[3]) / 16384.0 * iRatedCurrent;
oActualPowerPct := WORD_TO_REAL(sIn[4]) / 16384.0 * iRatedPowerPct;
oActualEnergy := sIn[5];
oControlWord := sCtrl;
END_FUNCTION_BLOCK
iSiemensProfile : BOOL to switch scaling. Control/Status word bit layouts are similar but not identical to Siemens; refer to the ABB Drive Profile document (parameter group 9 in the ACS550 firmware manual).10. WinCC Faceplate Integration
- Create a WinCC tag for each drive's control and feedback. With SFC14/15 + a drive DB, point each tag at the DB word/byte.
- Use the ABB faceplate template from the ABB quick start-up guide (A_A4) as a reference for Siemens and ABB.
- Build a multi-instance faceplate that takes the drive index and displays: oActualFreq_Hz, oActualCurrent, oActualPowerPct, oActualEnergy, fault code, and the Status Word (raw + decoded bits).
- Configure a bit-level display:
oReady,oRunning,oFault→ colored indicators. - Add a fault reset button bound to
iCmdResetwith a momentary pulse of 1 s.
11. Common Fault Codes (MM440, ACS550, ACS800)
| Drive | Code | Meaning | Field Action |
|---|---|---|---|
| MM440 | F0001 | Overcurrent | Check ramp time, mechanical load |
| MM440 | F0002 | Overvoltage (DC bus) | Check brake chopper / ramp-down |
| MM440 | F0003 | Undervoltage | Check input supply, line dips |
| MM440 | F0011 | Motor overload (I²t) | Check nameplate vs. P0304–P0305 |
| MM440 | F0070 | CB (Comm Board) fault | Check Profibus wiring, GSD mismatch |
| MM440 | F0071 | Profibus loss of setpoint | Master stopped, check PLC |
| MM440 | F0072 | Profibus loss of process data | SFC14/15 retry, check connector |
| ACS550 | 1 | OVERCURRENT | Check motor insulation, ramp |
| ACS550 | 2 | DC OVERVOLT | Increase decel ramp, add brake chopper |
| ACS550 | 3 | DEV OVERTEMP | Check fans, ambient temp |
| ACS550 | 4 | MOTOR TEMP | Check motor PTC, load |
| ACS550 | 10 | PANEL LOSS | Reconnect control panel |
| ACS550 | 31 | FB PAR ERR | Check group 51 settings |
| ACS800 | FF01 | OVERCURRENT | Check motor & cable |
| ACS800 | FF02 | DC OVERVOLT | Decel ramp / brake |
| ACS800 | FF55 | FIELD BUS COMMUNICATION | Check RPBA-01 diagnostics |
To surface the active fault code on the WinCC faceplate, map a free PZD slot (e.g., IN PZD3 on Siemens MM440 by setting P2051.2 = 53 for ZSW2, then bit-decode, or for direct fault number use a separate read through the PKW channel on a PPO2 slave if PPO4 is insufficient).
12. Troubleshooting Matrix
| Symptom | Likely Cause | Action |
|---|---|---|
| Drive does not appear online | DP address mismatch, terminator off | Compare HW Config with drive parameter 51.02 / MM440 DIP switch |
| Bus runs but ZSW1 bit 0 = 0 | Drive not enabled (OFF1 active) | Set bit 0 of STW1 to 1 (ON command) |
| ZSW1 bits 0,1,2 toggle between states | ON command not latched | Maintain STW1 = 047Eh + 000Fh; check for one-shot pulse |
| Actual frequency always 0 | P2000/P2002 wrong, or P2051 IN mapping incorrect | Verify P2000 and P2051 indexing in STARTER |
| Frequency 100× too small | Reading in Hz, not normalized | Apply normalization with P2000 |
| SFC14 RET_VAL = 8090 | HW Config not compiled, or slave address typo | Re-compile HW Config and download |
| PLC sees data only on a few cycles | Direct PIW access bypassing consistency | Switch to SFC14/15 with consistent data |
| MM440 F0070 on power-up | CB not initialised yet | Set P0927 = 1 and power cycle CB |
| ABB drive shows 31 FB PAR ERR | 51.04 PPO type mismatch with PLC | Set 51.04 = 4 to match PLC |
| Some drives comm loss during heavy traffic | Bus speed too high, segment too long | Reduce baud to 500 kbit/s, add repeater |
13. Commissioning Procedure (Step-by-Step Verification)
- Power the bus with one drive at a time. Confirm BF (Bus Fault) LED is off on each MM440 Profibus option and on the RPBA-01.
- In HW Config, set the slot PPO type to 4 and download the configuration. Verify the S7-400 displays the slave in "Online → DP Master System → Bus Nodes".
- Open a VAT table and call SFC14 for the first drive. Confirm RET_VAL = 0 and ZSW1 (DriveData_IN[0]) is non-zero (e.g., 16#0E31 for "Ready, Voltage Enabled, No Fault").
- Write STW1 = 16#047E (Ready to switch on). Verify the drive displays state "rdy" and ZSW1 reflects bit 0 set.
- Write STW1 = 16#047F (ON command). Verify motor spins at 0 Hz. Increment setpoint word; verify frequency rises in proportion (NIST feedback).
- Scale-setpoint loop: send 4000h setpoint, confirm NIST = 4000h ± 10. Repeat for 2000h, 1000h, etc.
- Apply a step in load to verify ZSW2 and IAIST response. Confirm current normalization (P2002) gives the expected A value when fed with 4000h raw.
- Trigger a fault (e.g., unplug the encoder for closed-loop drives) and verify F0070 (MM440) or FB PAR ERR (ACS550) appears in the fault word on the bus.
- Test fault reset: write STW1 = 16#04C7 momentarily. Verify drive exits fault state.
- Once one drive is verified, replicate the FB to all 18 slaves by changing only the
iDP_Addrinput.
14. Multi-Drive Loopback Test (Telegram Inspector)
With the S7-400 in STOP, the CP 443-5 extended can be set to a diagnostic mode where it echoes the bus telegrams. Use this to confirm the slave is responding. Alternatively, capture telegrams with a Profibus monitor (e.g., Profinet / Profibus diagnostics hardware) and confirm:
- PLC → drive: 6-word output telegram with STW1, NSOLL matching program values.
- Drive → PLC: 6-word input telegram with ZSW1 indicating drive state, NIST = actual frequency in normalized form.
- No slot error in slave diagnostics (SFC13 returns no fault, status = 0x32 for OK).
15. ABB Function Block Library Reference
The ABB Drives function blocks for Siemens PLCs quick start-up guide (PDF) provides:
- A complete SIMATIC Manager and TIA Portal example project (S7-300/400 compatible).
- Pre-built FBs (FB100–FB103) for ACS550/ACS800 PPO4 control.
- HMI tag list and a WinCC faceplate.
- Standard S7-300/400 GSD for the RPBA-01 module.
- Default 51.xx and 52.xx parameter settings for one-click commissioning of the ABB drive.
Use this as the starting point if you have many ABB drives; the same template can be applied to MM440 with parameter adjustments from sections 4 and 5.
16. Glossary
| Term | Definition |
|---|---|
| PPO | Parameter Process Object - the standard Profidrive telegram |
| PZD | Process Data (cyclic, time-critical) |
| PKW | Parameter Channel (acyclic, infrequent) |
| ZSW1 / STW1 | Status Word 1 / Control Word 1 |
| NIST / NSOLL | Actual / setpoint normalized frequency (Siemens) |
| IAIST | Actual current (Siemens) |
| RPBA-01 | ABB Profibus adapter module for ACS550/ACS800 |
| HW Config | STEP 7 hardware configuration tool |
17. FAQ
Can I use PPO4 for both MM440 and ABB ACS550/ACS800 on the same Profibus network?
Yes. PPO4 (0 PKW + 6 PZD) is supported on MM440 firmware 3.2+ and on the ABB RPBA-01 adapter for ACS550/ACS800. Set P2013 = 0 (PKW) and P2012 = 6 (PZD) on MM440, and 51.04 = 4 on ABB to match. The 6-word PZD process data slot provides 6 control + 6 feedback words per drive, sufficient for STW, setpoint, status, frequency, current, and power.
Do I have to use SFC14/SFC15, or can I read PIW/PQW directly?
For PPO4 (12 bytes per direction) you must use SFC14 (DPRD_DAT) and SFC15 (DPWR_DAT) to guarantee consistent data. S7-400 DP allows only 4-byte consistency on direct I/O access, so the second half of the buffer could be updated mid-scan and you would get torn values. Direct PIW/PQW access is acceptable only for diagnostic or single-word displays where torn data is irrelevant.
What is the difference between Siemens normalization 0-16384 and ABB 0-20000?
Siemens uses 0-4000h (0-16384 decimal) where 16384 represents 100% of the reference value defined in P2000 (Hz), P2002 (current), P2004 (power %). ABB uses 0-20000 where 20000 represents 100% of the reference frequency and 0-10000 for current. Multiply the raw value by the reference and divide by the full scale: Siemens freq = raw/16384 * P2000; ABB freq = raw/20000 * rated Hz.
How do I read the active fault code from the drive to the WinCC faceplate?
On MM440, the active fault number is parameter r0947 (1-65535). To bring it on the bus, you need a PPO type with PKW (PPO1, PPO2, or PPO5) to read r0947 acyclically, or you can use a status word bit indicating a fault (ZSW1 bit 3) and read r0947 once when the bit transitions. On ACS550/ACS800, the active fault is in parameter 0401 (last fault) or 0402. The same approach with PKW applies. An alternative is to reserve one of the free PZD words (e.g., PZD4) and map an integer scaling of the fault code through a 52.xx parameter on ABB or a free P2051 IN slot on MM440.
What GSD files and Profibus addresses do I need for 18 drives on one S7-400 master?
For MM440 use the GSD SIEM808F.GSD (older builds: SIEM807F.GSD) and assign DP addresses 4-11 for 8 drives. For ABB ACS550/ACS800 use the GSD from RPBA-01, file ABB0810.GSD, and assign DP addresses 12-21 for 10 drives. Set the physical DP address on the MM440 Profibus option card DIP switch, and on ABB set parameter 51.02. The S7-400 master supports up to 124 DP slaves and 32 per segment with an RS-485 repeater; 18 drives is well within limits.
Why does my drive report F0070 / FB PAR ERR after power-up?
F0070 (MM440) and FB PAR ERR / fault 31 (ACS550) both indicate that the Profibus option module initialised but the parameter set is inconsistent. The most common cause is P2013 ≠ 0 on MM440, or 51.04 PPO type not matching the PLC slot. Re-check the parameter list from section 4 (MM440) and section 5 (ABB), confirm PPO type 4 is selected on both sides, then power cycle the drive and the CB module.