Problem Overview: CPU STOP on SIMATIC S7-1516F-3 PN/DP
A SIMATIC S7-1500 CPU 1516F-3 PN/DP transitions from RUN to STOP and the diagnostic buffer records the entry:
Temporary CPU error: Serious hardware inconsistency
System code: 16#02DC000E 16#10040111
RID = 16#FFFF0003
Processing will continue (no OB request in current operating mode)
The CPU fails to start, the SF (group fault) LED is lit, and the requested OB is not present in the active operating mode. The PLC stops because an expected error-handling OB was either not loaded or not registered for this event class. This article walks through the diagnostic decode, isolates the slot-101 device, and shows how to bring the F-CPU back to RUN safely.
Decoding the Diagnostic Buffer Entries
The diagnostic buffer on S7-1500 CPUs is a chronological, ring-buffered log of every state transition, error, and module event. Each entry carries a four-byte event ID (EV1/EV2) and a four-byte RID. The fields in this incident are not arbitrary — they map to a Siemens-internal fault class.
| Field | Hex value | Meaning |
|---|---|---|
| Event ID 1 | 16#02DC | Event class "Temporary CPU error" / internal consistency check failure |
| Event ID 2 | 16#000E | Sub-class: hardware-inconsistency exception raised by firmware |
| System code word A | 16#1004 | Internal PN-IO stack descriptor (IO controller subsystem) |
| System code word B | 16#0111 | Specific handler: PROFINET interface / CBE20 firmware integrity check |
| RID | 16#FFFF0003 | Reference ID — FFFF prefix = not locatable to a single device; the firmware could not pin the failure to one specific IO device |
The RID prefix 0xFFFF is the key. Siemens uses RID prefixes to attribute a fault:
-
0x0000xxxx— locatable to a concrete slot/DeviceID. -
0x00xxxxxx— locatable to a logical address area. -
0xFFFFxxxx— global, multi-device, or firmware-level fault. The exact device cannot be derived from the ID alone; you must look at the topology and the event sequence.
The "no OB request" suffix tells you the CPU received an exception that would normally be reported through a priority class OB, but no matching OB is loaded. On S7-1500, the OB normally raised for a station failure of this severity is OB82 (diagnostic interrupt), OB83 (insert/remove), OB86 (rack/IO device failure), or OB122 (IO access error). When none is present, the default reaction is STOP for a fail-safe CPU, even for a "temporary" error.
Identifying Slot 101 in an S7-1500
On the S7-1500, slot numbering is split between the local backplane and the PROFINET IO system. The local rail keeps slots 0–3 (typical 1516F layout below). Anything ≥100 belongs to a PROFINET interface, port, or IO device.
| Slot | Typical device | Address |
|---|---|---|
| 0 | Power supply (PM / PS) | — |
| 1 | CPU 1516F-3 PN/DP (integrated PROFINET X1, X2; PROFIBUS X3) | — |
| 2 | Empty / reserved | — |
| 3 | Communication module (CM / CP) | Local addresses |
| 100 | PROFINET IO interface 1 (X1) on the CPU | PN-IO #1 |
| 101 | PROFINET IO interface 2 (X2) or CBE20-PN port 1 / CBE20-PN head module | PN-IO #2 |
| 102 | Subsequent interface (CBE20 port 2) | PN-IO #3 |
| 1000+ | PROFINET IO devices behind the interface | Per device |
Because the user reports 5 × SCALANCE X208, 1 × COMSOFT cRIO PN, and 24 × CBE20-PN-IO, slot 101 most likely corresponds to either the CPU's X2 PROFINET interface or the CBE20-PN head module on the local rail (slot 3). The diagnostic buffer's RID 0xFFFF0003 confirms the failure cannot be attributed to one IO device; it is raised inside the IO controller's PROFINET stack.
Root Cause Analysis
The "Serious hardware inconsistency" classification combined with system code 16#10040111 is the firmware's way of reporting that an internal consistency check inside the PROFINET controller failed. The most common causes, in order of frequency, are:
- CBE20-PN or PN interface firmware mismatch. A CBE20 plugged into slot 3 carries its own firmware. If the firmware version is older than the one expected by the CPU firmware (especially after a CPU upgrade), the IO controller raises this exact event.
- Topology mismatch in TIA Portal. The configured PROFINET topology (ports, partners, cable lengths) does not match the live wiring. Particularly common when 24 × CBE20-PN head stations are chained behind an X208 switch ring with redundant ports.
- Duplicate device names or IP addresses. Two IO devices on the same PROFINET subnet answered the DCP identify with the same name. The controller records an internal consistency error because the address table becomes ambiguous.
- Excess IO device count or watchdog timeouts. The 1516F supports up to 256 IO devices. With 30 devices (5 + 1 + 24), you are inside the limit, but update time and watchdog settings must be sized for the worst-case device.
- Faulty cable / port on the SCALANCE X208 ring. A flapping port can cause the controller to re-initialize the AR (Application Relationship) repeatedly, eventually tripping the internal stack integrity check.
- EMV / grounding on the PROFINET cable shield. In cabinets with VFDs or welding equipment, missing equipotential bonding raises CRC errors until the firmware declares the channel inconsistent.
Step-by-Step Diagnostic Procedure
Follow the steps below in order. Do not skip to firmware update — most incidents of this class are configuration problems, not module failures.
Step 1 — Capture the Full Diagnostic Buffer
- Connect TIA Portal (V17 or later) to the CPU via the engineering interface.
- Open Online & Diagnostics → Diagnostics buffer.
- Export the buffer to a CSV file for trend analysis.
- Note the timestamps of every entry containing the substring
02DC000EorHardware inconsistency. Look for a repeating interval — that points to a watchdog/timeout cause rather than a one-shot firmware fault.
Step 2 — Read the Online Topology
- Open Devices & Networks → Topology view.
- Right-click the PROFINET interface (slot 101) and choose Go online → Compare offline/online.
- Inspect each port partner. A port that shows "Diagnosis: Partner not available" or "Cable error" is a candidate.
- Record the Maintenance status of every CBE20-PN head. Devices flagged with "Maintenance required" or "Maintenance demanded" should be replaced.
Step 3 — Verify Device Names and IP Addresses
- Open Online & Diagnostics → PROFINET diagnostics → Devices in the IO system.
- Confirm each IO device name matches the configured name byte-for-byte (case-sensitive on PROFINET).
- Use the Accessible nodes function (target: the CPU's PROFINET interface) to discover any device with a duplicate IP.
- If you find a duplicate, disconnect the suspect device, reassign its name from TIA Portal using the Assign PROFINET device name function, then reconnect.
Step 4 — Check Firmware Versions
- Select the CPU in the project tree and choose Online & Diagnostics → Firmware update. Record the online firmware version.
- Do the same for the CBE20 in slot 3, every SCALANCE X208, and the cRIO PN.
- Cross-check against the TIA Portal release notes. A known incompatibility exists between CPU firmware V2.9.x and CBE20 firmware older than V5.4.x — the symptom is exactly the diagnostic buffer entry described here.
- If the CBE20 is the wrong version, perform the firmware update through the SIMATIC Automation Tool or TIA Portal. Do not interrupt the update; corruption of CBE20 firmware requires module replacement.
Step 5 — Ring-port and Cable Diagnostics
- Open a web browser to each SCALANCE X208 (
https://<IP>) and read Information → Ports → Statistics. - Any port with a non-zero CRC errors or Fragments counter that is increasing is a cable or connector problem.
- Replace the patch cable and the M12 connector (if used) before continuing.
Step 6 — Force a Single-IO-Device Bring-up
- Disconnect all PROFINET devices except one CBE20-PN head.
- Power-cycle the CPU.
- Observe whether the diagnostic buffer still records
16#02DC000E. - If the CPU stays in RUN with one device, re-add the others one by one. The last-added device that triggers the STOP is the source.
Loading the Required Error OBs
Even with the hardware cause resolved, an F-CPU should never stop on a recoverable PROFINET event. Add the following OBs to the project and download to the CPU. Each OB has a default block (empty) generated by TIA Portal when added via Project → Add new object → Organization block.
| OB | Priority | Trigger | Minimum content |
|---|---|---|---|
| OB82 | 16 | Diagnostic interrupt (module pulled, channel fault) | Read OB82_MDL_ID and OB82_IO_FLAG; set a status bit for HMI |
| OB83 | 17 | Insert/remove interrupt | Track OB83_MDL_ID, latch event log |
| OB86 | 25 | Rack/IO device failure | Use RDSYSST / DeviceStates SSL 0x0D91 to read partial-failure list |
| OB122 | — | IO access error during instruction execution | Substitute a safe value or skip the operation |
| OB121 | — | Programming error | Logging only |
OB82 Skeleton (SCL)
// OB82 - Diagnostic Interrupt
#OB82_MDL_ID; // LADDR of the faulty module
#OB82_IO_FLAG; // 0=input, 1=output
IF #OB82_FLT_ID = 5 THEN // 5 = channel fault present
"db_HMI".diag_present := TRUE;
"db_HMI".diag_laddr := #OB82_MDL_ID;
END_IF;
OB86 Skeleton (SCL)
// OB86 - Rack / IO Device Failure
IF #OB86_FLT_ID = 16#C4 THEN // Partial IO device failure
// SSL 0x0D91: list of failed IO devices
ret := RD_SYSST(S := 16#0D91,
LADDR := #OB86_MDL_ID,
SSL_INFO := 16#0000,
DEST := #temp);
END_IF;
After the OBs are loaded and the project is rebuilt, perform a full download (not delta) so the S7-1500 firmware registers the new OB priority classes. Verify in the diagnostic buffer that the new entry references OB86 as the recipient.
TIA Portal Diagnostic Tools
| Tool | Where in TIA Portal | Use for this fault |
|---|---|---|
| Diagnostic buffer | Online & Diagnostics | Confirm the 02DC000E entry and OB reaction |
| Topology view | Devices & Networks | Compare offline vs online port partners |
| Device diagnostics | Right-click → Online & Diagnostics | Read each IO device's diagnostic record set 0/1 |
| Web server | CPU properties → Web server | Read buffer from a browser on the plant floor |
| Trace | Online → Trace | Record PROFINET frame timing on diagnostic events |
| SIMATIC Automation Tool | Standalone Windows tool | Bulk firmware update of all CBE20 / X208 devices |
| PRONETA | Siemens free tool | Network scan to detect duplicate names/IPs |
PRONETA in particular is the fastest way to validate a 30-device PROFINET ring. Run Network analysis, compare against the TIA Portal configuration, and let PRONETA report name and IP collisions.
Firmware Compatibility Matrix (Selected)
| Component | Article number | Minimum firmware for CPU FW 2.9.x |
|---|---|---|
| CPU 1516F-3 PN/DP | 6ES7516-3FN02-0AB0 | V2.9.x |
| CBE20-PN (slot 3) | 6GK5312-0BA00-2AA3 | V5.4.x or newer |
| SCALANCE X208 | 6GK5208-0BA10-2AA3 | V4.3.x or newer |
| COMSOFT cRIO PN | (third-party IO) | Verify with vendor — must be GSD file V2.3+ |
The exact firmware files are available from the Siemens Industry Online Support portal under article ID 109751826 ("Firmware update S7-1500 CPU") and 109751949 ("Firmware update CBE20").
Verification Procedure
- Power-cycle the CPU after the OBs and any firmware updates are applied.
- Confirm the diagnostic buffer no longer contains
16#02DC000Eafter 24 hours of operation. - Force a PROFINET fault (pull one device from the ring) and verify the CPU remains in
RUNwhile OB86 executes and HMI indicates the partial failure. - Reconnect the device and confirm OB83 executes and the AR is re-established.
- If the F-CPU is part of a safety function, run the safety acceptance test per the project safety plan and re-issue the safety signature.
Returning the CPU to RUN When STOP is Persistent
If the CPU is locked in STOP and TIA Portal cannot go online:
- Set the mode selector to
MRESand hold for 3 s until the STOP LED flashes. - Release, then turn back to
MRESwithin 3 s. The CPU performs a memory reset. - If MRES fails (STOP LED solid), perform a "Factory reset" via the display (menu: Settings → Reset → Factory reset) using the operator panel.
- Transfer the project from the SIMATIC Memory Card (program card) or download from TIA Portal.
- Set the mode selector to
RUN.
Troubleshooting Matrix
| Symptom | Likely cause | First action |
|---|---|---|
| STOP, diagnostic buffer 02DC000E, RID FFFF0003 | PROFINET stack consistency check | Compare firmware versions |
| STOP, port statistics show CRC > 0 | Cable / connector damage | Replace patch cable |
| STOP after adding a new device | Duplicate IP or name | Run PRONETA network scan |
| STOP at predictable interval | Watchdog / update time too tight | Increase update time by 1 ms |
| STOP only when welding equipment runs | EMV / shield bonding | Re-bond PROFINET shield at cabinet entry |
| STOP only on cold start | CBE20 firmware older than CPU expects | Update CBE20 firmware |
Preventive Maintenance Checklist
- Keep all PROFINET device firmware on the same major release as the CPU firmware.
- Maintain a topology drawing in TIA Portal that matches the physical ring.
- Load OB82, OB83, OB86, OB121, OB122 in every project, even if empty, so a missing OB never causes an unexpected STOP.
- Set the CPU's "Startup after power on" parameter to "Warm restart — RUN" only after verifying the safety program compiles cleanly.
- Periodically export the diagnostic buffer to a network share so trends are visible before a STOP occurs.
FAQ
What does diagnostic buffer code 16#02DC000E mean on a SIMATIC S7-1500?
The event class 0x02DC with sub-code 0x000E is the firmware's "temporary CPU error — serious hardware inconsistency" classification. Combined with system code 16#10040111 it indicates an internal PROFINET IO controller consistency check failed. The RID prefix 0xFFFF means the firmware could not localize the fault to a single IO device.
Which slot does "101" refer to on an S7-1500 CPU?
Slot 101 is the second PROFINET interface of the CPU (port X2) or the PROFINET head module of a CBE20 in the local rack. Slots 0–3 are the local backplane; slots ≥100 are PROFINET interfaces, and slots ≥1000 are the IO devices behind those interfaces.
Why does the CPU go to STOP instead of running with OB86 loaded?
The diagnostic buffer entry says "no OB request in current operating mode". This means the appropriate error OB (OB86 for station failure, OB82 for diagnostics) is not loaded in the project. The F-CPU's default reaction to an unrecoverable event without an OB is STOP. Add the missing OBs and re-download.
Can a faulty CBE20-PN firmware cause 16#02DC000E?
Yes. A CBE20 with firmware older than V5.4.x paired with a CPU on firmware V2.9.x is a known source. Update the CBE20 via TIA Portal or the SIMATIC Automation Tool. Do not interrupt the update — a corrupted CBE20 requires physical replacement.
Is it safe to add OB86 to suppress the STOP without fixing the hardware?
No. Loading OB86 prevents the CPU from stopping, but the underlying PROFINET inconsistency remains. For a fail-safe CPU this compromises the determinism of the safety stack. Always remove the root cause first (cable, firmware, duplicate name), then add the OB to handle the residual recoverable events.