Resolving Siemens MM420 USS Parity Error 3 on S7-200 Port 0

David Krause17 min read
S7-200SiemensTroubleshooting
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

1. Overview: MM420 USS Communication with S7-200 Port 0

The Siemens MICROMASTER 420 (MM420) is a legacy 0.12 kW to 11 kW variable frequency drive that communicates over the Universal Serial Interface Protocol (USS) using a master-slave model. The SIMATIC S7-200 family, while predating the S7-1200, is still widely deployed and offers native USS support through Port 0 (RS485) and Port 1 (RS485/RS232), driven by the USS instruction library (USS_INIT, USS_CTRL, USS_RPM_x, USS_WPM_x).

A recurring field problem is the appearance of USS Error Code 3 for one or two PLC scans while the drive is running. The error coincides with the drive running bit clearing and the speed setpoint latching to zero, then both restoring on the next scan. From the operator's perspective this looks like a flicker, but on the wire it represents corrupted USS frames returning from the drive. The most common root cause in installations with cable runs below 3 metres is RS485 termination mismatch, combined with the default P2014[0] = 0 telegram-off-time behaviour and elevated 9600 baud signalling that exposes termination-induced reflections.

Symptom signature. Error 3 appears for one scan, the drive's running bit drops to 0, the speed reference momentarily falls to zero, then both recover without operator intervention. No fault is latched in the drive (no F0000 series fault, no A0501/A0502 warning unless P2014 is armed).

2. USS Protocol Technical Foundation

USS is a Siemens-proprietary serial protocol documented in the Siemens USS Protocol Reference. A USS telegram consists of:

  • STX (0x02) start byte
  • LGE length byte (telegram length excluding STX and BCC)
  • ADR slave address (bit 5 = broadcast, bit 6 = mirror, bits 0-4 = address 0-31)
  • PKW parameter channel (parameter ID, index, value) — variable or fixed length set by P2013
  • PZD process data (control word, status word, setpoint, actual value) — length set by P2012
  • BCC block check character (XOR of all bytes from ADR to last data byte)

Each transmitted byte carries 1 start bit, 8 data bits, an optional parity bit (USS default is even parity), and 1 stop bit, giving a 10-bit or 11-bit character. At 9600 baud one character takes 10 bits / 9600 bps = 1.0417 ms. A typical 14-byte telegram with default PZD = 2 and PKW = 4 occupies roughly 14 chars × 1.0417 ms ≈ 14.6 ms on the wire.

USS telegram time calculation

For an installation using N drives polled round-robin at baud B with average telegram length L bytes:

T_cycle (ms) = (L × N × (10 + parity)) / B × 1000

With L = 14, N = 1, B = 9600, parity enabled: T_cycle ≈ 14.58 ms. The drive will tolerate a telegram-off time (P2014) anywhere between zero (no monitoring) and a value larger than the worst observed inter-telegram gap. Setting P2014 below this value produces intermittent F0072 faults.

3. MM420 Hardware Interfaces and Wiring

The MM420 exposes two relevant serial paths:

  • RS485 terminals 29 and 30 on the control board — terminals 29 = P+ (data+), 30 = N− (data−). This is the recommended path for USS integration with the S7-200.
  • BOP / RS232 link via the front-panel port using the PC-to-drive RS232 cable. Used for commissioning and for single-master ASCII control, but is not the recommended path for S7-200 USS at 9600 baud with multi-drop because the RS232 driver is single-ended.

Wiring topology to S7-200 Port 0

The S7-200 Port 0 is a half-duplex RS485 port on the DB9 connector at pins 3 (B / data+) and 8 (A / data−), with pin 5 as logic ground and pin 1 as chassis/shield. The standard Siemens PC/PPI cable (6ES7 901-3CB30-0XA0) is not suitable for USS at 9600 baud; instead use a shielded two-wire twisted pair with the shield bonded to chassis ground at one end only (typically the PLC end).

Per the Siemens USS example configuration in TIA Portal, the shield must be tied to chassis ground or to pin 1 of the 9-pin connector, and the 2-0 V reference of the drive terminal block must also be bonded to chassis ground. Failure to bond both ends of the cable reference introduces common-mode voltages that the RS485 receiver interprets as parity errors.

Cable specification

Parameter Recommended Maximum
Conductor Twisted pair, 24 AWG (0.22 mm²) 20 AWG
Impedance 100–120 Ω differential —
Capacitance < 60 pF/m —
Length, MM420 RS485 at 9600 baud ≤ 1000 m 1200 m
Length, RS232 BOP path ≤ 3 m 15 m (de-rated)

4. S7-200 Port 0 and USS Library Architecture

The S7-200 USS library (instruction library version 2.0 and later) provides five sub-blocks. Only USS_INIT and USS_CTRL are required for closed-loop control; USS_RPM_W and USS_RPM_D are used for parameter read-back, USS_WPM_W and USS_WPM_D for parameter writes.

USS_INIT inputs

Input Operand type Valid values Description
Mode BYTE / VB 0 = PPI/FULL-DUPLEX (RS232), 1 = FULL-DUPLEX (RS485 4-wire), 2 = PPI/FREE PORT (RS485 2-wire, USS typical) Selects the port mode. For USS on Port 0 use 1 (RS485 full duplex) or 2 (free-port USS).
Baud BYTE / VB 9600, 19200 USS library supports 9600 and 19200 only.
Parity BYTE / VB 0 = No parity, 1 = Even parity, 2 = Odd parity USS default and MM420 default is even parity (1).
Port BYTE / VB 0 or 1 S7-200 port.
Done BOOL Output Set when initialization completes successfully.
Error BYTE / VB Output Non-zero only during the scan in which Done transitions 0 → 1. See §6.
Active BOOL Output Indicates port is reserved for USS protocol.

USS_CTRL inputs and outputs

Pin Direction Description
RUN / STOP BOOL in 1 = start, 0 = stop (mapped to drive control word bit 0)
Speed_SP REAL in Speed setpoint, normalised 0.0–100.0 % of P2000 reference
Drive BYTE in USS address (0–31)
Resp_R BOOL out Set when drive has acknowledged the command
Error BYTE out Communication error code from this drive's last transaction
Drive_Run / Drive_Dir BOOL out Echo of drive status word
Speed_PV REAL out Actual speed, normalised to P2000

The Error byte from USS_CTRL is the field that displays the transient 3 in the reported problem. When this byte becomes non-zero, the block internally latches the running bit and speed setpoint to 0 for one scan, which matches the user's symptom.

5. MM420 USS Parameter Map (P2010 – P2014)

The MM420 parameter set is firmware-dependent; the values below apply to firmware V1.5x through V3.2x (the range typically encountered in service). All parameters have an index [0] for the COM link on terminals 29/30.

Parameter Name Default Field Meaning for USS on 29/30
P2010[0] USS baud rate 6 4 = 2400, 5 = 4800, 6 = 9600, 7 = 19200, 8 = 38400, 9 = 57600, 10 = 76800, 11 = 93750, 12 = 115200 Must match S7-200 USS_INIT Baud input (9600 or 19200).
P2011[0] USS node address 0 0–31 Address 0 = broadcast (no acknowledge). Each drive must have a unique address 1–31.
P2012[0] USS PZD length 2 0–8 Number of 16-bit PZD words. MM420 supports 2 (control + setpoint) and 4.
P2013[0] USS PKW length 127 0, 3, 4, 127 127 = variable length, 0 = no PKW, 3 = 1 word, 4 = 1 double word. S7-200 USS library expects 4.
P2014[0] USS telegram off time 0 0–65535 ms Time after which drive faults F0072 if no valid telegram is received. 0 = disabled. Recommended: 5×T_cycle, see §11.
P0700[0] Command source 2 0–6 5 = USS on COM link (29/30). Required so the drive accepts USS control word.
P1000[0] Setpoint source 2 0–7 5 = USS on COM link. Required so the drive accepts USS speed setpoint.
Critical. If P0700 and P1000 are left at defaults 2 (analog/digital terminal control), the drive accepts the USS telegram but ignores the control word and setpoint. The first symptom is then a missing F0072 when the cable is unplugged, which masks other wiring faults. Always set P0700[0] = 5 and P1000[0] = 5 for USS-driven MM420s.

6. USS_INIT and USS_CTRL Error Code Reference

The two error fields originate from different states of the communication stack:

Code Source Meaning
0 Both No error.
1 USS_INIT Drive address out of range (must be 0–31, in USS_CTRL it must match P2011).
2 USS_INIT Baud rate selection invalid (only 9600 or 19200 supported by the library).
3 USS_INIT or USS_CTRL Parity selection invalid or parity error detected in a received response frame.
4 USS_INIT Mode selection invalid (must be 1 or 2 for RS485 USS).
5 USS_INIT Time-out selection invalid (USS_CTRL timeout input out of range).
6 USS_INIT Channel already in use by another USS port.
7 USS_INIT Port busy / cannot allocate resources.
16–31 USS_CTRL Mirror of the drive's own status word error bits.
Source-of-error distinction. When error 3 appears once on the very first scan after USS_INIT is called, it is the USS_INIT parity-selection error and indicates a programming fault. When error 3 appears intermittently during steady-state running — exactly the symptom in the source report — it is the USS_CTRL response-frame parity error and indicates a physical-layer fault.

7. Error 3 (Parity) Deep Dive: Causes and Symptoms

A parity error detected by the S7-200 serial port means that at least one of the ten or eleven bits per received character did not satisfy the parity rule (USS defaults to even parity). The MM420 generates an even-parity character; if the receiver sees an odd number of 1-bits, bit 8 of the character register triggers the parity interrupt. Common root causes:

  1. RS485 termination mismatch. The cable impedance does not match the 120 Ω terminator at the receiver, causing the rising/falling edge of the stop bit to ring and cross the sampling threshold of the UART. RS485 UARTS sample the stop bit near the centre; ringing crosses that threshold and produces parity errors even though the data is otherwise intact.
  2. Common-mode voltage exceeding RS485 receiver range. RS485 receivers tolerate ±7 V common mode; if the drive's 0V reference is not bonded to the PLC's 0V (pin 5 of DB9), and the cable shield is floating or bonded at both ends creating a ground loop, the differential signal rides on a DC offset that pushes the receiver input out of spec.
  3. EMI from VFD output cables. The MM420 output cable carries dV/dt up to several kV/µs. If the USS cable runs parallel to motor cable without 200 mm separation, capacitive coupling injects common-mode noise that flips parity bits.
  4. Excessive stub length or T-tap. USS daisy-chain stubs should be ≤ 1 m. Long stubs create impedance discontinuities.
  5. Incorrect baud rate mismatch. P2010 = 9600 in the drive and USS_INIT Baud = 19200 in the PLC. Sampling at the wrong baud produces systematic parity errors, usually constant rather than one-scan.
  6. Wrong parity setting. MM420 default is even parity; if the PLC is set to odd or no parity, every character fails. Typically constant, not transient.

8. The Transient Error Mechanism: One-Scan Anomaly

The error-3 flicker that drops the running bit and speed reference for exactly one scan is caused by the USS_CTRL block's internal handling of Error ≠ 0:

  1. PLC polls drive N at scan T.
  2. Drive response arrives but its parity bit is corrupted.
  3. UART flags parity error, the PLC's USS driver increments the drive's Error byte to 3 and freezes Resp_R = 0, RUN/STOP internal echo = 0, Speed_SP internal echo = 0 for this scan.
  4. The next scan polls drive N again; the corrupted bit was a transient reflection; this response is valid; Error clears to 0, Resp_R = 1, running bit and speed setpoint restore.

Because P2014[0] = 0 in the MM420 default, the drive never sees a telegram-off-time violation, so it does not trip F0072. This produces the benign-looking flicker rather than a hard fault, but it is still a physical-layer integrity problem that should be eliminated.

9. Cable Length, Termination, and Signal Integrity

RS485 termination follows the rule: install 120 Ω across the differential pair at the two physical ends of the bus, and nowhere else. The S7-200 CPU 224 / CPU 226 Port 0 has a built-in 120 Ω terminator activated by switch SW2 (DIP position 1 for Port 0, position 2 for Port 1). The MM420 RS485 terminals 29/30 have an internal pull-up/pull-down bias network but no integrated 120 Ω; termination on the drive side is provided either by an external resistor across 29–30 or by setting the bus terminator DIP switch on certain MM420 control board variants (early V1.x boards have no switch — install a discrete 120 Ω 1/4 W across 29/30).

The 3-metre rule

For cable lengths ≤ 3 m, the round-trip propagation delay of a typical PVC-jacketed 24 AWG twisted pair is roughly 2 × 3 m / (2 × 10^8 m/s × 0.66 c) ≈ 15 ns. At 9600 baud, the bit period is 104 µs. The reflection energy has decayed to under 5 % well before the UART samples the stop bit, so termination is functionally optional. However, both ends being terminated (S7-200 SW2 ON + drive-end 120 Ω) loads the differential pair with 60 Ω DC, which lowers the high-state voltage margin on some MM420 RS485 driver outputs. Removing one terminator — typically the drive-end one on cables ≤ 3 m — eliminates the loading while leaving the small reflection attenuated naturally by cable loss.

Termination rule of thumb

Cable length Termination
≤ 3 m One terminator only, at the S7-200 end. Drive-end terminator disabled.
3–30 m One terminator only, at the far end from the S7-200 (drive end).
30–300 m Both ends terminated, S7-200 SW2 ON, drive-end 120 Ω installed.
> 300 m Use repeater (e.g. 6SE7090-0XX84-2FK0) or drop baud to 4800 to extend the bit period and improve noise margin.

Inline topology diagram

S7-200 CPU 226 Port 0 (DB9) SW2-1: 120 Ω ON USS master MM420 (Addr 1) Terminals 29 / 30 P2010 = 6 (9600) P2014 = 0 (disabled) 29 / P+ (data+) 30 / N− (data−) no 120 Ω 120 Ω ON

10. Step-by-Step Diagnostic Procedure

  1. Capture the scan-time log. In Micro/WIN, add a VW that latches the value of USS_CTRL Error at every scan with a 0.1 s timestamp. Confirm the error is 3 and that it appears for exactly one or two scans before clearing.
  2. Verify parity and baud settings match. PLC USS_INIT Parity = 1 (even). Drive P2010[0] = 6 (9600) or 7 (19200). Document the values on the drive label.
  3. Inspect the cable shield bonding. Shield at PLC DB9 pin 1 only; drive-end terminal 2-0 V bonded to chassis ground at one point. Floating shields, double-bonded shields, and un-bonded drive reference are the three most common defects.
  4. Measure cable length. If < 3 m and both ends are terminated, remove the drive-end 120 Ω (open the MM420 control board DIP or extract the external resistor). This is the documented field cure for the reported fault.
  5. Check stub length. If wiring is daisy-chained with T-taps, shorten each tap to < 1 m and ensure the main bus runs point-to-point between PLC and the last drive.
  6. Check separation from motor cable. Minimum 200 mm parallel separation, cross at 90°. Use shielded VFD output cable with both ends of the motor-cable shield bonded to motor frame and drive PE.
  7. Configure P2014[0] to a safe value. Set P2014[0] = 5 × T_cycle. For 9600 baud with one drive, P2014 = 75 ms. This produces an F0072 if the physical layer ever fails hard, converting a silent flicker into a visible fault.
  8. Re-arm P0700[0] and P1000[0]. Set both to 5 (USS on COM link) and execute a power cycle on the drive so the parameters are non-volatile-saved.
  9. Monitor continuously for 24 hours. Add a counter that increments every time Error is non-zero. Target: zero increments.

11. Telegram Timing and P2014 Off-Time Optimization

Setting P2014[0] = 0 (default) means the drive never times out the USS link, masking intermittent errors. Setting it too low causes nuisance F0072 faults. The minimum safe value depends on:

  • Baud rate B (bps)
  • Number of polled drives N
  • Telegram length L bytes (PKW + PZD)
  • PLC scan time T_scan (s)

T_cycle = (L × 10 × N) / B + 2 × T_scan

Recommended: P2014 = 5 × T_cycle, rounded up to the next 10 ms

Worked example for a 1-drive system at 9600 baud with PKW = 4, PZD = 2 (L = 14 bytes) and T_scan = 30 ms:

T_cycle = (14 × 10 × 1) / 9600 + 2 × 0.030 = 0.0146 + 0.060 = 0.0746 s ≈ 75 ms

P2014 = 5 × 75 ms = 375 ms, round up to 380 ms

For a 4-drive system at 9600 baud:

T_cycle = (14 × 10 × 4) / 9600 + 0.060 = 0.0583 + 0.060 = 0.118 s ≈ 120 ms

P2014 = 5 × 120 = 600 ms

12. Verification and Commissioning Checklist

Item Pass criteria
USS_CTRL Error byte Remains 0 over 24 h.
Drive RUN/STOP echo Matches command every scan, no flicker.
Drive status word Bit 6 (enable) = 1, bit 2 (running) = 1 when commanded.
Drive parameter P2014 5 × T_cycle ms, non-zero, saved non-volatile.
Cable shield continuity < 1 Ω from DB9 pin 1 to drive chassis ground at one end only.
Common-mode voltage < ±2 V between PLC pin 5 and drive terminal 2-0 V with drive running.
Cable separation from motor cable ≥ 200 mm parallel run.
Bus termination One 120 Ω at one physical end only (per §9 table).
F0072 behaviour If cable is unplugged while P2014 > 0, drive faults F0072 within 1 s.

13. Field-Tested Troubleshooting Matrix

Symptom Likely cause Action
Error 3 every scan, drive not responding Baud or parity mismatch between PLC and drive Set P2010[0] = 6 (9600) and USS_INIT Parity = 1 (even).
Error 3 flicker 1–2 scans, drive continues Cable < 3 m with both ends terminated Disable drive-end 120 Ω.
Error 3 only when VFD output is loaded Common-mode noise from motor cable Increase USS-to-motor cable separation; check motor-cable shield bonding.
Error 3 intermittent with no load on drive Floating cable shield or missing 0 V bond Bond shield at PLC DB9 pin 1; bond drive terminal 2-0 V to chassis at one point.
Error 3 and F0072 simultaneously P2014 too low for T_cycle Increase P2014[0] to 5 × T_cycle.
Error 16–31, no parity error Drive status word fault bit set Read drive r0947 for fault code, clear fault, resume USS.
Error 1 on first scan USS_CTRL Drive input ≠ P2011 address Match USS_CTRL Drive to P2011[0] in the parameter block.
Error 6 on first scan Port already configured by another USS block Use only one USS_INIT per port; check for free-port instructions elsewhere.

14. Frequently Asked Questions

Why does Error 3 appear for exactly one scan and then disappear?

USS_CTRL processes the corrupted response, sets its Error byte to 3, and freezes RUN/STOP and Speed_SP to 0 for that one scan. The next scan re-polls the drive, the parity corruption was a transient reflection on the RS485 bus, and the new response is valid — Error clears to 0. The flicker is the symptom of an RS485 physical-layer defect, typically termination mismatch on cables under 3 m.

Should the drive-end 120 Ω terminator be installed or removed?

For cable lengths under 3 m, install the terminator only at the S7-200 Port 0 end (SW2 position 1 ON on a CPU 224/226) and remove the drive-end 120 Ω. For 3–300 m, install the terminator at both physical ends. For lengths over 300 m, drop the baud to 4800 or insert an RS485 repeater.

What value should P2014[0] (USS telegram off time) be set to?

Set P2014[0] to five times the worst-case poll cycle, calculated as (L × 10 × N) / B + 2 × T_scan, rounded up to the next 10 ms. For a single MM420 at 9600 baud with a 30 ms PLC scan time, P2014[0] ≈ 380 ms. Leaving P2014 at the default 0 disables monitoring and silently masks intermittent parity errors.

Does the MM420 need P0700 and P1000 changed for USS control?

Yes. Set P0700[0] = 5 (USS on COM link) and P1000[0] = 5 (USS setpoint on COM link) so the drive accepts the control word and speed reference from the USS telegram. With the defaults of 2 (terminal control), the drive receives the telegram but ignores its contents and F0072 never trips even when the cable is unplugged.

What is the maximum cable length for USS at 9600 baud between an S7-200 and an MM420?

RS485 supports up to 1200 m at reduced baud rates. For 9600 baud on shielded 24 AWG twisted pair with correct termination, 1000 m is the practical maximum. For 19200 baud the maximum is roughly 500 m. Shorter cables under 3 m with both ends terminated produce reflections that cause parity errors — remove the drive-end terminator in this case.

Why does the running bit clear when Error 3 fires?

USS_CTRL considers the drive's response invalid when Error is non-zero and clears its internal RUN/STOP echo and Speed_SP echo to 0 for that scan. The actual drive keeps running because P2014[0] = 0 (or, if armed, has not yet exceeded the off time), but the PLC sees the drive as stopped and stops sending the run command until the next valid response arrives.

Does using free-port mode in USS_INIT affect Error 3?

No — free-port mode (Mode = 2) and RS485 full-duplex mode (Mode = 1) both rely on the same UART parity-check logic. The parity error appears at the physical layer regardless of the mode parameter. Mode-related errors are coded 4, not 3.

Back to blog