Sinamics G120C Reverse Rotation at Maximum Speed: P2000 Setpoint Scaling and Reverse Lockout
Problem Description
A SINAMICS G120C drive controlled over PROFIBUS with P0922=999 (free BICO telegram configuration) starts rotating in the reverse direction the instant the speed setpoint exceeds the configured maximum. At 99.9 Hz (approximately 2997 RPM at the configured motor) the motor runs forward correctly. Incrementing the setpoint by one LSB beyond 0x7FFF produces a sudden negative ramp to approximately -3000 RPM. The same P1080 (minimum speed) = 0 RPM and P1082 (maximum speed) = 3200 RPM are still in effect, so the ceiling is configured correctly; the fault is in the setpoint scaling, not the limits.
The reported configuration:
- P0922 = 999 (free BICO telegram configuration)
- P1080 = 0 RPM (minimum speed)
- P1082 = 3200 RPM (maximum speed)
- P2000 = 1500 RPM (reference speed, factory default for many G120C firmware revisions)
- PLC setpoint for full speed: 0x8000 (32768 decimal) loaded into PZD word 2
Observed behavior on a S7-300/ET200S master with PROFIBUS DP:
- 0x1999 (20 Hz) → 600 RPM forward (correct)
- 0x3333 (40 Hz) → 1200 RPM forward (correct)
- 0x7F70 (99.9 Hz) → 2997 RPM forward (correct)
- 0x8000 (next increment) → -3000 RPM (reverse, fault)
Root Cause
Two distinct configuration errors are simultaneously present in this case:
- P2000 / PLC scaling mismatch. The PROFIdrive profile encodes the speed setpoint NSOLL_A (in PZD2 of the receive telegram) as a 16-bit two's-complement normalized value where 0x4000 = +100%. The PLC is sending 0x8000 (32768 decimal) for the maximum command, but 0x8000 is two's-complement -32768, so the drive evaluates it as -200% of the reference. With P2000=1500 RPM the result is exactly -3000 RPM, matching the observed reading.
- No reverse lockout. The drive has not been configured to block negative setpoints. Even after the scaling is corrected, a single bit-flip in the PLC or an accidental toggle of STW1 bit 11 will produce reverse rotation. Applications that only require unidirectional rotation must apply an explicit block.
PROFIdrive Setpoint Encoding
The SINAMICS G120C implements the PROFIdrive V4 profile for cyclic communication. The speed setpoint word is a signed 16-bit normalized value as defined in PROFIdrive Profile 3.1 / 3.2:
| Hex | Decimal (signed) | Normalized (% of P2000) | Speed at P2000=1500 RPM | Speed at P2000=3000 RPM |
|---|---|---|---|---|
| 0x7FFF | +32767 | +199.99% | +2999.85 RPM | +5999.70 RPM |
| 0x4001 | +16385 | +100.006% | +1500.09 RPM | +3000.18 RPM |
| 0x4000 | +16384 | +100.000% | +1500.00 RPM | +3000.00 RPM |
| 0x3FFF | +16383 | +99.994% | +1499.91 RPM | +2999.82 RPM |
| 0x0001 | +1 | +0.006% | +0.09 RPM | +0.18 RPM |
| 0x0000 | 0 | 0% | 0 RPM | 0 RPM |
| 0xFFFF | -1 | -0.006% | -0.09 RPM | -0.18 RPM |
| 0xC001 | -16383 | -100.006% | -1500.09 RPM | -3000.18 RPM |
| 0xC000 | -16384 | -100.000% | -1500.00 RPM | -3000.00 RPM |
| 0x8001 | -32767 | -199.99% | -2999.85 RPM | -5999.70 RPM |
| 0x8000 | -32768 | -200.000% | -3000.00 RPM | -6000.00 RPM |
The conversion is governed by:
n_setpoint_RPM = (NSOLL_hex / 0x4000) * P2000
where NSOLL_hex is treated as a signed 16-bit value in the range -32768 to +32767. The result is bounded by P1082 on the positive side and P1082 (with sign change) on the negative side.
Diagnostic Procedure
To confirm the diagnosis before changing parameters, capture the raw process data on the wire and the drive status words.
- Connect STARTER or SINAMICS Startdrive (V15 or later) to the drive online via PROFIBUS or Ethernet.
- Open the control panel and assume bus control: STW1 bit 10 = 1, STW1 bit 0 = 1, STW1 bit 3 = 1.
- Read r2050[0] and r2050[1] for the raw PZD receive words. Verify the value the PLC is writing.
- Read r0063 (closed-loop speed setpoint), r0021 (speed actual smoothed), and r0022 (speed actual unsmoothed).
- From the PLC side, monitor the data block where the PZD image is assembled. Confirm the application logic loads 0x4000 for full forward speed and never exceeds it without intent.
- Apply the scaling formula:
(0x8000 / 0x4000) * 1500 = -3000 RPM. If the drive reads -3000 RPM at a raw PZD of 0x8000 with P2000=1500, the diagnosis is confirmed.
Solution 1: Recalibrate P2000
Set the reference speed parameter P2000 to the maximum mechanical speed that a 100% command (0x4000) should produce:
- Set P2000 = 3000 RPM, or the maximum mechanical speed, whichever is greater up to P1082.
- Verify the PLC writes 0x4000 (16384 decimal) for full forward, 0x0000 for zero, and never exceeds 0x4000 unless overspeed is intentional.
- Use P1082 to enforce the absolute ceiling. P1082 limits the ramp-function generator output regardless of NSOLL_A magnitude.
- If the application must run above rated speed with 0x7FFF, set P2000 so that 0x7FFF equals the absolute mechanical maximum, and clamp NSOLL_A in the PLC to 0x7FFF.
Solution 2: Block Reverse Direction
For unidirectional applications, apply a reverse lockout so that no PLC glitch, sign bit, or control-word manipulation can produce reverse rotation.
Option A: P1110 (inhibit negative setpoint)
P1110 selects the signal source for "inhibit negative setpoint" (BI). When the source is logic 1, the ramp-function generator clamps any negative setpoint to zero. The default source is r722.3 (digital input 3 on the CU). For a permanent block:
P1110 = 1
This ties the inhibit permanently to a constant 1 signal. Reverse rotation is impossible regardless of PLC behavior.
Option B: STW1 bit 11 (direction reversal)
In the PROFIdrive profile, STW1 bit 11 is the direction reversal command. The drive negates the incoming setpoint when this bit is set. For unidirectional applications, ensure the PLC does not set bit 11. A defensive implementation hard-wires STW1 bit 11 to 0 in the PZD image and never sets it.
Option C: P1031 (phase sequence reversal)
Setting P1031 = 1 swaps the phase sequence at the inverter output (U, V, W to U, W, V), inverting rotation direction. This is the wrong approach for blocking reverse because it changes the hardware direction and does not address the setpoint sign. Leave P1031 = 0.
Option D: P1113 / P1114 (setpoint inversion)
P1113 sources the setpoint inversion and P1114 enables it. To map a negative NSOLL_A to positive rotation, set P1113 = 1 and P1114 = 1. Use only when the application must accept negative setpoints and produce forward rotation; this is not the same as a reverse lockout.
| Parameter | Description | Unidirectional setting | Behavior |
|---|---|---|---|
| P1110 | BI: Inhibit negative setpoint | P1110 = 1 | Clamp negative NSOLL_A to 0 at ramp input |
| STW1 bit 11 | Direction reversal | Always 0 in PLC | Software-side guard |
| P1113 | BI: Setpoint inversion | P1113 = 0 (or default) | Avoid accidental sign flip |
| P1031 | Phase sequence reversal | P1031 = 0 | Leave default; do not use to fix direction |
Verification
After applying the corrective actions, run the following sequence:
- With the drive enabled and the PLC in control, command 0x4000 and confirm r0021 reads the expected positive RPM (3000 RPM if P2000=3000).
- Command 0x7FFF and confirm the speed is clamped to P1082 (3200 RPM) and the drive does not overspeed.
- Command 0x8000 and confirm the speed remains 0 RPM with P1110=1 active; the ramp generator will clamp the negative setpoint to zero before the output stage.
- Command 0xC000 and confirm the speed is 0 RPM with P1110=1.
- Capture a STARTER trace of r0063, r0061 (sensorless speed), and the IGBT firing commands. Verify the sign of the output frequency is positive for the entire range of valid setpoints.
- Toggle the PLC direction bit and confirm no change in rotation.
Extended Parameter Reference
| Parameter | Description | Typical value | Notes |
|---|---|---|---|
| P0922 | PROFIdrive telegram selection | 1, 2, 20, 350, 352, 999 | 999 = free BICO configuration |
| P1000 | Setpoint source selection | 6 | 6 = PROFIdrive NSOLL_A |
| P1080 | Minimum speed | 0 RPM | Clamps lower bound |
| P1082 | Maximum speed | 3200 RPM | Clamps upper bound (positive and negative) |
| P2000 | Reference speed | 3000 RPM | Defines 100% for NSOLL_A scaling |
| P1110 | BI: Inhibit negative setpoint | 1 | Set to 1 to permanently block reverse |
| P1113 | BI: Setpoint inversion | 0 | Default unconnected |
| P1114 | BI: Enable inversion | 0 | Default unconnected |
| P1031 | Phase sequence reversal | 0 | Default forward sequence |
| P1120 | Ramp-up time | Application-specific | Seconds from 0 to P1082 |
| P1121 | Ramp-down time | Application-specific | Seconds from P1082 to 0 |
| P1130 | Ramp-up initial rounding | 0 s | Optional smoothing |
| P1131 | Ramp-up final rounding | 0 s | Optional smoothing |
| P1132 | Ramp-down initial rounding | 0 s | Optional smoothing |
| P1133 | Ramp-down final rounding | 0 s | Optional smoothing |
| P1140 | BI: Enable ramp-function generator | r722.0 (DI0) | Disables ramps for quick stop |
| P1141 | BI: Ramp-function generator start | r722.0 (DI0) | Starts ramp output |
| P1142 | BI: Ramp-function generator enable setpoint | r722.0 (DI0) | Releases setpoint |
| P2051[0..7] | CI: PZD receive word | Depends on P0922 | BICO interconnect for PZD |
| P2080[0..15] | BI: Status word bit | Application-specific | For free ZSW configuration |
| r0020 | Speed setpoint unsmoothed | Read-only | Output of ramp generator |
| r0021 | Speed actual smoothed | Read-only | Use for verification |
| r0022 | Speed actual unsmoothed | Read-only | Raw actual |
| r0060 | CO: Speed setpoint before filter | Read-only | Before ramp |
| r0062 | CO: Speed setpoint after filter | Read-only | After ramp |
| r0063 | CO: Speed actual | Read-only | Closed-loop output |
| r2050[0..7] | CO: PZD receive word | Read-only | Raw bus values |
For complete parameter descriptions, fault codes, and telegram maps refer to the SINAMICS G120/G120C List Manual.
PROFIdrive Control Word Bit Map (STW1)
The first receive word of the PROFIdrive telegram is the control word STW1. The following bits are relevant to direction control and enable logic:
| Bit | Name | Function | Comment |
|---|---|---|---|
| 0 | ON/OFF1 | Ramp stop | 1 = ON, 0 = ramp to 0 |
| 1 | OFF2 | Coast to stop | 0 = coast, 1 = enable |
| 2 | OFF3 | Quick stop | 0 = quick stop, 1 = enable |
| 3 | Enable operation | Enable pulses | 1 = enable |
| 4 | Enable ramp generator | Release ramp | 1 = ramp active |
| 5 | Unfreeze ramp | Resume ramp | 1 = ramp runs |
| 6 | Setpoint enable | Release setpoint | 1 = setpoint active |
| 7 | Acknowledge fault | Reset faults | 0 to 1 edge resets |
| 8 | Jog 1 | Jog source 1 | Optional |
| 9 | Jog 2 | Jog source 2 | Optional |
| 10 | Control by PLC | Bus control | 1 = PLC has control |
| 11 | Direction reversal | Invert setpoint sign | 1 = reverse, 0 = forward |
| 12, 13 | Reserved / motor switch | Application-specific | — |
| 14, 15 | Reserved / CDS bit 0, 1 | Command data set | For multi-CDS |
Free BICO Telegram Configuration (P0922=999)
When P0922=999, the drive does not auto-wire the receive and transmit process data. The integrator must connect the desired setpoint and actual value words using the BICO matrix:
- Connect the receive PZD words to the appropriate connectors using P2051[0..7]. For speed control via PROFIdrive, set P2051[0] = r2050[0] (control word STW1) and P2051[1] = r2050[1] (setpoint NSOLL_A).
- Set the setpoint source: P1000 = 6 to select PROFIdrive NSOLL_A as the main setpoint.
- If the application uses a motor potentiometer in addition to the bus, connect P2051[2] = r2050[2] and configure P1000[1] (supplementary setpoint) accordingly.
- For status feedback, configure the transmit PZD range and populate the ZSW-related connectors in P2080/P2081.
Common errors when P0922=999 is used:
- P2051[1] left at factory default, so the bus writes have no effect on the ramp generator.
- P1000 not set to 6, so the drive uses the analog input or motor potentiometer instead of the bus.
- STW1 not honored: P0840 (ON/OFF1), P0844 (OFF2), P0845 (OFF3) still sourced from digital inputs instead of the bus. The drive starts and stops from the local panel rather than the PLC.
Verify the wiring using STARTER's BICO view, or in SINAMICS Startdrive the "Signal interconnection" editor. The SINAMICS G120 Getting Started guide covers BICO for cyclic PROFIdrive telegrams.
Drive Behavior in Sensorless Closed-Loop vs V/f Mode
The discussion assumes V/f control (P1300=0) or sensorless vector control (P1300=20). The setpoint pipeline is:
- PLC writes NSOLL_A in PZD2 (PROFIdrive receive word 2).
- Drive reads r2050[1] and scales by P2000 to produce the speed setpoint at the ramp generator input.
- Ramp generator applies P1120/P1121 with P1130 through P1133 rounding.
- Speed controller (vector control) or V/f controller drives the IGBTs.
- Actual speed feedback from encoder (if present) or estimated speed (sensorless) closes the loop.
For a unidirectional application, a sensorless vector loop with P1110=1 and P2000 matched to the application maximum will never produce negative rotation as long as the PLC never sets STW1 bit 11.
Fault and Warning Code Reference
| Code | Type | Description | Likely cause | Action |
|---|---|---|---|---|
| F07800 | Fault | Drive: No power unit detected | Hardware mismatch | Check power module type |
| F07801 | Fault | Drive: Overcurrent | Short circuit / ramp too fast | Extend P1120/P1121 |
| F07802 | Fault | Drive: Inverter overload | Excessive I²t | Reduce load or extend ramp |
| F07900 | Fault | Drive: Motor blocked | Mechanical stall | Check mechanical load |
| F07901 | Fault | Drive: Motor overspeed | Speed above 1.2 × P1082 | Reduce setpoint or raise P1082 |
| F08501 | Fault | PROFIBUS: Sign-of-life failure | Bus interruption | Check cabling, watchdog time |
| F08502 | Fault | PROFIBUS: Watchdog timeout | PLC stopped or DP fault | Check CPU, DP master |
| A08502 | Warning | PROFIBUS: Watchdog | Bus quality marginal | Check bus termination |
| A07901 | Warning | Drive: Motor overspeed warning | Speed above warning threshold | Check setpoint scaling |
| A07910 | Warning | Drive: Motor overtemperature | Thermal model | Check load duty cycle |
PLC-Side Defensive Scaling
Even with P1110=1 active, the PLC should clamp and sanity-check every setpoint that is written to the PZD image. Recommended practice in Structured Control Language (SCL) for a S7-300/S7-400/ET200S master:
// Defensive NSOLL_A clamp in SCL (16-bit signed)
#iRawSpeed := WORD_TO_INT(#wSetpointRaw); // raw PZD word
IF #iRawSpeed < 0 THEN
#iRawSpeed := 0; // block negative
END_IF;
IF #iRawSpeed > 16#4000 THEN
#iRawSpeed := 16#4000; // cap at 100%
END_IF;
#wPZD2 := INT_TO_WORD(#iRawSpeed); // write to PZD
For S7-1200/S7-1500 with SINAMICS Startdrive libraries, use the SINAMICS_Control block and clamp at the application layer. Always mask STW1 bit 11 to 0 in the assembled control word.
Common Pitfalls in Multi-Drive Systems
When the same SINAMICS G120C fleet is shared across multiple machines with different maximum speeds, the P2000 default of 1500 RPM (the legacy value from G110/G120 firmware) is often left untouched. A complete commissioning checklist for a G120C with PROFIdrive should include:
- P2000 set to the maximum mechanical speed of the application, not the motor nameplate RPM.
- P1080 and P1082 validated against the mechanical limit switches and the gearbox ratio.
- P1110 set to 1 or a digital input for any unidirectional application.
- STW1 bit 11 masked to 0 in the PLC code with a code review sign-off.
- Motor identification (P1900) executed at first commissioning.
- One-step verification at +0x4000, -0x4000, +0x7FFF, -0x7FFF, and +0x8000 with a trace capture saved to the project archive.
Related Configuration: Speed Setpoint Sources
SINAMICS supports the following main setpoint sources, selectable via P1000:
| P1000 value | Source | Typical use |
|---|---|---|
| 0 | No main setpoint | Setup only |
| 1 | Motor potentiometer (MOP) | Local analog control |
| 2 | Analog setpoint | 4–20 mA / 0–10 V input |
| 3 | Fixed setpoint (P1001..P1015) | Preset speeds |
| 5 | USS on RS485 | Legacy serial |
| 6 | PROFIdrive NSOLL_A | PROFIBUS / PROFINET setpoint |
| 7 | Analog setpoint 2 (combined) | Sum of analog sources |
| 12 | PROFIdrive + analog | PROFIdrive main, analog supplementary |
For the reported case (PROFIdrive cyclic), P1000 must be 6. If P1000 is left at the default (often 2 for analog), the bus writes are ignored and the drive responds to the analog input. Always confirm P1000 in the online parameter view.
Frequently Asked Questions
Why does the SINAMICS G120C run in reverse when I send the maximum value (0x7FFF or 0x8000) from the PLC?
The PROFIdrive speed setpoint is a signed 16-bit value. 0x7FFF is +199.99% and 0x8000 is -200% of P2000. If P2000 is not matched to your maximum speed, the 0x8000 value will be interpreted as full reverse. Set P2000 equal to the maximum mechanical speed (for example 3000 RPM) so 0x4000 = full forward and 0x8000 = full reverse. P1082 still clamps the absolute ceiling.
How do I permanently block the SINAMICS G120C from running in reverse?
Set P1110 = 1 to tie "inhibit negative setpoint" to a constant logic-1 source. The ramp-function generator will clamp any negative setpoint to zero. Also mask STW1 bit 11 to 0 in the PLC code, and leave P1031 at 0 (do not use phase reversal to fix the direction).
What is the correct PROFIdrive speed setpoint scaling on the SINAMICS G120C?
The receive PZD word 2 (NSOLL_A) is a 16-bit two's-complement value normalized so that 0x4000 = +100% of the reference parameter P2000. The conversion is n = (NSOLL_hex / 0x4000) × P2000. The valid range is -200% to +200% (-0x8000 to +0x7FFF), bounded by P1082 on the positive side and P1082 with sign change on the negative side.
Can I use the analog input and the PROFIdrive setpoint at the same time?
Yes. Use P1000 = 12 to combine the PROFIdrive main setpoint with an analog supplementary setpoint. The supplementary setpoint is added to the main setpoint at the ramp generator input. This is useful for trim corrections or a local override.
Do I have to redo motor identification after changing P2000?
Not necessarily. P2000 only affects the setpoint normalization; the motor equivalent circuit data (P0350..P0369) are independent. However, if the new P2000 changes the operating range (for example, the field-weakening threshold), re-run motor data identification at P1900 = 2 (standstill) or P1900 = 1 (with rotation) to ensure accurate torque and current loop tuning at the new operating range.