Resolving SINAMICS V90 CWL/CCWL Limit Switch Failure in Speed

David Krause15 min read
SiemensTroubleshootingVFD / Drives
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 SINAMICS V90 CWL/CCWL Limit Switch Failure in Speed Mode

The SINAMICS V90 servo drive family is a low-cost, point-to-point positioning platform that supports four control modes: Pulse Train Input (PTI), Internal Position (IPos), Speed (S), and Torque (T). The CWL (clockwise limit) and CCWL (counter-clockwise limit) hardware inputs are mandatory for any axis that can run continuously in either rotational direction. Field reports on drives with firmware V1.06 show that CWL/CCWL signals stop the motor correctly in IPos mode but are silently ignored in S mode when the drive is being commanded over Modbus. The root cause is a documented occupancy of the CWE/CCWE control bits by the Modbus control word, and a Siemens-internal test team has confirmed this behavior. This reference provides a complete diagnostic flow, parameter-level remediation, and verified workarounds for production systems.

Affected hardware: SINAMICS V90 200V and 400V frame sizes FSA through FSF with Modbus RTU control (RS485 on CN1 or CN3 depending on variant). Affected firmware: V1.04.02 through V1.07.x, with the issue not resolved until PROFINET variant migration or PTI reconfiguration. The official operating instructions are published on the Siemens Industry Online Support portal as document 109751530 - SINAMICS V90 Operating Instructions.

1. Problem Description

The reported failure mode is consistent across multiple installations:

  • The drive responds to Modbus speed setpoints (control word 0x06/0x07, speed setpoint 0x06/0x07) and accelerates the motor as expected.
  • The jog command (Modbus control word bit Jog Enable + a non-zero speed reference) is accepted and the motor rotates.
  • When a CWL or CCWL limit switch is physically actuated and the corresponding digital input transitions from logic 1 → 0, the drive does not trigger an OFF3 fast stop as it does in IPos mode.
  • The motor continues to drive the load against the limit switch, typically faulting the machine mechanically or stalling the drive on a current clamp.

Symptoms disappear when the same DI wiring is exercised under IPos control with p29003 (control mode source) set to IPos. The two operating modes are therefore not electrically equivalent, and the difference is the source of the fault.

2. Root Cause: Modbus Control Word Occupancy

The SINAMICS V90 Modbus register map places the speed-mode CWE (clockwise enable) and CCWE (counter-clockwise enable) control bits inside the Modbus control word 1 (register 0x06/word 1). When p29008 = 1 (Modbus is the active setpoint/control source), these bits are written from the bus and the corresponding DI terminal inputs are no longer routed to the drive's internal limit logic. The same rule applies to the SON (servo-on) bit in every mode and to the SREF bit in Reference mode 0 of IPos. This is documented in the operating instructions, section on "Signals occupied by the Modbus control word" (page reference in the V90 manual is typically labeled "P-222" in older printings):

"The following signals are occupied by Modbus control word when you use the setpoint and control word from Modbus as the Modbus control source (p29008 = 1). They can only be enabled by Modbus control word while cannot be enabled by external DI terminals.

  • PTI control mode: SON
  • IPos control mode: SON, SREF (REF for reference mode 0)
  • S control mode: SON, CWE/CCWE
  • T control mode: SON"

The CWE/CCWE bits in S mode are the digital equivalent of the CWL/CCWL hardware inputs. When Modbus owns them, the DI terminals are forced inactive. A physical limit switch wired to DI3 or DI4 simply has no path to the drive's stop logic. The motor will not see the limit event because the CWE/CCWE enable bits, held at 1 by the Modbus master, override any external de-assertion.

Engineering implication: In S mode under Modbus control, the only way to command a hard stop is to either (a) clear the CWE/CCWE enable bits in the Modbus control word based on your own reading of the limit switch (i.e., a software mirror), or (b) trigger OFF3 via the Modbus control word (bit pattern 0x0007 for OFF3 + a non-zero reference). Hardware CWL/CCWL at the DI terminals are not in the stop decision tree.

3. Why IPos Mode Behaves Differently

In IPos mode the CWE/CCWE bits in the Modbus control word remain free, and the drive continues to honor the CWL/CCWL hardware inputs. The stop behavior is then a standard OFF3 (fast stop, ramp-down at the deceleration set in p29075/p29076) triggered by the falling edge of DI3 (CWL) or DI4 (CCWL). The state transition in firmware is:

  1. DI3 (CWL) or DI4 (CCWL) transitions 1 → 0.
  2. Drive internal signal CWL/CCWL is asserted low.
  3. OFF3 sequence is initiated; the internal speed reference is forced to 0 and the deceleration ramp is engaged.
  4. Servo-enable is removed after standstill; the drive may transition to S4 (operation) → S5 (stop) depending on configuration.

When p29008 is set to 1 and the active mode is S, the firmware short-circuits step 2: the internal CWL/CCWL is sourced from the Modbus control word's CWE/CCWE bits, not from the DI input. Step 1 is therefore non-functional in the stop path.

4. Preconditions and Prerequisites

Before troubleshooting, confirm the following:

  • Drive firmware version: read r29018 (firmware version) and r29019 (build). Versions V1.04.02 and V1.06.x have been observed with this behavior; the issue is also reproducible on early V1.07 hardware as of field testing. Capture the version before any firmware change.
  • Control source: read p29008. A value of 1 means Modbus is the active control word source. A value of 0 means the DI terminals are in control.
  • Active control mode: read p29003. Allowed values: 0 = S, 1 = PTI, 2 = IPos, 3 = T.
  • DI function mapping: read p29301 (DI1), p29302 (DI2), p29303 (DI3), p29304 (DI4), p29305 (DI5), p29306 (DI6 if present). The factory default assigns CWL to DI3 and CCWL to DI4 with logic type = PNP (high-true). See Section 5.
  • Wiring polarity: the limit switch must be wired normally-closed so that a wire break or power loss also asserts the limit. PNP sourcing inputs in the V90 require the switch to pull the input HIGH for "limit not active" and let the input go LOW for "limit active".

5. DI Mapping Reference

The following table shows the standard DI assignment for limit switches. These are the factory defaults on a fresh V90; any deviation must be re-validated after a parameter reset.

DI Terminal (CN1) Default Function Parameter Logic Required for CWL/CCWL?
DI1 5 SON (Servo On) p29301 PNP, level No
DI2 6 RES (Reset) p29302 PNP, edge No
DI3 7 CWL (CW Limit) p29303 PNP, level Yes
DI4 8 CCWL (CCW Limit) p29304 PNP, level Yes
DI5 9 EMGS (Emergency Stop) p29305 PNP, level No (separate hardwired safety)
DI6 10 SPD1 / mode select p29306 PNP, level No
If p29303 is not 1 (CWL) or p29304 is not 2 (CCWL), the limit switches have been reassigned. The Siemens FAQ example for jogging on V90 retains these defaults, so any deviation will require both p29008 = 1 path validation and DI re-mapping.

6. Step-by-Step Diagnostic Procedure

  1. Confirm control source. Read p29008 on the drive. If p29008 = 1, expect the documented CWE/CCWE occupancy in S mode. If p29008 = 0, the problem is elsewhere; skip to Section 9 (Advanced Diagnostics).
  2. Confirm active mode. Read p29003. If 0, drive is in S mode. If 2, drive is in IPos and the bug is not the cause.
  3. Read DI status live. Monitor r29011 (digital input status) via Modbus register 0x05/word 3 or via the V-ASSISTANT / SINAMICS V-Commissioning tool. Bits 2 and 3 represent DI3 (CWL) and DI4 (CCWL). Manually actuate the limit switch and confirm the bit transitions from 1 → 0. If the bit does not transition, the fault is electrical (wiring, switch, 24 V supply, or terminal screw torque).
  4. Verify DI function mapping. Read p29303 and p29304. Both should be 1 and 2 respectively. If a non-default value is present, restore defaults with p29010 = 1 (factory reset) or manually reassign the parameters and power-cycle.
  5. Force a CWL event in S mode with the motor mechanically unloaded: jog the motor CW at 60 rpm, then open the CWL switch. Observe whether the drive decelerates. If it does not decelerate, the issue is confirmed: Modbus CWE/CCWE override the DI inputs.
  6. Repeat the test in IPos mode by changing p29003 = 2 and issuing a positioning move. Open the same CWL switch. The drive must trigger an OFF3. This step isolates firmware from wiring.

7. Confirmed Workarounds

Siemens application engineering has endorsed the following three remediation paths. Choose based on the machine architecture.

7.1 Switch to Pulse Train Input (PTI) Control

PTI mode is not on the Modbus occupancy list (only SON is occupied). CWL/CCWL hardware inputs remain fully functional. Trade-offs:

  • Requires a pulse + direction signal source (PLC high-speed counter, stepper controller, or a dedicated motion module).
  • Loses the ability to command setpoints purely over Modbus RTU. Some hybrid designs keep Modbus for parameterization and PTI for motion.
  • Electronic gearing ratio is set via p29012 (numerator) and p29013 (denominator).

7.2 Switch to a PROFINET V90 Variant (V90 PN)

The V90 PN variant supports PROFINET IRT and exposes CWL/CCWL as dedicated safety-related or standard I/O at the controller. The Modbus control word occupancy problem is specific to the RS485 Modbus control word; PROFINET telegram-based control does not exhibit the same bit-stealing behavior. This is the preferred long-term solution for new machines.

7.3 Software Mirror of Limit Switches over Modbus

For systems that must remain on Modbus + S mode, implement a closed loop in the PLC:

  1. Wire the limit switches to a digital input module on the PLC, in addition to the V90 DI3/DI4 (the V90 inputs can still be used for IPos mode, or for monitoring).
  2. In the PLC, watch the limit input state. On a 1 → 0 transition, clear bits 2 (CWE) and 3 (CCWE) of the Modbus control word 1 (register 0x06/word 1), leaving only the SON, OFF, and reference bits set as needed. This forces the drive to halt via the firmware CWE/CCWE path.
  3. Reset the bits only after the limit input returns to logic 1 AND a manual reset is issued.
Safety warning: Option 7.3 introduces PLC scan-time latency between the physical limit event and the drive stop. Typical latency is 5-50 ms depending on PLC cycle. If the application is a hard-stroke safety limit (e.g., end-of-travel on a vertical axis), the software mirror is not acceptable and a hardware-based stop path (e.g., EMGS input or external contactor) is required.

8. Firmware and Variant Considerations

Field observations across multiple installations:

Firmware Build Behavior Observed Notes
V1.04.02 04 Bug present Earliest version supporting Modbus jog
V1.06.00 06 Bug present Most common factory-shipped build for V90 200V FSA-FSB
V1.07.00 07 Bug present on RS485 Modbus variant; PN variant unaffected PN variant changes bus interface and is a different firmware branch

Check the firmware version on the drive's display on power-up, or read parameter r29018. The Siemens V-ASSISTANT commissioning tool provides a graphical view of r29018 and r29019 and will not change parameter values during a read-only connection. A firmware update does not resolve the CWE/CCWE occupancy bug for the Modbus variant; the limit is a documented, intentional interface design. Always validate by repeating Section 6 step 5 after any firmware update before commissioning a production system.

9. Advanced Diagnostics: When the Cause Is Not Modbus Occupancy

If the DI inputs themselves are not transitioning or the CWL/CCWL functions appear to be ignored even in IPos mode, investigate the following:

Symptom Likely Cause Check
DI bit does not change in r29011 when switch is actuated Wiring fault: open 24 V, missing 0 V at terminal, terminal screw loose Measure 24 V at DI pin relative to 0 V at terminal block; verify torque per V90 Operating Instructions Section 4.2
DI bit changes but drive does not stop DI function mapping wrong; p29303/p29304 overwritten Read p29301-p29306; restore with p29010 = 1
DI bit changes, drive stops in IPos, ignores in S, p29008 = 0 Drive is in S mode with p29008 = 0 and DI is being used as a different function (e.g., SPD1/SPD2/SPD3) Read p29301-p29306 and p29020-p29022 (speed setpoints)
OFF1 instead of OFF3 is observed Wire break in normally-closed loop; ramp is p29075 not p29076 Inspect p29075 (OFF1 decel) and p29076 (OFF3 decel)
Spurious limit trip on power-up Switch in active state during boot before PLC has enabled servo Sequence PLC to enable SON only after limit switches are read as inactive

10. Recommended Parameter Set for Modbus Jogging

The following parameter set is the minimum baseline for a Modbus-controlled V90 used for jogging with a verified stop path. Always back up parameters with V-ASSISTANT before applying changes.

Parameter Value Meaning
p29003 0 S mode (Speed)
p29008 1 Modbus as control source
p29010 1 (write once then 0) Factory reset before first commissioning
p29303 1 DI3 = CWL
p29304 2 DI4 = CCWL
p29075 application-specific OFF1 deceleration ramp (ms or rpm/s)
p29076 application-specific OFF3 deceleration ramp (use fast value for limits)
p29077 application-specific Torque limit
r29011 read-only Digital input status (used for diagnostic mirror)

For jog operation over Modbus, the typical control word sequence is:

  1. Write 0x0006 to register 0x06 (Shutdown / ready to switch on).
  2. Write 0x0007 to register 0x06 (Switch on + enable operation, equivalent to SON + CWE + CCWE).
  3. Write the desired jog speed to register 0x07. Drive accelerates along the ramp defined by p29075.
  4. To stop, write 0x0007 with reference = 0 (OFF1 stop), or write 0x0007 with both CWE and CCWE bits cleared in your PLC software mirror to trigger an OFF3-style inhibit.

11. Verification Procedure

After applying any of the workarounds in Section 7, perform the following functional safety check before returning the machine to production:

  1. Run a controlled low-speed (≤10 rpm) jog in the positive direction.
  2. Actuate the CWL limit switch. The drive must enter fast stop within 200 ms of the switch contact opening.
  3. Reset the drive, jog in the negative direction, and actuate the CCWL limit switch. Verify the same fast-stop behavior.
  4. Confirm that the PLC faults on any limit event with a non-zero, latching alarm. A non-latching alarm that auto-resets is not acceptable for a safety-relevant limit.
  5. Repeat the test at the maximum commissioned jog speed to verify that the deceleration ramp brings the motor to a stop before the mechanical end-stop is reached.

Document the test result, the firmware version, and the DI mapping in the machine file. A signature from the safety reviewer is required for CE-marked machinery in the EU/EEA.

12. Related Standards and References

Limit switch implementation on industrial drives falls under several international standards. The following are the most commonly invoked and should be verified against the current edition of the source documents:

  • IEC 61800-5-2 - Adjustable speed electrical power drive systems, Part 5-2: Safety requirements, functional. Defines the SST (Safe Stop) and SS1/SS2 stop functions that some drives implement as alternatives to hardwired CWL/CCWL. The V90 does not natively implement this standard, so hardware CWL/CCWL is the only stop path.
  • ISO 13849-1 - Safety of machinery: Safety-related parts of control systems. Categories B, 1, 2, 3, 4 define the architecture requirements; for a single-channel limit switch on a V90, the achievable category is typically 1 or 2.
  • EN 60204-1 - Safety of machinery: Electrical equipment of machines. Section 9.2.5.8 covers emergency stop; section 9.3 covers the requirements for stop categories.

For Siemens-specific safety implementations, the SIMATIC F-CPU and SINAMICS Safety Integrated (separate firmware option) provide a higher-integrity stop path. The V90 base unit does not include Safety Integrated, so the CWL/CCWL inputs remain the only functional limit path.

13. Diagnostic Decision Flowchart

The following inline SVG summarizes the troubleshooting decision tree described in the sections above.

CWL/CCWL not stopping motor in S mode Read p29008: Modbus control source? p29008 = 0Go to Section 9: other causes p29008 = 1CWE/CCWE owned by Modbus Choose a workaround PTI mode (Section 7.1) PROFINET variant (7.2) PLC software mirror (7.3) Run Section 11 verification: CWL/CCWL trigger OFF3 in < 200 ms

14. Frequently Asked Questions

Why do my V90 limit switches stop the motor in IPos mode but not in S mode over Modbus?

In S mode with p29008 = 1 (Modbus as the control source), the firmware sources the CWE/CCWE enable signals from the Modbus control word rather than the DI3/DI4 hardware inputs. The DI terminals are no longer in the stop decision tree. IPos mode does not steal these bits from the bus, so the hardware inputs remain active. This is documented in the SINAMICS V90 Operating Instructions under "Signals occupied by the Modbus control word".

Can firmware V1.07 fix the Modbus CWE/CCWE occupancy bug?

No. The occupancy is a documented design decision for the RS485 Modbus control word and is preserved across V1.04 through V1.07 on the Modbus variant. The PROFINET V90 variant (different firmware branch) does not exhibit the same bit-stealing, but a firmware update on a Modbus drive alone will not restore hardware CWL/CCWL control in S mode.

What is the fastest verified workaround that keeps the Modbus interface?

Mirror the limit switch state in the PLC and clear the CWE/CCWE bits (bits 2 and 3) in Modbus control word 1 (register 0x06) on a falling edge of the limit input. Stop latency is bounded by the PLC scan time (typically 5-50 ms) and the drive's response to the cleared bits (additional single-digit ms). For safety-relevant limits, also wire a hardware stop (EMGS input, contactor, or STO via a safety relay) in parallel.

What parameters define the CWL/CCWL hardware input mapping on the V90?

DI3 is mapped via p29303 (factory value 1 = CWL) and DI4 via p29304 (factory value 2 = CCWL). The live state is read in r29011, bits 2 and 3. After any parameter change, verify the mapping by manually actuating each switch and confirming the bit transition in r29011 via Modbus register 0x05/word 3 or V-ASSISTANT.

Should I use PTI or PROFINET instead of Modbus for a new V90 application that needs jog and limits?

PTI is the lowest-cost change and keeps the existing V90 hardware; it requires a high-speed pulse source from the PLC. PROFINET is preferred for new machines because it removes the bit-stealing limitation entirely, supports distributed I/O, and integrates with SIMATIC controllers and SINAMICS Safety Integrated. For point-to-point jogging without safety requirements, PTI is sufficient.

Back to blog