Resolving CU305DP Telegram 111 with S7-300 CPU 315-2DP

David Krause16 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

1. Problem Summary

An S7-300 CPU 315-2DP (order number 6ES7 315-2AF02-0AB0, firmware V1.1) is wired by PROFIBUS DP to a SINAMICS CU305DP control unit on firmware V04.40.45, using GSD file revision V4.4.3. Telegram 111 (PZD-2/2) is configured identically on the S7-300 and on the drive, the peripheral addresses match slot for slot, and HW Config in SIMATIC Manager opens the CU305DP online with no station or diagnostic fault. Despite that, neither the control word (STW1) sent from the PLC nor the status word (ZSW1) returned from the drive changes — both remain at zero. The PLC finally writes W#16#47E then W#16#47F to STW1 with no status back from the drive.

Recovery requires two distinct fixes applied in sequence, not one:

  1. Program fix: the LADDR input on SFC14/SFC15 is the PROFIBUS diagnostic address (W#16#3FE, decimal 1022) instead of the cyclic PZD base address of telegram 111 (W#16#A0, decimal 160). The SFCs never touch the telegram area, so the drive receives no cyclic output and returns nothing.
  2. Hardware fix: a separate physical fault is found in the PROFIBUS segment (cable, connector, termination, or a damaged DP port). With the segment repaired, the same program starts working with no parameter change.

This article documents the layered diagnosis that surfaces both causes, the control word bit discipline that would have been a third trap, and the verification sequence that confirms the segment is healthy.

2. Hardware Identification and Compatibility

Before chasing bit-level symptoms, capture the exact order numbers and firmware states. Old CPU + new drive combinations are the most common cause of "nothing works at all" complaints, and most of them turn out to be a version mismatch you can rule out in five minutes.

Item Order number / file Firmware / version Role
CPU 6ES7 315-2AF02-0AB0 Firmware V1.1 S7-300 DP master, two PROFIBUS interfaces (MPI/DP on X1, DP on X2)
Control unit SINAMICS CU305DP Firmware 04.40.45 PROFIBUS slave for SINAMICS S110 (single-axis servo) with EPOS basic positioner
GSD file SIEM811F.GSD (or named equivalent for V4.4.3) Revision V4.4.3 DP slave description, defines telegram 111 PZD layout
STEP 7 SIMATIC Manager (classic) Match CPU FW V1.1 Configuration tool
Compatibility check: CPU 315-2DP firmware V1.1 supports DP master class 1 (DPM1) on both interfaces. The CU305DP on V4.4.45 is fully PROFIBUS-compliant and can be masters of any S7-300 DP master. The combination is supported. A cross-firmware "incompatibility" is not the cause of zero PZD here.

Reference the S7-300 CPU 31xC and CPU 31x manual for the AF02 variant's two-port behavior on the Siemens support portal and the SINAMICS S110 Control Units manual for the CU305DP slot map on the SINAMICS S110 documentation.

3. Telegram 111 PZD Layout for CU305DP

Telegram 111 on SINAMICS S110 is the standard 2-PZD/2-PZD telegram for the EPOS (basic positioner) function. Both directions are 2 words, so the cyclic I/O image is 4 bytes each way.

Word Direction Signal Width Purpose
PZD1 PLC → Drive STW1 (Control Word 1) 16 bits Drive state machine control, fault acknowledge, enable
PZD2 POS_STW (Positioning Control Word) 16 bits EPOS operating mode, MDI bits, jog, traversing block selection
PZD1 ZSW1 (Status Word 1) 16 bits Drive state machine status, fault bit, control requested
PZD2 POS_ZSW (Positioning Status Word) 16 bits EPOS status, MDI acknowledgement, setpoint reached, axis position

Total cyclic payload is 4 words input + 4 words output. The PLC must reserve a contiguous peripheral area of at least 4 bytes for SFC14 and 4 bytes for SFC15. STEP 7 assigns the base addresses in HW Config under the CU305DP slot properties; note both the input start and the output start — they are usually equal for symmetric telegrams like 111 but can differ if the master/slave modules are not aligned.

4. Diagnostic Address vs. PZD I/O Base Address (LADDR)

The single most common mistake in this scenario is feeding SFC14/SFC15 the wrong LADDR. The PROFIBUS slave has two address areas in HW Config:

Area Typical value Used by What it does
Diagnostic address 1022 dec (0x3FE) SFC13 DPNRM_DG, CPU diagnostic buffer, slave diagnostics Carries the slave's diagnostic frames; not the cyclic PZD
PZD I/O base address 160 dec (0xA0) SFC14 DPRD_DAT, SFC15 DPWR_DAT Start of the cyclic process data window for telegram 111

Symptom of using the wrong LADDR: SIMATIC Manager HW Config opens the slave online with no error, the SFC returns RETVAL = 0 (no access error), and the RECORD buffer never changes. Because the diagnostic area is readable, SFC13-based diagnostics still work — masking the mistake.

Fix the program so that:

  • SFC15 LADDR = W#16#A0 (output side of telegram 111, PLC → drive).
  • SFC14 LADDR = W#16#A0 (input side of telegram 111, drive → PLC). For symmetric telegrams the base is the same number; for asymmetric telegrams check the input start address separately.
  • RECORD points to a DB or Merker area of at least 4 bytes (one double word) for PZD-2/2.
Reference: the SFC14/SFC15 specification and LADDR semantics are documented in the STEP 7 System and Standard Functions reference, on the Siemens support portal (search for "System Software for S7-300/400 System and Standard Functions").

5. SFC14 / SFC15 Consistent Data Access

PROFIBUS DP transports PZD as a consistent block. If the PLC reads or writes the I/O area with plain L PEW / T PAW instructions, the four bytes can be torn across two PLC scan cycles and you see half-old / half-new data. For drives, that manifests as STW1 bits flickering and ZSW1 latching nonsense. Use SFC14/SFC15 to read and write the entire 4-byte PZD window atomically.

5.1 Write (PLC → Drive) with SFC15 DPWR_DAT

// STW1 in DB100.DB0 (WORD)
// POS_STW in DB100.DB2 (WORD)
CALL  "DPWR_DAT"
     LADDR  := W#16#A0          // PZD output base address
     RECORD := P#DB100.DBX0 BYTE 4   // 4-byte record
     RETVAL := MW200            // 0 = OK, see error table below
END_CALL

5.2 Read (Drive → PLC) with SFC14 DPRD_DAT

// ZSW1 in DB101.DB0 (WORD)
// POS_ZSW in DB101.DB2 (WORD)
CALL  "DPRD_DAT"
     LADDR  := W#16#A0          // PZD input base address
     RETVAL := MW202            // 0 = OK
     RECORD := P#DB101.DBX0 BYTE 4
END_CALL

5.3 RETVAL error codes (most common)

RETVAL (hex) Meaning Action
0000 No error None
80A0 Negative acknowledgement from DP slave, or wrong LADDR Verify LADDR against HW Config PZD base address, not the diagnostic address
80A1 DP slave not yet ready / not configured Check SF/BF LEDs, drive state
80A2 DP slave resource error Check telegram length matches GSD, RECORD length
80B0 DP slave not in DPM1 addressing range Check bus address, segment, termination
80B1 Length specification error RECORD length does not match configured PZD length
80B2 DP slave is being configured Retry after a delay
80C0 DP slave not in S7 data transfer list Re-run HW Config download on the master
80C2 DP slave: short circuit / no power Investigate physical layer

If RETVAL = 0 but the buffer still reads zero, the program is writing to the wrong LADDR. Cross-check by going online with the drive and reading parameter r2050[0..1] (PZD receive from master) — if the values are zero, the master is the problem; if the values are correct, the drive is the problem.

6. Control Word 1 - The Bit 10 Rule

Even with the correct LADDR, telegram 111 will not respond to commands if STW1 bit 10 is not set. Bit 10 is the control requested bit (also called "master control by PLC" or "BicoCtrl"): until the drive sees it, the drive ignores all other command bits and never advances the state machine. ZSW1 then sits at zero and looks like the drive is dead.

STW1 bit Signal Value to start
0 ON / OFF1 1
1 OFF2 (coast stop) 1 (inactive)
2 OFF3 (quick stop) 1 (inactive)
3 Enable pulse 1
4 Ramp-function generator enable 1
5 Ramp-function generator start 1
6 Setpoint enable 1
7 Acknowledge fault 0 → 1 transition (rising edge)
8 Reserved / jog 1 0
9 Reserved / jog 2 0
10 Master control by PLC (BICO bit 0) 1 (mandatory)
11 Direction reversal (setpoint inversion) 0
12 Reserved 0
13 Motorized potentiometer raise 0
14 Motorized potentiometer lower 0
15 Command data set changeover 0

The two control word values from the failing program — W#16#47E and W#16#47F — decode as follows:

0x47E = 0000 0100 0111 1110
        bit10=1, ON=1, OFF2=1, OFF3=1, EnablePulse=0 (transitioning)

0x47F = 0000 0100 0111 1111
        bit10=1, ON=1, OFF2=1, OFF3=1, EnablePulse=1 (running)

Both values set bit 10 correctly, so the "missing bit 10" hypothesis is not the cause of the symptom in this case — but it is the most common reason for the same symptom on a fresh installation. Always confirm bit 10 in your outgoing STW1 before chasing the LADDR or the cable.

7. Byte Order Between the PLC and the Drive

Siemens S7 stores words in big-endian at the byte level: in DB100.DB0 (a 16-bit word), bits 15..8 are at DBX1 and bits 7..0 are at DBX0. SINAMICS drive-side parameters (r2050, p2051, r2060) also use big-endian, so for symmetric PZD-2/2 there is normally no byte swap needed — but if the project copies PZD into a byte array and rearranges it for some legacy reason, you will see the high and low bytes flipped in the drive.

How to check:

  1. Read the drive's r2050[0] (PZD1 from master). If the value matches the outgoing STW1 exactly, byte order is correct.
  2. Read r2050[1] for PZD2 (POS_STW).
  3. If r2050 reports 0x7E47 instead of 0x47E, the buffer passed to SFC15 is byte-swapped. Reverse the byte order in the DB before calling SFC15.
Field note: when the user observes correct STW1 on the drive side but reversed ZSW1 on the PLC side, the swap is happening at the receive stage. Insert a swap word block in OB1 between SFC14 and the application DB.

8. Online Diagnostics and the Slave Diagnostic Frame

When PZD is silent, the next step is the slave diagnostic frame. It distinguishes "the slave never received the PZD" from "the slave received PZD but did not process it".

8.1 Reading the diagnostic frame with SFC13 DPNRM_DG

CALL  "DPNRM_DG"
     LADDR  := W#16#3FE       // diagnostic address of the CU305DP
     RETVAL := MW204
     RECORD := P#DB110.DBX0 BYTE 32   // at least 6 bytes, 32 is safe
END_CALL

The first 6 bytes are the standard DP diagnostic header; bytes 6+ are device-specific and, for SINAMICS, follow the PROFIdrive profile diagnostic layout. Look for:

  • Byte 5 bit 7 = 1 → "PZD fault", drive rejected the telegram.
  • Byte 5 bit 6 = 1 → "PZD update", drive sees incoming data.
  • Status byte 0x1C or higher → drive is in fault state and the state machine cannot move.

8.2 HMI Web server of the CU305DP

The CU305DP ships with a web server on default IP 169.254.11.22 (subnet 255.255.0.0) that exposes the live r2050 / r2053 values without any STEP 7 traffic. If the live r2050 is non-zero but the PLC reads zero, the issue is the receive side. If the live r2050 is zero, the issue is the send side. This is the fastest single instrument for fault isolation.

8.3 STARTER / SINAMICS commissioning tool

STARTER (or the newer Startdrive) online view of the CU305DP shows the expert list. The minimum parameters to verify:

Parameter Meaning Expected
p0922 IF1 PROFIdrive telegram selection 111
p2038 STW/ZSW interface mode 0 (SINAMICS) or 1 (SIMODRIVE 611 universal) — match p0922 semantics
p2042 Telegram monitoring time 0 = off, or 100..2000 ms (default 100 ms)
p2051[0..1] PZD output from drive to master (ZSW1, POS_ZSW) 50001 (ZSW1) for index 0, 50109 (POS_ZSW) for index 1
r2050[0..1] Live PZD received from master Non-zero when PLC is sending

9. Hardware Fault Isolation

The original case ended with "We find a hardware problem." That is the correct final chapter of this story. The most common physical-layer faults in this combination, in order of frequency:

  1. Termination missing or duplicated. A 220 Ω + 390 Ω termination is required at the start and end of the segment only. CPUs count as a node. The CU305DP must have its bus terminator ON (DIP switch on the CU305, or wired terminator on the SUB-D connector) only if it is at the end of the segment. DP repeaters (RS-485) re-isolate and re-terminate each segment.
  2. Cable damage. Pinch points at cabinet entries, abrasion at drag chains, and crushed cable trays are the usual suspects. A 9-pin PROFIBUS cable must keep the two data lines (pin 3 = B, pin 8 = A) twisted at a lay of roughly 1 inch (25 mm) and shielded. Reading A-B with a multimeter should show ≈ 220 Ω with terminators in and ≈ 50..70 Ω between A and B without.
  3. Connector wiring reversed. Pin 3 (B) on one end of the cable landing on pin 8 (A) on the other end is a classic field mistake. The bus scans as alive, but every frame is a one-bit error.
  4. Damaged DP port. The CPU 315-2DP X1 and X2 interfaces each have their own physical transceiver. If a transient ESD or a wiring fault killed one port, swapping to the other interface (and updating HW Config to point at that port) is the fastest check.
  5. Power supply sag on the drive. If the CU305DP sees 24 V below 20 V, it stays alive enough to scan on PROFIBUS but cannot actuate outputs. The BF LED will be off while the actual drive enable is rejected.
Check Measurement Pass criterion
Bus voltage at each node, A-B 0 V idle, ±1 V transitions ≥ 4.5 V differential on transitions
DC bus resistance, end to end With terminators in ≈ 220 Ω across (A-B) of each terminator
Shield continuity End-to-end, no breaks Continuity < 1 Ω end to end
Connector pinout Pin 3 = B, pin 8 = A on every node Same on every node
CPU SF / BF LED BF on = bus fault, SF on = CPU fault Both off after HW Config download

10. Step-by-Step Recovery Procedure

  1. Verify the slave is reachable. Open HW Config online and read the CU305DP slot properties. Confirm the configured PZD output base address. Write it down; call it LADDR_OUT. Do the same for the input base address; call it LADDR_IN. The diagnostic address is separate.
  2. Patch the LADDR in the program. In every CALL "DPWR_DAT" block, set LADDR = LADDR_OUT. In every CALL "DPRD_DAT" block, set LADDR = LADDR_IN. Leave the SFC13 LADDR at the diagnostic address.
  3. Confirm RECORD length. For telegram 111 (PZD-2/2), RECORD must be BYTE 4. Mismatches yield RETVAL = 80B1 and a CPU diagnostic entry.
  4. Set STW1 with bit 10. In the application, build STW1 as 0x47E → 0x47F on the rising edge of the start command, then hold 0x47F for steady run. Bit 10 = 0x400 must always be set once control is requested.
  5. Download the project to the CPU and go online. Watch DB100.DBD0 in the live monitor. The first SFC15 call should now write a non-zero value to the drive's r2050[0].
  6. Read back the drive with STARTER or the web server. r2050[0] should equal STW1, r2050[1] should equal POS_STW. ZSW1 (r0930 internal mapping) should show bit 0 ("Ready to switch on") toggle as STW1 changes.
  7. Read the PLC side with SFC14. DB101.DBD0 should now change every PROFIBUS cycle. ZSW1 bit 10 ("control requested acknowledged") is the bit that proves the drive sees the master.
  8. Physically inspect the segment. Check terminators, connectors, cable damage, shield bonding, and 24 V at the CU305DP. This step is what surfaced the final hardware fault in the original case.
  9. Power-cycle the drive. After any hardware repair, repower the CU305DP and the line module so that the bus comes up in a known state.

11. Verification Checklist

Item How to verify Pass criterion
Slave online HW Config → online view CU305DP slot list all green, no diagnostic icon
PZD sent Drive r2050[0] in STARTER Equals the value in the SFC15 RECORD
PZD received DB101.DBD0 in STEP 7 online Changes every bus cycle, ZSW1 bit 10 = 1 after control is requested
Control word bit 10 DB100.DBW0 mask 0x4000 Always 1 once "control by PLC" is granted
SFC RETVALs MW200, MW202, MW204 All 0x0000
CPU LEDs SF, BF on CPU front Both off, RUN on
Drive state machine STARTER control panel or r0899 Ready → Switched on → Operation enabled as STW1 is sequenced
Diagnostic buffer CPU diagnostic buffer No DP station failure entries

When all eight items pass, telegram 111 is alive. A typical first time from a cold bus to operation enabled with this configuration is 80..150 ms (one PROFIBUS cycle plus the drive's internal ramp-up).

12. Common Variations on the Same Symptom

Three further cases that produce the same "STW1 = 0, ZSW1 = 0" picture and worth ruling out before going to the cable tray:

  • Wrong telegram selected in p0922. If p0922 does not match the HW Config telegram, the drive maps the PZD differently. Forcing p0922 = 111 and re-powering the drive is the fast check.
  • Drive in commissioning mode (p0010 ≠ 0). The drive will not act on cyclic PZD while commissioning is open. Reset p0010 = 0 and copy RAM to ROM.
  • BICO interconnections overridden. Manual BICO changes to p0840, p0844, p0845, or p2103 (the standard control signal sources) route the enable logic away from STW1. Restore with p0010 = 30, p0970 = 1 factory reset, or re-load a saved project.

What is the correct LADDR for telegram 111 SFC14 / SFC15 on a CU305DP?

Use the PZD I/O base address assigned by STEP 7 HW Config for the telegram slots, not the diagnostic address. For a CU305DP with telegram 111 in the typical default slot map, the base is W#16#A0 (decimal 160, hex 0xA0). The diagnostic address, often 1022 (0x3FE), is only for SFC13 DPNRM_DG. Confirm the value under CU305DP → Properties → Telegram in HW Config.

Why is bit 10 mandatory in STW1 for SINAMICS drives?

Bit 10 is the "master control by PLC" (BICO bit 0) signal. Until the drive sees bit 10 = 1, the state machine refuses to leave "Switching on inhibited" and all other control bits are ignored. The drive will also not return any meaningful ZSW1. Always set bit 10 (0x400) in STW1 the moment you want PLC-driven control.

Why does SFC15 return RETVAL = 0 but the drive still sees zero PZD?

RETVAL = 0 only confirms the master wrote to some peripheral area it considers valid. If LADDR is the diagnostic address instead of the PZD base address, the call is technically successful but writes nowhere the drive looks. Check the address you are using, then verify the drive's r2050[0] in STARTER to confirm reception.

How do I distinguish a software fault from a hardware fault when PZD is zero?

Open the CU305DP web server (default 169.254.11.22) or STARTER online view. If r2050[0] shows the value you are sending, the physical layer and PROFIBUS are healthy — the bug is in the application (LADDR, byte order, or STW1 bit 10). If r2050[0] is zero, the master is not transmitting — move from the LADDR check to the cable, terminator, and DP port.

Can the old CPU 315-2DP firmware V1.1 talk to a CU305DP on firmware V4.4.45?

Yes. PROFIBUS DP is fully back-compatible across S7-300 and SINAMICS generations, and a DPV0 master (which the V1.1 CPU 315-2DP provides) is sufficient for telegram 111 cyclic PZD. The version gap is not the root cause of the symptom; in this case both the LADDR and the physical layer were.

Back to blog