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:
- Block
DP_SENDis being called with a payload of 144 bytes. - HW Config has only reserved 112 bytes of consistent output for the addressed slave.
- The CP is rejecting the call to prevent writing beyond the slave's GSD-defined input buffer.
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:
- SIMATIC Manager → PLC → Online → Accessible Nodes, or in TIA Portal: Online & Diagnostics → Diagnostic buffer.
- Right-click the S7-300 station and choose "Online & Diagnostics."
- 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.
- 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.
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#0100or 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
- Double-click the DP master system line on the CP 342-5.
- Click the PCD3.M3230 slave in the station list.
- Open "Object Properties → Configuration → Module / Slot" for the slave. The "Configured length" column shows what the master reserves for that slave's outputs.
- 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.
6.4 Recompile and Download
- Save and compile HW Config (Station → Save and Compile).
- Download the HW Config to the CPU (target system → Download). This includes the modified PROFIBUS parameters to the CP 342-5.
- Download the modified blocks (DP_SEND, DP_RECV) to the CPU.
- 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_RECVwith 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:
- In Saia PG5 (or the current SBC tool), open the PCD3 project and add the F221/F281 module to the slot list.
- 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.
- 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.
- 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.
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.
- 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).
- Diagnostic buffer: Confirm an "Outgoing event" for the F9C1 family. No new "Incoming event" entries should appear after the next STOP → RUN cycle.
- 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.
- 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.
- 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_SENDcalls 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.