Problem Overview
On a SINAMICS G120 drive (PM240-2 Power Module) equipped with a CU250S-2PN Control Unit (article number 6SL3246-0BA22-1FA0), an emergency-stop pushbutton wired to a fail-safe digital input (F-DI 0) successfully forces the drive into Safe Torque Off (STO). The drive itself behaves correctly: the inverter pulses are cancelled, r9772 reports STO active, and the motor is torque-free. The defect is on the PROFIsafe return path: the S7-1517TF safety PLC does not see the STO active bit on the safety status word coming from the drive, although the safety monitoring blocks report a clean PROFIsafe connection (no CRC or sequence-number faults).
The result is a silent gap: the drive is in STO, but the higher-level safety program cannot react, cannot log the event, and cannot perform a controlled restart handshake. The same symptom can also appear as "STO bits never set" inside the StartDrive safety diagnostics view, even though the drive is physically in STO.
Affected System Components
| Component | Article / Version | Role |
|---|---|---|
| Power Module | SINAMICS G120 PM240-2 (e.g. 6SL3210-1PE... | 3-ph inverter, motor-side power stage |
| Control Unit | CU250S-2 PN (6SL3246-0BA22-1FA0) | Control, PROFINET, PROFIsafe (F-DI 0 / F-DI 2 onboard) |
| Firmware | CU250S-2 V5.2 SP3 or later (Safety Integrated via PROFIsafe) | Provides STO, SS1, SS2, SOS, SLS, SSM, SDI |
| Safety PLC | SIMATIC S7-1517TF (6ES7517-3TL00-0AB0) | F-CPU hosting F-runtime group |
| Engineering | TIA Portal V17 / V18 with StartDrive V17 / V18 | Drive + safety configuration |
| Wiring | E-Stop dual-channel to F-DI 0 (X132.3 / X132.4 on CU250S-2) | Physical E-Stop input |
Reference the CU250S-2 Control Units Operating Instructions for the F-DI pin-out, the dual-channel debounce requirements, and the certified cross-fault detection window.
Root Cause: Control Type and PROFIsafe Source
SINAMICS G120 Safety Integrated on the CU250S-2 lets the user select how the drive is to receive its STO command. The selection is held in parameter p9601 and the safety configuration dialog of StartDrive / TIA Portal. There are three possible values:
- Via PROFIsafe – STO comes from the F-CPU, S_STW1 bit 0.
- Via terminal (F-DI) – STO comes only from the wired F-DI 0 / F-DI 2.
- Via terminal and PROFIsafe – both sources are active; the drive ANDs them logically.
When the drive is set to "Via terminal and PROFIsafe" while the F-DI is being used to trigger STO and the F-CPU is simultaneously not driving the STO bit on S_STW1, the F-CPU can never observe STO active in the returned S_ZSW1. The status reported in the safety status word reflects the logical result of the selected source, not the raw F-DI state. Because the F-CPU never sets its own STO bit, the drive never reports STO active back to the F-CPU, even though the F-DI physically pulled the line low. The PROFIsafe telegram is healthy, the CRC is valid, the watchdog is not tripped – the bit just never changes.
Fix 1 – Align the Safety Control Source
If the F-CPU is the master of all safety commands and the wired E-Stop is only an additional hardware interlock, set the control source to Via PROFIsafe:
- Open the drive in TIA Portal / StartDrive and switch to Safety Integrated.
- Click on the safety function block (STO or Extended Functions) and select Control via PROFIsafe.
- If the wired E-Stop is to remain as a backup, configure a separate F-DI for "Safe Stop" and wire the E-Stop to F-DI 2 (X133.4 / X133.5) instead of F-DI 0.
- Recompile and download to the drive. After download, accept the safety configuration (p9700 = 1, p9701 = 1) and power-cycle if requested.
If the wired E-Stop is the only trigger and PROFIsafe is only used for status reporting, set the control source to Via terminal:
- Open Safety Integrated → Extended Functions in StartDrive.
- Select Control via terminals for STO and SS1.
- Save, compile, and download. The drive will now report STO active in S_ZSW1 bit 0 any time the F-DI is de-energised.
Parameter view after the change (read-only online):
p9601 = 0 (SI enable, integrated functions) // or 1, 2, 3 – depends on firmware variant
p9621 = 722.0 (BI: SI STO signal source – PROFIsafe / F-DI selection)
p9650 = 0 (SI F-DI switchover – F-DI 0 used)
p9651 = 0.001 (SI STO debounce time, 1 ms typical for F-DI 0)
Fix 2 – Correct PROFIsafe Telegram Selection
PROFIsafe status (S_ZSW1) is only transmitted when the drive is configured with a safety telegram. The CU250S-2 PN supports:
| Telegram | Type | Carries | When to use |
|---|---|---|---|
| 30 | Standard PROFIsafe | S_STW1 / S_ZSW1 (16 bit each) | STO, SS1 only |
| 31 | Vendor-specific PROFIsafe | S_STW2 / S_ZSW2 + speed/position | SS2, SOS, SLS, SDI, SSM |
| 901 | Safety Info Channel | Diagnostics (r9780 etc.) | Optional, diagnostics |
| 902 | Safety Info Channel 2 | Diagnostics (extended) | Optional |
To select a safety telegram in TIA Portal:
- In the device configuration of the G120, open Properties → PROFINET interface → Telegram configuration.
- Add telegram 30 (or 31 if extended functions are used). Do not use the standard telegram 1, 2, 3, 5 – these do not contain the S_ZSW status word.
- Verify the slot assignment: the safety telegram must occupy slot 0 (sub-slot 1) of the drive module.
- Compile the project and download both the standard and the safety configuration to the drive.
Verifying the telegram online (read-only):
r922[0] // PROFIdrive PZD telegram, e.g. "30"
r922[1] // Should equal 30 once a safety telegram is loaded
r9780 // SI status list – bit 0 = STO active, bit 1 = SS1 active, etc.
r9781 // SI change-check word – confirms F-parameters accepted
Fix 3 – Configure the F-CPU Side Correctly
The S7-1517TF side must request the correct telegram, accept the right number of safety bits, and the F-runtime group must run within the configured PROFIsafe monitoring time. A mismatched F-monitoring time is the second most common reason for the F-CPU to not react to STO, especially after a project download.
- In the device view of the S7-1517TF, open the PROFINET interface and select PROFIsafe on the G120 sub-module.
- Set the F-destination address (F_Dest_Add). On a CU250S-2 this is set on the drive via
p9610and must match the address typed in TIA Portal (1 to 65534, default 1). - Choose the F-monitoring time. Start with 100 ms; tighten to 50 ms only after the bus topology is stable.
- In the safety program, insert an
F-CPUinstance and connect it to the G120's PROFIsafe slot. The instance exposes the safety status word atF-CPU.S_ZSW1and the control word atF-CPU.S_STW1. - For logic, use
F-CPU.S_ZSW1.%X0to evaluate STO active in the F-runtime group.
Recommended: LDrvSafe Library for the F-Program
Manually unpacking the safety status word, handling acknowledge logic, and reading the drive's safety diagnostics from the G120 over PROFINET is error-prone. The official Siemens LDrvSafe library (part of the "SINAMICS blocks for SIMATIC S7-1500" package, currently at V2.0 for TIA Portal V17) wraps the G120 PROFIsafe interface into reusable function blocks:
| Block | Function |
|---|---|
LDrvSafe_S |
Main F-DB for the drive; links the PROFIsafe channel to the safety program |
LDrvSafe_Ext |
Wraps Extended Safety functions (SS2, SOS, SLS, SDI, SSM) |
LDrvSafe_Diag |
Reads r9780 / r9771 from the drive (non-safety, but safety-related) |
LDrvSafe_Ctrl |
Generates the S_STW1 control word from boolean inputs (STO, SS1, ...) |
Typical insertion in the F-runtime group:
- Open the F-runtime group in the F-OB (e.g.
OB123for S7-1500F). - Drop an instance of
LDrvSafe_Sand wire it to the PROFIsafe channel tag from the G120's F-CPU instance. - Wire the
i_bSTO,i_bSS1, etc. boolean inputs to the F-application logic. - Use the
q_wS_ZSW1output ofLDrvSafe_Sas the mirror of the drive's safety status word for diagnostics andq_bSTOactiveas a ready-to-use boolean for further safety reactions.
The LDrvSafe library also pre-formats the F-host acknowledge and the safety lifecycle (passivation, reintegration), so that PROFIsafe passivation events from the drive do not stall the F-runtime group.
Verification
After the three fixes above, perform a commissioning test with the following sequence. The test exercises both the wired and the PROFIsafe path.
- Power up the drive and the S7-1517TF. Both go to RUN, F-runtime group is active, no F-channel faults.
- In StartDrive, open Safety Integrated → Diagnostics.
r9772.0should be 0 (no STO),r9780should show 0000 hex. - Press the wired E-Stop.
r9772.0must go to 1 within 5 ms. At the same time,S_ZSW1.%X0in the F-CPU must go to 1 within one PROFIsafe cycle (typically 8–16 ms). - Release the E-Stop. Drive returns to "ready to switch on" only after the F-CPU has raised
S_STW1.%X7(acknowledge / internal event ACK). - From the F-CPU side, force
S_STW1.%X0= 1 in the F-program. The drive must enter STO without the E-Stop being pressed. Release by settingS_STW1.%X0= 0 and pulsingS_STW1.%X7. - Disconnect the PROFINET cable while the drive is running. The F-CPU must detect a PROFIsafe fault within
F-monitoring timeand passivate the channel. Restore the cable, set the F-CPU to reintegration mode, and verify normal operation resumes.
Use the online Watch table in TIA Portal to monitor the following tags in real time:
// Drive-side (read-only)
"G120"."r9780" // SI status list – bit 0 = STO active
"G120"."r9772.0" // STO status bit
// F-CPU side (LDrvSafe instance)
"DB_LDrvSafe"."q_bSTOactive"
"DB_LDrvSafe"."q_wS_ZSW1"
"DB_LDrvSafe"."q_bDiagAvailable"
Diagnostic Parameters (Read-Only)
The following parameters are essential when the STO status still does not appear on the F-CPU after the configuration change. Read them in the Parameter view of StartDrive:
| Parameter | Meaning | Expected value |
|---|---|---|
r922[0] |
Current PROFIdrive PZD telegram | 30 or 31 |
r9771.0 |
SI diagnostics: STO active | 0 / 1 |
r9772.0 |
CO/BO: SI status, STO | 0 / 1 |
r9780 |
SI status list (16 bits) | Bit 0 = STO active |
r9781 |
SI change-check word | Must match p9781
|
p9610 |
PROFIsafe address (F_Dest_Add) | Matches TIA Portal configuration |
p9761 |
SI password input | 0 (no lock) |
p10030 |
SI test stop mode | 1 = automatic on power-up, 2 = manual |
p10031 |
SI test stop time | Typically 0.5 s |
Common Fault Codes and What They Mean
If the F-CPU passivates the drive channel, read the F-host diagnostic buffer (F-DB) and the drive's fault buffer. The most frequent codes are:
| Fault / Code | Meaning | Corrective action |
|---|---|---|
| F01611 (SI: defect in F-DI) | Wiring error on F-DI 0 or F-DI 2, debounce, or cross-fault | Check wiring, increase p9651 to 2 ms if necessary |
| F30611 (SI PROFIsafe fault) | CRC error, F-monitoring time exceeded | Reduce bus jitter, increase F-monitoring time
|
| F01620 (SI PROFIsafe address error) |
p9610 ≠ F_Dest_Add in TIA |
Match both sides |
| F01625 (SI sign-of-life failure) | F-CPU watchdog missed | Check F-runtime group OB priority and OB time |
| A01665 (SI: test stop required) | Mandatory test stop not yet run | Trigger p10030 = 1, restart drive |
Extended Safety Functions (Optional)
If the application eventually moves beyond STO and needs SS1, SS2, SOS, SLS, SSM or SDI, the F-CPU must drive telegram 31 (not 30) because the additional control and status bits are not present in telegram 30. The wiring of the E-Stop can stay on F-DI 0, but the control type for each extended function is selected in StartDrive under Safety Integrated → Extended Functions → Control. Always set the control type to the same value across all functions in a project – mixing "Via PROFIsafe" and "Via terminal" across STO and SLS is a frequent audit finding.
For SLS limits on the G120, configure p9331[0..3] (4 limit pairs) and the active limit via the speed setpoint on S_STW2. The LDrvSafe_Ext block maps the SLS bits to the correct indices automatically.
Field-Proven Notes
- After every change to the safety configuration, the drive requests a power-cycle and acceptance test. Plan the change during a maintenance window, not during production.
- Never use a standard PROFIdrive telegram (1, 2, 3, 5, 6, 7) for safety. The S_ZSW word is not present in those telegrams and STO active will never be reported.
- On the CU250S-2 PN, F-DI 0 and F-DI 2 are both onboard. F-DI 0 is intended for the STO / SS1 source; F-DI 2 is typically used for SLS limit selection or as a second source.
- Use
LDrvSafeV2.0 or later for TIA Portal V17. Earlier versions (V1.x) do not support the CU250S-2 with firmware V5.2 SP3. - If the safety status appears in the F-CPU but the drive does not act on a
S_STW1command from the F-CPU, checkp9601– the drive is most likely still in "Via terminal" mode.
Why is the drive in STO but the S7-1500F reports no STO on the safety status word?
The most likely reason is a mismatch in the safety control source: parameter p9601 or the StartDrive control type is set to "Via terminal and PROFIsafe" while the F-CPU is not raising S_STW1 bit 0. The drive then does not report STO active back to the F-CPU. Change the control type to either "Via PROFIsafe" (F-CPU drives STO) or "Via terminal" (F-DI drives STO, PROFIsafe is status-only).
Which PROFIdrive telegram must I select to receive S_ZSW1 on a CU250S-2 PN?
Use telegram 30 for STO and SS1 only. Use telegram 31 if Extended Safety functions (SS2, SOS, SLS, SSM, SDI) are required. Standard telegrams 1, 2, 3, 5, 6 and 7 do not carry S_ZSW1 and must not be used for safety status reporting.
Why does the StartDrive safety monitoring never show STO active even though the F-DI is open?
StartDrive mirrors r9780 and r9771. If those bits stay 0, the drive's Safety Integrated state machine has not yet entered STO. Confirm the F-DI is wired to the right terminals (F-DI 0 on X132) and that the debounce time p9651 is at least 1 ms. If r9780 still reads 0, check that the safety configuration has been accepted (p9700/p9701) and that the drive was power-cycled after the change.
Do I need the LDrvSafe library, or can I read S_ZSW1 directly in the F-program?
You can read S_ZSW1 directly from the F-CPU instance, but LDrvSafe wraps the safety control word generation, the F-host acknowledge logic, the passivation/reintegration flow and the safety diagnostic reads in reusable, certified blocks. For a single drive a direct read is acceptable; for any production system with several G120s, LDrvSafe is the recommended approach.
What is the minimum F-monitoring time for a CU250S-2 PN on PROFINET?
Siemens recommends 50 ms for deterministic PROFINET networks and 100 ms for shared or wireless segments. Below 30 ms the monitoring becomes sensitive to jitter, especially on drives with extended safety functions. After any topology change, re-validate the F-monitoring time with a worst-case PROFINET load test.