Resolving Siemens CP342-5 BUSF Error F9C1:236C Output Length

David Krause14 min read
ProfibusSiemensTroubleshooting
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

Resolving Siemens CP342-5 BUSF Blinking and PROFIBUS Error 16# F9C1:236C

The Siemens CP 342-5 communications processor is the workhorse PROFIBUS interface for S7-300 stations. When the front-panel BUSF LED starts blinking and the CPU diagnostic buffer records Event ID 16# F9C1:236C with the text "Output data length: The output data length for the DP_SEND block 144 bytes is too high. The configured output data length is 112 bytes," the controller is telling you that the cyclic output payload you are pushing through DP_SEND does not match the slave's configured slot in HW Config. This article walks through the exact diagnostic path, root cause, and corrective procedure for this error, including the secondary issue of an FB call pointed at the wrong CP hardware identifier.

1. Affected Hardware and Software Versions

Component Identifier / Version Notes
CP 342-5 (DP master) 6GK7 342-5DA02-0XE0 (FW V5.x) Older 5DA00-0XE0 / 5DA01-0XE0 revisions exhibit identical error semantics
S7-300 CPU CPU 31x-2 DP / CPU 31xC (FW V2.6+) Error logged in CPU diagnostic buffer regardless of CPU generation
STEP 7 V5.5 SPx or TIA Portal V13+ HW Config editor terminology identical; GSD import required for non-Siemens slaves
DP slaves Saia PCD3.M3230 + PCD3.Fxxx PROFIBUS module Three slaves in the reported topology
Function blocks FC1 AG_SEND, FC2 AG_RECV (FDL), FC3 DP_SEND, FC4 DP_RECV (DP master) FC3/FC4 sourced from CP 342-5 SIMATIC NET library

2. CP 342-5 LED Status Reference

The CP 342-5 front panel carries four primary indicators. The BUSF LED is the dominant error indicator for the error class discussed here.

LED State Meaning
SF (red) On Group error; PROFIBUS interface fault or configuration fault
BUSF (red) Blinking (2 Hz) DP slave failure on at least one configured slave, OR DP configuration mismatch detected after parameter assignment
BUSF (red) On (steady) Bus fault: physical PROFIBUS error, duplicate station address, or bus short
RUN (green) On CP in normal operation, data exchange active
STOP (yellow) On CP in stop state; no PROFIBUS traffic being processed

A blinking BUSF with diagnostic event 16# F9C1:236C always means the CP successfully completed parameter assignment and entered data exchange, but a cyclic I/O length violation was detected against a slave that had been acknowledged by the master. The PROFIBUS stack remains "up," which is why RUN stays green.

3. Anatomy of Diagnostic Event 16# F9C1:236C

The Siemens S7 diagnostic event is a compound 32-bit identifier. The high word identifies the source module class, the low word identifies the specific error.

  • 16# F9C1 – Source: CP 342-5 (PROFIBUS DP master, communications error class)
  • 236C – Event sub-code: DP_SEND output length exceeds configured DP slave output length

The accompanying text is generated by the CP 342-5 firmware and contains the exact length values offending the stack:

Event 1 of 35:  Event ID 16# F9C1:236C
Output data length: The output data length for the DP_SEND block 144 bytes
is too high. The configured output data length is 112 bytes.
External error, Incoming event

From this single event the engineer can derive three facts:

  1. Block DP_SEND is being called with a payload of 144 bytes.
  2. HW Config has only reserved 112 bytes of consistent output for the addressed slave.
  3. The CP is rejecting the call to prevent writing beyond the slave's GSD-defined input buffer.
Why the rejection? The DP master cannot transmit a telegram larger than the slot length negotiated with the slave during parameter assignment. Writing past the negotiated boundary would either be silently dropped (data corruption) or cause a slave re-entry, both of which the CP 342-5 firmware prevents by raising F9C1:236C and refusing the SEND call until the configuration is corrected.

4. Root Cause Analysis

4.1 Primary Cause: DP_SEND Length > Configured Slave Length

The most common trigger is a modification to the application program (typically a data block expansion or pointer re-sizing) that increases the LEN input of DP_SEND without a matching change in HW Config. The reverse case (LEN too small) does not raise F9C1:236C – instead the CP truncates without error – which is why the alarm fires asymmetrically.

4.2 Secondary Cause: Wrong Hardware Identifier (HW ID) on DP_SEND / DP_RECV

The CP 342-5 is identified in STEP 7 by an HW ID assigned automatically when the module is dragged into HW Config. The CALL instance of DP_SEND must reference this HW ID. Common mistakes:

  • A second CP 342-5 was added to the project (e.g. CP 343-1 Lean for Ethernet) and the FBs are still pointed at the original slot.
  • The CP was re-inserted at a different slot after a rack change, changing the HW ID without updating the FB calls.
  • A copy/paste from another station brought the wrong HW ID along.

Symptom in this category: a "module not found" diagnostic, or a different slave's data showing on the wire. The diagnostic buffer may show a follow-up 16# F9C1 event with a sub-code pointing to a non-existent logical address.

4.3 Tertiary Cause: Slave GSD Re-import Changed the Slot Layout

If a PCD3.M3230 firmware update introduced a new GSD revision and the GSD was re-imported into STEP 7, the slot/channels may have been re-mapped. The 112-byte figure in the diagnostic reflects the current HW Config, not the GSD on disk.

5. Diagnostic Buffer Reading Procedure

The S7 CPU diagnostic buffer is the canonical source of F9C1 events. Open it via:

  1. SIMATIC Manager → PLC → Online → Accessible Nodes, or in TIA Portal: Online & Diagnostics → Diagnostic buffer.
  2. Right-click the S7-300 station and choose "Online & Diagnostics."
  3. Open the Diagnostic Buffer node. Use the Save As… button to export the buffer as a plain-text file for archival – this preserves the hex event IDs and timestamps for later analysis.
  4. Scroll to the first occurrence of 16# F9C1:236C and note the offending block and length values.

For an offline view of the same event classes, the STEP 7 online help under Help → SFCs / SFBs → DP_SEND lists the F9C1 sub-code family and the lengths in the error byte RET_VAL of the block call.

Tip: In the diagnostic buffer, the "External error, Incoming event" line means the event originated from the CP (not from the CPU). The mirror "Outgoing event" entry will appear once you clear the fault, which is useful for confirming the corrective action took effect.

6. Step-by-Step Resolution

6.1 Locate the DP_SEND Call

Open the project, navigate to the block that contains the call, and double-click the DP_SEND instance. Record:

  • The CALL instance (HW ID, displayed as a hex constant such as W#16#0100 or a symbolic name in TIA Portal).
  • The LEN input value (in the reported case: 144 bytes).
  • The SEND input pointer (P#DBxx.DBXy.z BYTE n).

6.2 Verify the CP 342-5 HW ID

In HW Config, right-click the CP 342-5 in the rack and choose "Object Properties…". The Diagnostics tab lists the HW ID. Compare it to the value the FB is calling. If they differ, update the FB's CALL parameter, recompile, and download.

6.3 Match the LEN to the HW Config Slave Slot

  1. Double-click the DP master system line on the CP 342-5.
  2. Click the PCD3.M3230 slave in the station list.
  3. Open "Object Properties → Configuration → Module / Slot" for the slave. The "Configured length" column shows what the master reserves for that slave's outputs.
  4. If LEN > configured length (144 > 112 in our case), do one of the following:
  • Option A (preferred): Increase the configured output length in HW Config to match the LEN parameter – provided the PCD3.M3230 GSD supports the requested length. Re-compile HW Config and download to the CPU and CP.
  • Option B: Reduce the LEN input on DP_SEND to match the configured 112 bytes, and ensure the SEND source pointer covers only that area.
Caution: If the PCD3.M3230 was originally configured to use 112 bytes because the application on the Saia side only consumes 112, enlarging the slot to 144 will also resize the input image of the Saia PLC. Verify the Saia PCD3 project can accept the larger input from the master before changing the GSD slot configuration.

6.4 Recompile and Download

  1. Save and compile HW Config (Station → Save and Compile).
  2. Download the HW Config to the CPU (target system → Download). This includes the modified PROFIBUS parameters to the CP 342-5.
  3. Download the modified blocks (DP_SEND, DP_RECV) to the CPU.
  4. Perform an S7 CPU STOP → RUN transition to re-establish the DP master role.

6.5 Confirm BUSF Clears

After RUN, observe the CP 342-5:

  • RUN stays green
  • BUSF off
  • Diagnostic buffer shows "Outgoing event" for the F9C1 family

7. DP_SEND / DP_RECV Programming Reference

The DP_SEND and DP_RECV function blocks (FC3 and FC4 in the SIMATIC NET CP 342-5 library) implement the DP master interface. They are not SFCs – they are part of the library supplied with the CP and must be present in the S7 program.

Parameter Type Description
CALL FB / Instance Background DB implicitly created by STEP 7 from the FC header
REQ BOOL Edge-triggered send request; on rising edge, the LEN bytes at SEND are transmitted
LEN INT / WORD Length in bytes (1 to the configured slot length)
SEND ANY Pointer to the source data area (e.g. P#DB100.DBX0.0 BYTE 112)
DONE BOOL Set for one cycle when send completed without error
ERROR BOOL Set on error – see STATUS
STATUS WORD Error code: 16# F9C1:236C encoded in the high word sub-event for length violations

Critical programming rules that prevent the F9C1:236C event in the first place:

  • Always size LEN as a constant equal to the configured output slot length, not as a dynamic expression.
  • Initialize the SEND pointer with a fully qualified P# reference; a relative DB pointer without an explicit BYTE length will lead STEP 7 to assume zero bytes and reject the SEND on the very first call.
  • Use DP_RECV with the matching length to read the slave's input area symmetrically.

8. Configuring the Saia PCD3.M3230 as a DP Slave

The PCD3.M3230 CPU is the mid-range member of the Saia PCD3 family. PROFIBUS DP slave connectivity is provided by the PCD3.F221 (PROFIBUS DP slave) or PCD3.F281 modules installed in the Saia backplane. Configuration steps on the Saia side:

  1. In Saia PG5 (or the current SBC tool), open the PCD3 project and add the F221/F281 module to the slot list.
  2. Open the PROFIBUS configuration dialog and define the number of input bytes and output bytes exchanged with the master. This determines the GSD file on the Saia side.
  3. Set the PROFIBUS station address to a unique value (1–125). The three PCD3.M3230s must be at distinct addresses; duplicate addresses cause a steady BUSF rather than the blinking pattern of F9C1:236C.
  4. Export the GSD file from the Saia tool and import it into STEP 7 HW Config. The imported GSD defines the slot/module listing used in the master configuration.
Cross-vendor note: When importing a vendor GSD into STEP 7, always pick the matching "DAP" (Decentralized Automation Peripheral) module. Skipping this step makes the slave appear with no configurable slots, which can lead to a zero-length configured output and an instant F9C1:236C the first time the application tries to SEND.

9. Verification and Commissioning

After applying the corrective actions, run the following checks to confirm the F9C1:236C event is closed and the DP network is healthy.

  1. LED check: BUSF off, RUN solid green on the CP 342-5. On each PCD3.M3230, the PROFIBUS LED should show active data exchange (typically a steady or fast-blinking green LED labelled "BF" or "DX," depending on the F-module revision).
  2. Diagnostic buffer: Confirm an "Outgoing event" for the F9C1 family. No new "Incoming event" entries should appear after the next STOP → RUN cycle.
  3. Online view in HW Config: Right-click the DP master system → PROFIBUS → Online. All three PCD3 slaves should appear with status "OK" and a green check.
  4. Watch table: In STEP 7, open a VAT or watch table and force a known pattern into the SEND area. Observe the input image on the slave side (using Saia PG5 debug tools) and confirm byte-by-byte consistency.
  5. Cyclic payload audit: Print the configured slot lengths from HW Config and the LEN values from every DP_SEND call. The two lists must match. A useful KPI is to maintain a project-wide spread-sheet of Slave → OutputLength → DP_SEND_LEN → DP_RECV_LEN rows.

10. Troubleshooting Matrix

Symptom Likely Cause Corrective Action
BUSF blinking, F9C1:236C, LEN > configured DP_SEND length exceeds HW Config slot Resize HW Config slot to match LEN, or reduce LEN
BUSF blinking, F9C1:236C, all lengths match Wrong HW ID on DP_SEND CALL Update CALL parameter to the CP 342-5 HW ID from HW Config
BUSF blinking, F9C1:236C, length 0 reported SEND ANY pointer malformed (no BYTE length) Correct the pointer syntax: P#DB100.DBX0.0 BYTE 112
BUSF steady, no F9C1 events Physical bus fault or duplicate address Check PROFIBUS connectors, terminating resistors, station addresses
BUSF off, F9C1 events continue in buffer Stale buffer entries from a previous fault Clear buffer, perform STOP→RUN, monitor new entries only
BUSF blinking on a single slave only That slave's GSD or slot configuration diverged Re-import the slave GSD, re-assign slot, re-download
BUSF off, application data is wrong on the wire ENDIAN or byte-order mismatch between master and slave Swap byte order in the SEND source DB; verify with VAT

11. Field-Proven Best Practices

  • Version-pin the GSD: Keep a single canonical GSD for the PCD3.M3230 slaves in a project library. Mixing GSD revisions on a multi-slave segment is a frequent source of intermittent BUSF.
  • Avoid dynamic LEN: If the application needs to transmit variable payloads, segment them into multiple DP_SEND calls with fixed lengths, each tied to a dedicated HW Config slot. The CP 342-5 does not resize a slot on the fly.
  • Pre-allocate the SEND ANY pointer: Declare a stand-alone DB large enough for the maximum planned payload. Always reference the same area from DP_SEND; never use a temporary pointer assembled at runtime.
  • Document every DP_SEND / DP_RECV call in the program header with the expected length and the target slave. This makes the next engineer's review straightforward and prevents accidental drift.
  • Capture the diagnostic buffer to file on every commissioning step. The export is a plain text file, easy to diff and easy to attach to a change request.
  • Keep CP 342-5 firmware current. Siemens released several firmware versions for the 5DA02 hardware that tightened the validation of LEN values and improved the diagnostic event text.

12. Related Diagnostic Event Codes (CP 342-5)

Event ID Sub-code Meaning
16# F9C1 236C DP_SEND output length too high (this article)
16# F9C1 2370 DP_RECV input length too high
16# F9C1 2380 DP_SEND / DP_RECV called for a slave not configured in HW Config
16# F9C1 2384 DP slave failed / dropped out of data exchange
16# F9C1 2390 Configuration error during startup of DP master
16# F9C1 23A0 Parameter assignment error (GSD mismatch)

13. Frequently Asked Questions

What does a blinking BUSF LED on the Siemens CP 342-5 indicate?

A blinking BUSF LED at 2 Hz means the CP 342-5 has detected a DP slave fault or a configuration mismatch on an already-parameterized slave. Combined with diagnostic event 16# F9C1:236C, it points specifically to a DP_SEND output length that exceeds the configured slave slot length in HW Config.

How do I read the CP 342-5 length values from diagnostic event 16# F9C1:236C?

The event text contains the two values directly: the LEN input currently being passed to DP_SEND (for example 144 bytes) and the configured output data length of the addressed slave (for example 112 bytes). The CP 342-5 firmware generates this text; the high word of the event ID (16# F9C1) is the source module class, and 236C is the sub-code for an output length violation.

Should I change the DP_SEND LEN or the HW Config slot to resolve the mismatch?

Prefer increasing the configured output slot in HW Config to match LEN, provided the slave's GSD supports the larger length. Reducing LEN is acceptable when the application does not actually need the larger payload. Always verify on the slave side (in this case the Saia PCD3.M3230 project) that the new length can be consumed before changing the master configuration.

Why does the CP 342-5 reject DP_SEND calls when LEN is larger than the configured slot?

The DP master cannot transmit a telegram larger than the slot negotiated with the slave during parameter assignment. The CP 342-5 firmware refuses the call to prevent silent data loss or a slave re-entry, raising F9C1:236C and setting the ERROR / STATUS outputs of DP_SEND until the configuration is corrected.

How do I find the correct HW ID for the DP_SEND CALL parameter?

Open HW Config, right-click the CP 342-5 module, and view its Object Properties → Diagnostics tab. The HW ID shown there must be used in the DP_SEND (and DP_RECV) CALL instance. If you have more than one CP, double-check the slot to ensure you are referencing the PROFIBUS CP and not, for example, a CP 343-1 Ethernet module.

What should I check if the BUSF clears but the PCD3.M3230 still shows no data exchange?

Verify the PROFIBUS station address of the Saia PCD3 is unique on the segment, confirm the PCD3.F221 or PCD3.F281 module is in RUN (not fault), and ensure the GSD imported into STEP 7 matches the firmware version on the F-module. A mismatched GSD can leave the slot listed in HW Config without a corresponding module on the slave, suppressing data exchange even with BUSF off.

Back to blog