CPU314C-2DP System Fault: Resolving SF After CP343-1 Lean Config

David Krause14 min read
S7-300SiemensTroubleshooting
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

Problem Description: SF After CP343-1 Lean Insertion

An S7-300 station built around the CPU 314C-2DP (typical MLFB 6ES7314-6CH04-0AB0 or 6ES7314-6CG03-0AB0 for earlier builds) reports a System Fault (SF LED solid red) the moment a CP 343-1 Lean module is added to the STEP 7 hardware configuration. With the CP slotted into the project, the diagnostic buffer fills with I/O access errors, OB121 and OB122 are called by the program scan, and the CPU refuses to enter RUN. Remove all user program blocks (OB, FC, SFC, FB, DB) and the SF extinguishes — this behaviour is the smoking gun. The SF is being raised by code running against an unreachable slave, not by a hardware defect on the CP itself.

The most common contributors to this exact symptom set are:

  1. I/O modules behind the PROFIBUS DP slave being unpowered during bench testing.
  2. A CP 343-1 Lean variant (order number, firmware level) that the CPU firmware cannot address.
  3. A missing or wrong GSD file for the DP slave at address 2.
  4. User code that issues L/T operations on process-image addresses that no module actually owns (slot addresses 256, 268, 270, 272 are the addresses to check first in HWConfig).

This article walks through each contributor in commissioning order and shows how to read the diagnostic buffer to localise the offending block within a few minutes. All references point to Siemens AG manuals, Siemens Industry Online Support, and the STEP 7 system documentation — no forum or community sources are used.

CPU 314C-2DP Hardware Overview and LED Meanings

The 6ES7314-6CH04-0AB0 is a compact CPU with an integrated PROFIBUS DP master/slave interface and 24 DI / 16 DO / 4 AI / 2 AO on-board. It is the typical target for CP 343-1 Lean retrofits because the Lean CP provides Industrial Ethernet where the CPU only offers MPI/DP at the front. Refer to the Siemens S7-300 Automation System and CPU 31xC Technological Functions manuals for the canonical specifications.

Parameter CPU 314C-2DP (6ES7314-6CH04-0AB0)
Work memory (code + data) 192 KB total (typical for the 6CH04 build)
Bit memory M 0.0 to M 255.7 (2048 bytes)
Integrated DI / DO / AI / AO 24 / 16 / 4 / 2
PROFIBUS DP 1 × DP master/slave, up to 32 slaves
MPI 187.5 kbaud default
Diagnostic buffer entries up to 500 (set in HWConfig → Memory tab)
Real-time clock buffered Yes (battery)

The four front-panel status LEDs you must read together are:

LED Colour Meaning for the SF / BF scenario
SF (System Fault) Red Solid: a diagnostic event of class FAULT is pending. Almost always correlated with OB121 / OB122 calls when I/O is unreachable.
BF (Bus Fault) Red Solid or flashing: physical fault on PROFIBUS DP, or DP slave has dropped out because it is unpowered, mis-configured, or has the wrong slave address.
DC5V Green Internal 5 V supply OK; must be on or nothing else is meaningful.
RUN / STOP / MRES Yellow / Green If the CPU stays in STOP despite a clean request to RUN, the SF or BF reason must be cleared first.
Engineer field note: An SF that disappears when you strip the program to the bare S7-300 system blocks is not a CPU defect. It is by definition an OB121/OB122 trigger caused by your code. The diagnostic buffer will tell you the exact block number and the absolute address that faulted.

CP 343-1 Lean Variants and Compatibility with CPU 314C-2DP

The CP 343-1 Lean is documented in the CP 343-1 Lean Equipment Manual. The two order numbers most commonly encountered in the field are:

MLFB Release Firmware STEP 7 Use with CPU 314C-2DP
6GK7343-1CX00-0XE0 1st generation V1.x STEP 7 V5.3+ Compatible, but de-supported; replace for new builds
6GK7343-1CX10-0XE0 2nd generation V3.0 / V3.1 STEP 7 V5.5 SP4+ or TIA V13+ Recommended variant; PROFINET IO Device up to 16 slots

Both variants are electrically and functionally compatible with the CPU 314C-2DP backplane. There is no S7-300 hardware incompatibility that by itself triggers SF or BF — if the CP itself is healthy, you will see only S7-communication status entries (event IDs 0x4941, 0x4942, 0x4943, 0x4944) in the diagnostic buffer, never a hard SF. A persistent SF with CP 343-1 Lean inserted almost always points at something behind the DP master, not at the CP.

If you must rule the CP out as the cause, insert the CP alone, leave all OB1, OB82, OB121, OB122 empty, and re-download. With no user I/O access, no SF should appear.

OB121 and OB122: The Two Most Likely Causes

Both OBs are error-handling OBs provided by the S7-300 operating system. They are passive — they do not cause the fault, they are merely called by the operating system when the fault has happened. Their presence in the diagnostic buffer is the evidence trail.

OB Triggered when Typical local variable showing fault source
OB121 — Programming error CPU detects illegal operation in user code: BCD conversion error, area length error, range error, alignment error, write to read-only, etc. OB121_SW_FLT, OB121_BLK_TYPE, OB121_BLK_NUM, OB121_PRG_ADDR, OB121_MEM_AREA
OB122 — I/O access error A direct or write I/O access (L PIB, T PQW, etc.) targets a slot that does not reply — module missing, unpowered, wrong address, or DP slave failed. OB122_SW_FLT, OB122_BLK_TYPE, OB122_BLK_NUM, OB122_PRG_ADDR, OB122_IO_LEN

For the SF described in this scenario, OB122 is almost always the headliner: the program tries to read from a slot owned by a DP slave that is unpowered or unreachable, the CPU cannot complete the access, OB122 fires, and OB121 is called if any of the local-variable processing inside OB122 itself raises a programming error.

The single most useful byte inside OB122 is OB122_BLK_NUM — it tells you the FC/FB/SFC/SFB whose scan raised the access error. OB122_PRG_ADDR tells you the absolute byte/bit address of the failing I/O. Together those two values localise the fault to a single statement.

Reading the S7-300 Diagnostic Buffer

The diagnostic buffer is the primary diagnostic surface for any SF/BF on S7-300. The procedure is identical whether you use STEP 7 V5.5 or TIA Portal:

  1. In SIMATIC Manager or TIA Portal, mark the CPU and select Online > Online and Diagnostics.
  2. Open Diagnostics Buffer in the navigation tree.
  3. Click the most recent SF/BF entry. The detail pane shows the event ID, the associated OBs called, and the OB local variables from the moment of the fault.
  4. Click Save As on the buffer page to export a diagnose.txt that you can attach to a Siemens Service Request or read offline.

By default the buffer holds the last 100 events (smaller builds) or up to 500 on bigger CPUs. If you only see the oldest 10, open HWConfig > CPU Properties > Memory and increase Number of entries in the diagnostic buffer. Acceptable maximums depend on the CPU; the 314C-2DP supports up to 500.

Engineer field note: The buffer is event-class based — power on/off, diagnostic interrupt, module insert/remove, OB start, and STOP/RUN transitions each produce their own event IDs. Filter on "CPU messages" or sort by timestamp descending so the SF root cause appears first, not the most recent symptom.

Step-by-Step Isolation Procedure

Run this sequence in order. Most cases resolve in under 15 minutes.

Step 1 — Confirm power on every DP slave

From HWConfig, mark each DP slave in the rack and confirm that the configured slot addresses match the physical layout. Then physically inspect each slave:

  • 24 V supply present?
  • PROFIBUS terminator on at both line ends only?
  • Slave address switches match HWConfig (DP master at default 2 in this scenario)?
  • Slave SF / BF LEDs clear?

Step 2 — Read the diagnostic buffer

Go online, open the diagnostic buffer, and look for "I/O access error when reading" or "I/O access error when writing". Note the slot address in the event text — it must match a slot configured in HWConfig.

Step 3 — Identify the offending block

Open the OBs called by the fault (OB121, OB122). In STEP 7 V5.5 with the program in LAD/FBD/ST, place a temporary breakpoint or insert a statement at the top of the called OB:

// In OB122:
L #OB122_BLK_NUM
T MW 200

Then go online and trigger the fault. MW 200 holds the FC / FB / SFC number of the block whose scan raised the access error. Cross-reference that block in the project to find the failing statement.

Step 3a — Read the failing I/O address

// In OB122:
L #OB122_PRG_ADDR
T MW 204

MW 204 then contains the absolute byte address of the input or output that faulted. Compare it to the slot address list from HWConfig (256, 268, 270, 272 are common defaults).

Step 4 — Replace unreachable I/O with P# access to a known module

If the slave must remain physically unpowered for the test, replace direct access (L IW 256, T QW 272) with a fault-tolerant read pattern:

// Safe pattern — call instead of the direct access:
CALL "READ_PIW_SAFE"
  PIW := 256
  RET_VAL := MW 100

The "READ_PIW_SAFE" wrapper executes the read inside a SFC that returns a status word instead of triggering OB122 if the module is unavailable. Centralised wrappers are far easier to maintain than per-tag retry logic.

Step 5 — Verify

Re-download, switch to RUN, and confirm SF is off and BF is off for 60 seconds under normal scan load.

Power-Up Sequence and Module Diagnostics

When a DP slave is unpowered, the DP master detects the dropout on the next poll cycle and posts a "station failure" event to the diagnostic buffer. That event calls OB86 (rack failure OB). If OB86 is missing or empty, the SF LED lights. To clear this case properly:

  1. Insert OB86, OB82, OB121, OB122 into the project.
  2. In OB86, leave the body empty (just BE) — the OB exists to acknowledge the failure so the CPU does not STOP.
  3. In OB82, leave the body empty as well.
  4. In OB121 and OB122, you can either pass (just BE) to swallow the access error, or use the local variables as shown above to log the fault and continue.
Engineer field note: Never leave OB122 empty in a production program. Empty OB122 silently masks real wiring and addressing errors that should be investigated. Log the fault locally, raise a maintenance bit, and let operations notice it.

CP 343-1 Lean Configuration Pitfalls

Although the CP itself rarely causes an SF, several configuration mistakes do. Verify each:

Pitfall Symptom Fix
CP inserted in slot 0 of the rack (reserved for CPU) STEP 7 accepts but download fails or SF on first start Move CP to a free slot from 4 upward (slots 1-3 reserved for power supply, CPU, IM)
Wrong GSD for the DP slave at address 2 BF solid red, slave not in cyclic data exchange Install GSD from slave vendor, restart HWConfig
PROFIBUS address of slave physically different from HWConfig BF solid red, diagnostic buffer: "DP slave not found" Match address switches to HWConfig (default 2 in this scenario)
STEP 7 version older than the CP firmware expects CP shows SF after download, no diagnostic buffer entries about it Update STEP 7 to V5.5 SP4 or later, or move to TIA Portal V13+
CP firmware older than 2.0 on a V13+ project PROFINET functions missing, SF intermittent Firmware update via SIMATIC Manager online → CP → Firmware Update

Common Diagnostic Buffer Event IDs

The Siemens System Software for S7-300/400 System and Standard Functions reference manual lists every diagnostic event ID. The IDs that recur in this scenario are:

Event ID (hex) Class Plain meaning
0x2522 Diagnostic interrupt OB82 Module diagnostic status changed
0x3942 Diagnostic interrupt OB82 I/O module not reachable
0x39C0 Diagnostic interrupt OB82 DP slave lost
0x39C4 Diagnostic interrupt OB82 DP slave returns
0x4941 Communication status CP 343-1 Lean: S7 connection established
0x4942 Communication status CP 343-1 Lean: S7 connection terminated
0x49C0 Communication status CP 343-1 Lean: PROFINET IO Device status change
0x530D Programming error OB121 Block error in user code
0x5371 I/O access error OB122 Module access fault

When you see 0x5371 followed by 0x530D in adjacent buffer entries, OB122 fired, then OB121 fired because the OB122 body itself contained a programming error. Fix OB122 first; the OB121 entries usually clear on their own.

Firmware and Library Compatibility

For a CPU 314C-2DP that needs to interoperate with a CP 343-1 Lean, the validated firmware combinations are:

CPU FW CP 343-1 Lean FW STEP 7 version Status
V3.3 V3.0 STEP 7 V5.5 SP4 / TIA V13 SP1 Validated by Siemens
V3.3 V3.1 STEP 7 V5.5 SP4 / TIA V13 SP1 Validated by Siemens
V2.6 V2.1 STEP 7 V5.5 SP2 Legacy — supported but de-recommended for new builds

Mixing a CPU at V3.3 with a CP at V1.x works for S7 communication, but PROFINET IO Device functions are missing and STEP 7 will warn about a version mismatch on download. Resolve the version warning before chasing SF symptoms, because a missing PROFINET slot configuration will look like an OB122 storm on the first scan.

Verification and Commissioning Checklist

Before declaring the SF resolved:

  • Diagnostic buffer cleared and CPU in RUN, no SF, no BF for ≥ 60 s.
  • OB86, OB82, OB121, OB122 present in the program with intentional bodies (not all empty).
  • All DP slaves in cyclic data exchange — verify with PLC > Online > Monitor/Modify > PROFIBUS DP Diagnostics.
  • CP 343-1 Lean diagnostic buffer shows connection establishment for every configured partner (event IDs 0x4941).
  • Scan time below 80 % of the OB1 watchdog (typically 150 ms default).
  • Diagnostic buffer export (diagnose.txt) saved with the commissioning record.

Edge Cases and Field-Proven Caveats

Symptom: SF only after PLC STOP → RUN transition. OB100 / OB101 / OB102 (warm restart / cold restart) startup OBs run once on the transition. Any direct I/O access in those OBs hits the same OB122 path before the DP poll loop has stabilised the slaves. Defer all I/O reads until the first OB1 cycle.

Symptom: SF clears when you delete one specific FC but not others. That FC contains the offending direct access. Open it, locate the L/T on the slot that does not reply, and replace with a status-aware read wrapper.

Symptom: SF appears only after adding a new SFC call (e.g. SFC 14 DPRD_DAT, SFC 15 DPWR_DAT) for a DP slave. SFC 14 / SFC 15 raise OB122 if the slave is unreachable but they return their own error code in RET_VAL (typically 80A1h for "slave not found"). Use the RET_VAL instead of relying on OB122 to tell you.

Symptom: BF solid red but SF off. Bus physics problem — terminator, shielding, baud rate, or address. Check the DP cable shield continuity and confirm the line is terminated at exactly two points (start and end).

Symptom: SF solid red but the diagnostic buffer is empty. Buffer may have wrapped or been cleared during the last STOP → RUN. Set buffer size to 500 in HWConfig and power-cycle the station. The buffer will re-populate on the next event.

FAQ

Why does my CPU 314C-2DP show SF only after I add the CP 343-1 Lean to HWConfig?

The CP itself does not raise SF. The new project configuration exposes a slot or DP slave that is unpowered or mis-configured; the first user scan hits that slot, OB122 fires, and the SF LED comes on. Power up the slave, or insert OB86/OB122 and inspect OB122_PRG_ADDR to find the failing address.

How do I tell OB121 (programming error) from OB122 (I/O access error) in the diagnostic buffer?

OB121 entries report a programming fault with an event ID like 0x530D and the failing block number in OB121_BLK_NUM. OB122 entries report an I/O access fault with an event ID like 0x5371, the failing block number in OB122_BLK_NUM, and the absolute I/O address in OB122_PRG_ADDR. If you see both in adjacent entries, OB122 fired first and OB121 came from inside the OB122 body.

Can I increase the diagnostic buffer size on a 314C-2DP?

Yes. In STEP 7 V5.5 open HWConfig, mark the CPU, open Properties → Memory and raise Number of entries in the diagnostic buffer to the maximum the CPU allows (500 on the 314C-2DP). In TIA Portal the equivalent is Device configuration → Properties → System diagnostics → Diagnostic buffer.

Is the CP 343-1 Lean (6GK7343-1CX00-0XE0) compatible with the 314C-2DP?

Yes. The 6GK7343-1CX00-0XE0 is the original release and works with the 314C-2DP under STEP 7 V5.3+. The current recommended variant is 6GK7343-1CX10-0XE0 (firmware V3.0/3.1) running on STEP 7 V5.5 SP4 or TIA Portal V13+ for full PROFINET IO Device support.

Why does removing my OB / FC / SFC blocks make the SF disappear?

Because one of those blocks contains a direct I/O access (L IB, T QB, L IW, T QW, L PID, T PQD) targeting a slot that the CPU cannot reach — most often a DP slave that is unpowered. With the block removed, the failing access never executes, OB122 never fires, and SF stays off. Re-insert the blocks one at a time, watch the diagnostic buffer, and the offending block will identify itself in OB122_BLK_NUM.

What happens if I leave OB122 empty?

The CPU continues in RUN and SF clears, but real wiring and addressing errors are silently masked. In production, fill OB122 with at minimum a write of OB122_BLK_NUM, OB122_PRG_ADDR, and OB122_SW_FLT into a flag area or instance DB so maintenance personnel can see the fault after the fact.

Back to blog