SINAMICS S120 Torque Control: Telegram and Parameter Setup
Torque-controlled operation on a SINAMICS S120 drive is fundamentally different from speed-controlled operation and cannot be approached as a "drop-in" replacement for a VFD that was previously running a tightening cycle in a different vendor's product line. The S120 exposes torque as the primary closed-loop variable through specific telegrams (notably 136, 138, and the supplementary telegram 750) and through a dedicated set of closed-loop parameters (p1300, p1500, p1501, p1513, p1520-p1525). For a tightening process that must ramp up at high speed, hit a defined torque window of 90-140 Nm, and stop within a small angular window (for example 25° referenced to the output shaft of an i=16 gearbox), the cleanest implementation is not a pure torque-controlled axis. It is speed control with torque limiting (telegram 2 or 4) combined with a downstream position-handling logic on the S7-1500 controller.
Application Overview: Tightening with Torque Window
The reference application is a part-tightening station with the following constraints:
- Torque acceptance window: 90 Nm to 140 Nm (a part tightened below 90 Nm is rejected, above 140 Nm is a reworked/failed condition).
- Initial approach speed: high (clamped to a safe maximum, e.g. 1500 rpm at the motor shaft, which after a 1:16 gearbox equals 93.75 rpm at the output).
- Final stop position: an angular reference of 25° measured at the output shaft, with a search routine that drives to the closest 25° position once the torque window is satisfied.
- Mechanical load: external encoder + 1.1 kW induction motor + planetary gearbox i=16.
Replacing an Altivar 31 plus a third-party axis controller with a Siemens stack (CU320-2 PN + PM240-2 + CPU 1515) is feasible, but the application logic must be re-implemented because the Altivar's analog torque-reach logic does not map 1:1 to S120 status words.
Hardware Configuration and Firmware Prerequisite
The hardware stack referenced in this configuration is:
| Component | Catalog Number | Role | Firmware Floor |
|---|---|---|---|
| Control Unit | CU320-2 PN (6SL3040-1MA01-0AA0) | Central drive control + PROFINET I/O | SINAMICS V5.2 SP3 (HF17 or newer recommended for telegram 136 stability) |
| Power Module | PM240-2 (6SL3210-1PE18-0UL1) | 3 kW, 200 V class, blocksize | FW ≥ 5.2 |
| Control Unit Adapter | CUA32 (6SL3040-0PA01-0AA0) | Adapter for blocksize PM to CU320-2 | n/a |
| Sensor Module | SMC30 (6SL3055-0AA00-5CA2) | Incremental encoder evaluation (HTL/TTL) | FW ≥ 5.2 |
| Motor | Lenze 1.1 kW induction, external encoder mounted | Drive load with gear ratio 16:1 | n/a |
| Controller | S7-1500 CPU 1515-2 PN (6ES7515-2AM02-0AB0) | PROFINET IO controller, runs SINA_SPEED FB285 / SINA_POS FB286 | TIA Portal V17 or V18; library "SINAMICS Blocks" V2.x |
The PM240-2 catalog number ends with -0UL1 (3 kW blocksize); the 1.1 kW motor is undersized relative to the PM240-2, which is normal because the Power Module must be sized to the peak motor current, not the continuous rating. Verify motor module current rating in r0207 against the motor nameplate p0305 value during commissioning.
Telegram Selection Strategy
The S120 standard telegrams relevant to torque-handling applications are summarized below. Telegrams are configured in p0922 on the drive and mirrored in the IO device configuration in TIA Portal (or STEP 7 Classic with the GSD file GSDML-V2.3x-Siemens-SINAMICS_S120-...).
| Telegram | PZD Count | Setpoint Direction (PLC → Drive) | Actual Direction (Drive → PLC) | Best Fit |
|---|---|---|---|---|
| 1 | 2 / 2 | STW1 + NSOLL | ZSW1 + NIST | Pure speed control |
| 2 | 4 / 4 | STW1 + NSOLL + M_LIM_HI + M_LIM_LO | ZSW1 + NIST + IAIST + MIST | Speed control with torque limiting - tightening without encoder on PLC side |
| 4 | 6 / 6 | STW1 + NSOLL + M_LIM_HI + M_LIM_LO + STW2 + G1_STW | ZSW1 + NIST + IAIST + MIST + ZSW2 + G1_ZSW | Speed control with torque limiting + encoder word - recommended for tightening |
| 5 / 6 | 6 / 10 | STW1 + NSOLL + M_LIM_HI + M_LIM_LO + STW2 + G1_STW + additional | ZSW1 + NIST + IAIST + MIST + ZSW2 + G1_ZSW + additional | DSC (Dynamic Servo Control) - typically with SIMOTION, not required here |
| 7 / 9 | 7 / 7 | EPOS control words + position setpoints | EPOS status + position actual | Basic positioner with fixed endstop - alternative path for the 25° stop |
| 136 | 2 / 2 | STW1 + M_SOLL (torque setpoint) | ZSW1 + MAIST (torque actual) | Pure torque control - NOT recommended for tightening (no speed ramp) |
| 138 | 4 / 4 | STW1 + M_SOLL + N_MAX + STW2 | ZSW1 + MAIST + NIST + ZSW2 | Torque control with speed/acceleration limiting - closer fit if a torque source is mandatory |
| 750 (supplementary) | +3 PZD | M_SOLL supplementary + status words | Torque actual, status bits | Add-on to telegrams 1, 2, 3, 4, 5, 6 for supplementary torque setpoint |
Recommendation for the tightening application: telegram 2 (or 4 if the encoder is wired to SMC30 and the controller needs position actual). Telegram 136 is designed for winder/unwinder applications where torque is the controlled variable and web tension is the feedback. Using telegram 136 for a tightening process that must ramp up at a defined speed and then collapse to a stop at a known angle will require additional outer control logic to clamp speed and to handle the position stop, which is what telegram 2 + the PLC logic already does naturally.
G1_ZSW / G1_XIST (encoder 1 actual position). If the PLC needs the position in load units (degrees at the gearbox output), the PLC must apply the gear ratio (16:1) to the raw encoder increments and convert from increments to degrees. The formula is: load_angle_deg = (raw_increments / p0408) * 360 / 16, where p0408 is the encoder resolution in increments per revolution set on the drive.Control Modes: p1300 Configuration
The closed-loop control mode is selected via p1300. The torque-relevant values are:
| p1300 | Mode | Speed Limiter | Application Fit |
|---|---|---|---|
| 0 | V/f open loop | n/a | Not applicable for closed-loop tightening |
| 20 | Speed control without encoder | Via torque limits | Limited torque accuracy at low speed |
| 21 | Speed control with encoder | Via torque limits | Default for tightening when encoder is mounted |
| 22 | Torque control without speed limiting | None - drive accelerates to mechanical limit | Winders only - DO NOT use for tightening |
| 23 | Torque control with speed limiting | Via p1082 (max speed) and p1532 / p1533 | Acceptable for torque-controlled tightening if telegram 138 is used |
For the recommended telegram 2 path, set p1300 = 21 (speed control with encoder). The encoder on the motor shaft (read by SMC30) closes the speed loop inside the drive; the torque limits delivered over PZD3/PZD4 of telegram 2 then cap the current reference, which produces the natural speed collapse when the joint closes.
If the design truly requires p1300 = 23 (torque control with speed limiting), the speed clamp must be implemented via:
-
p1082— maximum speed reference for normal operation -
p1532— torque limit for forward speed clamp (motoring side) -
p1533— torque limit for reverse speed clamp (regenerative side)
Torque Setpoint Path: p1500, p1501, p1513, p1520-p1525
The torque setpoint source chain on the S120 is:
p1500 (Torque setpoint source selection)
↓
p1501 (BI: torque setpoint selection, e.g. switch between setpoints)
↓
p1503 (CI: torque setpoint main) / p1513 (CI: additional torque setpoint)
↓
p1520/p1521 (CO/BI: torque limit upper, motoring)
p1522/p1523 (CI: torque limit upper, motoring)
p1524/p1525 (CI/CO: torque limit lower, regenerative)
↓
Current controller (torque produced by motor)
For a speed-controlled drive with torque limits arriving from the PLC over telegram 2 PZD3 and PZD4, the typical wiring is:
-
p1500 = 0— main torque setpoint = 0 (the drive is speed-controlled; torque setpoint is generated internally from the speed error). -
p1522[D] = r2050[2]— torque limit upper sourced from PZD3 of telegram 2 (the 3rd receive word). -
p1524[D] = r2050[3]— torque limit lower sourced from PZD4 of telegram 2. -
p1520,p1523— left at defaults (typically +400 % / -400 % rated torque) to act as ceiling clamps in case the bus value is missing.
p1513 = r2050[1] with telegram 1. Telegram 1 has only two receive PZDs: r2050[0] = STW1, r2050[1] = NSOLL_B (speed setpoint). Wiring p1513 = r2050[1] on telegram 1 therefore does NOT inject a torque setpoint — it injects the speed setpoint value into the torque path, which produces unpredictable behavior. With telegram 1 the only correct way to influence torque is via p1522/p1524 limits, and that requires switching to telegram 2 or telegram 3+750.For pure torque control on telegram 136:
p1300 = 23-
p1500 = 1(analog setpoint) is replaced withp1500 = 1000(PROFINET/PROFIdrive) or wired viap1503 = r2050[1]on telegram 136. -
p1501 = 0(no selector switch). -
p1532andp1533set to the rated motor torque for the speed clamp.
SINA_SPEED Block Integration on the S7-1500
FB 285 (SINA_SPEED) is the standard TIA Portal block for closed-loop speed control of an S120 from an S7-1500 over PROFINET. It assumes telegram 1, 2, 3, or 5 (the standard speed-control telegrams) and exposes a structured input/output that maps the relevant PZDs. Key inputs for the tightening application:
| Block Parameter | Meaning | Tightening Mapping |
|---|---|---|
SpeedSp |
Speed setpoint (REAL, rpm) | Approach speed: 1500 rpm; creep speed near contact: 100 rpm |
TorqueLimitUpper / TorqueLimitLower |
Torque limits as % of rated torque (REAL) | Clamp to +140 Nm / -140 Nm. With a 1.1 kW motor (rated torque ~7 Nm) this clamps to a value far below the rated torque; the limit must therefore be computed from gearbox output torque converted via the gear ratio. See formula below. |
Enable |
Drive enable bit (control word bit 0) | From safety circuit and HMI start |
Mode |
Operating mode selector | 2 = speed control with torque limits (telegram 2 / 4) |
AcknowledgeFault |
Acknowledge drive faults (control word bit 7) | Rising edge on fault-clear HMI button |
The torque limit is normalized to percent of rated motor torque (r0333), not the gearbox output torque. To set a gearbox-output limit of 140 Nm with a 16:1 gearbox on a motor with r0333 = 7.0 Nm:
T_motor_limit_Nm = T_load_limit_Nm / gear_ratio
= 140 Nm / 16
= 8.75 Nm
T_motor_limit_pct = (T_motor_limit_Nm / r0333) * 100
= (8.75 / 7.0) * 100
= 125 %
Therefore the input TorqueLimitUpper on FB 285 must be set to 125.0 %. If the calculation yields a value above 400 %, the motor is undersized relative to the demanded load torque and the application must be reviewed with the motor datasheet (overload capability per p0640 and thermal model p0611).
SINA_SPEED must be called in a cyclic OB (OB1 or OB30 at the configured send clock, typically 1-4 ms on PROFINET IRT). The associated hardware identifier for the S120 drive must be linked to the HardwareId input. For SINA_SPEED to expose torque limits, the drive's p0922 must be telegram 2, 4, 5, or 6.
Encoder Configuration for Torque Control
The external encoder mounted on the Lenze motor (typically an incremental encoder, HTL or TTL) must be configured on the SMC30 module attached to the CUA32 / CU320-2. The essential parameters are:
| Parameter | Meaning | Recommended Value |
|---|---|---|
p0400[0] |
Encoder type selection | 2001 (HTL unipolar), 2002 (HTL bipolar), 3001 (TTL), or specific encoder catalog number if supported |
p0408[0] |
Increments per revolution | Set to encoder nameplate value (commonly 1024, 2048, or 4096) |
p0420[0] |
Encoder inversion | 0 or 1 depending on direction sense |
p0430[0] |
Zero mark configuration | 0 (none required for tightening) |
p0431[0] |
Fault threshold for encoder difference (linear/angular) | 0 (single-encoder system) |
p0437[0] |
Module configuration for SMC30 | Must match the actual signal level (HTL vs TTL) |
p0450[0] |
Enable encoder interface (after commissioning reset) | 1 |
For the answer to the specific question “do I need an encoder value if I use torque control?”: Yes. Even in torque control mode (p1300 = 22 / 23) the speed limiter and the speed actual reading require an encoder for accurate control at low speed. Without an encoder, the drive derives speed from the current/voltage model, which loses accuracy below ~10 % rated speed. For a tightening process that ends at near-zero output speed (after the gearbox), encoder feedback is mandatory. With telegram 4 the encoder position is also visible to the PLC as G1_XIST1 / G1_XIST2, which can be used directly for the 25° position handling.
Position Stop Strategy at 25°
The original requirement — stop the axis at 25° regardless of where the torque window is satisfied — cannot be implemented by the drive alone when running in speed-control-with-torque-limit mode. The drive does not natively know that the axis must rest at a specific angle. The position handling is therefore a PLC task.
Three implementation paths are valid on the S120 + S7-1500 stack:
Path A: PLC Position Correction via SINA_SPEED with Reference Search (Recommended)
- Use telegram 4 so the drive delivers the encoder actual position
G1_XISTin PZD6. - Reset the encoder to zero at the start of each tightening cycle (rising edge of
Enable) via control word bit 11 (set reference point) or viap0480. - On the PLC, integrate the incremental position into a load-side angle by dividing by the gear ratio and scaling to degrees:
load_angle_deg = G1_XIST / p0408 * 360 / 16. - When the torque-window-reached condition is detected (actual torque between 90 Nm and 140 Nm, monitored via
MISTin PZD4 or viar0080), read the current load angle. - Compute the delta to 25° (mod 360°) and the shortest direction (forward if delta ≤ 180°, reverse otherwise).
- Drive the axis to the target at a slow speed (e.g. 30 rpm) using SINA_SPEED with torque limits at the upper bound of the tightening window.
- On reaching the target, remove
Enableto stop the drive; the drive enters standstill via the OFF1 ramp.
Path B: EPOS Fixed Endstop
Switch the drive to telegram 7 (or 9) and activate the basic positioner. Use the travel to fixed endstop function (activation via control word bit assignment on p2631/p2632). Configure:
-
p2614= torque limit for fixed endstop detection (corresponds to the 140 Nm upper bound). -
p2620= positioning target (in LU). -
p2621= traversing profile (creep speed, approach distance).
This path is cleaner from the drive's perspective but requires the PLC to switch telegrams between approach and final position, which is awkward when the speed-control path is already running.
Path C: Drive-internal Stop on 25° via SINA_POS with Telegram 7
Use telegram 7 throughout, configure the basic positioner, and let the drive execute the positioning to a fixed modulo position. This requires careful startup of the EPOS function block (FB 286 SINA_POS), including the mechanical referencing / absolute-encoder setup. For an incremental encoder without an absolute reference, a homing run is required at first power-up.
Step-by-Step Commissioning Procedure
-
Hardware check. Verify CUA32 ribbon cable connection to CU320-2 PN; verify SMC30 wiring of the external encoder (HTL/TTL levels, A/B tracks, optional Z). LED status on SMC30 must show green
READY. - Drive first commissioning (Starter / Startdrive). Use TIA Portal V17+ with the Startdrive add-in. Drive wizard detects PM240-2 via CUA32, prompts for encoder type, motor data (Lenze 1.1 kW), and fieldbus configuration.
-
Configure telegram. Set
p0922 = 2on the drive object. In the TIA Portal device configuration for the S120 IO device, set the assigned telegram to Standard Telegram 2 (4 PZD in / 4 PZD out). Compile hardware. -
Configure encoder. Set
p0400,p0408,p0420,p0430,p0437per the table above. Acknowledge faults and verifyr0061[0]shows the encoder speed matching the actual motor speed (withr0061~ 0 rpm at standstill). -
Configure control mode.
p1300 = 21.p1500 = 0.p1522[D] = r2050[2],p1524[D] = r2050[3]. Save withRAM to ROMandCopy RAM to startup. -
Configure SINA_SPEED instance on the S7-1500. Drop FB285 from the SINAMICS Blocks library onto a cyclic OB. Wire
HardwareId,Mode = 2,SpeedSp, and the two torque-limit inputs to data block values. -
No-load test. Disable the application mechanics (decouple gearbox if possible). Run a slow jog (e.g. 50 rpm) and verify direction, encoder feedback, and torque-zero reading.
r0031must be near 0. -
Load test. Engage the application, jog in forward direction, monitor
r0031(actual torque) and the torque-limit status bits inZSW1. Increase torque limits from 0 in 10 % steps up to the calculated 125 % to verify the drive can sustain the load. - Tightening sequence test. Implement the PLC logic per Path A above. Run 10-20 cycles and verify torque-window detection and the 25° final position.
-
Fault injection test. Block the output shaft mechanically. Verify the drive enters torque limit, draws the configured current, reports
F07902only ifp2177time-out is exceeded, and trips cleanly via the OFF2 / OFF3 path from the PLC.
Verification and Diagnostics
After commissioning, verify the following trace points during a single tightening cycle:
| Trace / Parameter | Expected Behavior |
|---|---|
r0021 (speed actual, smoothed) |
Rises to approach setpoint, collapses toward 0 as torque limit engages |
r0031 (torque actual, smoothed) |
Near 0 during free run, climbs to the 90-140 Nm window at contact, clamped by p1522
|
r0032 (active current) |
Spikes to the limit during torque-limited phase |
r0052.3 (status word 1 bit, "torque limit reached") |
True during the torque-limited phase; use this for the PLC's "window reached" detection |
r2050[0..3] (PZD received from PLC) |
STW1, NSOLL_B, M_LIM_HI, M_LIM_LO must match the values written by FB 285 |
r0080 (torque actual unsmoothed) |
Raw torque for window comparison if higher bandwidth is required |
r0063[0] (speed actual, unsmoothed) |
Encoder-derived speed for diagnostic of ramp quality |
For long-term diagnostics, configure the trace recorder with a 4-second window around the torque-window-reached edge and capture r0021, r0031, r0052, and the digital input from the contact sensor. Save as a re-usable trace configuration for production-floor diagnostics.
Troubleshooting Matrix
| Symptom | Likely Root Cause | Corrective Action |
|---|---|---|
| Drive accelerates past mechanical stop |
p1300 = 22 without speed limiter, or telegram 1 in use without torque limits |
Set p1300 = 21 and switch to telegram 2; verify p1522 / p1524 are wired |
| Torque window never reached, drive stalls | Torque limits set too high; PLC scaling wrong | Re-verify the 140 Nm / 16 = 8.75 Nm motor-torque calculation; check r0333 value |
| Encoder position drifts | Encoder missing Z-mark referencing, or p0420 direction wrong |
Verify direction by jogging forward and checking r0061[0] sign; set p0420 accordingly |
| F07902 "Motor stalled" | Speed < p2175 for > p2177 with torque at limit |
Increase p2177 delay for the tightening cycle; OR reduce p2175 threshold to match creep speed |
| F30021 / F30027 (encoder fault) | Encoder wiring, signal level, or p0437 mismatch |
Check SMC30 LED; verify p0437 HTL/TTL matches the encoder output stage |
| F08501 / F08502 (PROFINET comm loss) | Watchdog timeout, send clock mismatch | Match TIA Portal send clock to p0922 configuration; verify cable length < 100 m |
| 25° final position off by full revolution | No modulo handling, or zero-set missing | Implement modulo 360° arithmetic in the PLC; reset encoder to 0 at start of each cycle via bit 11 |
| Position oscillates around 25° | Drive remains enabled with non-zero setpoint after target | Clear Enable after position is reached; use a hysteresis band of ~0.5° |
p9601 enables the safety functions; commissioning requires the Safety Integrated password (default 0, must be changed per p9761). Refer to the SINAMICS S120 Safety Integrated Function Manual for the full STO / SS1 / SLS configuration.FAQ
What telegram should I use for torque control on a SINAMICS S120?
For pure torque control use telegram 136 (PZD: STW1 + torque setpoint / ZSW1 + torque actual) with p1300 = 23. For tightening, winder, or any application where the drive must ramp at a defined speed and then collapse against a torque limit, use telegram 2 (speed control with torque limits) or telegram 4 (adds encoder words). Telegram 1 does NOT carry torque limits and cannot be used for torque-controlled applications without the supplementary telegram 750.
Do I need an encoder for torque control on the S120?
Yes for any application that operates below ~10 % of rated speed or that requires a defined stop position. The encoder closes the speed loop inside the drive and provides the actual position for the 25° target. Configure the encoder on the SMC30 module attached to the CUA32 / CU320-2 using p0400, p0408, and p0420.
How do I set a torque limit of 140 Nm at the gearbox output with SINA_SPEED?
SINA_SPEED accepts torque limits as a percentage of r0333 (rated motor torque). With a 16:1 gearbox and 140 Nm output limit, the motor-side torque is 140 / 16 = 8.75 Nm. Divide by r0333 (e.g. 7.0 Nm for a 1.1 kW motor) and multiply by 100, giving 125 %. Enter 125.0 % on the FB285 input TorqueLimitUpper.
Why does my drive accelerate to maximum speed when I enable torque control with telegram 1?
Telegram 1 only carries the speed setpoint and the control word. Wiring p1513 = r2050[1] on telegram 1 injects the speed setpoint value into the torque path, not a torque setpoint. With p1300 = 22 (torque control without speed limiting), the drive produces torque at the demand until the load reaches its mechanical speed limit. Switch to telegram 2 (4 PZD) so PZD3/PZD4 carry the torque limits, or to telegram 136 if pure torque control is mandatory, with p1300 = 23 and the speed limiter wired to p1532 / p1533.
What is the difference between telegram 2, telegram 4, and telegram 136?
Telegram 2 is speed control with torque limits (4 PZD in / 4 PZD out, includes the actual current IAIST and actual torque MIST). Telegram 4 adds the encoder words G1_STW and G1_ZSW plus the second control / status word (6 PZD in / 6 PZD out) for closed-loop speed with encoder and torque limits. Telegram 136 is pure torque control with a torque setpoint as the second PZD (2 / 2). Telegram 4 is the recommended choice when the PLC needs encoder position for a 25° final stop on a tightening process.
How do I implement the 25° final stop on a tightening cycle with a 16:1 gearbox?
Use telegram 4 and read the encoder actual G1_XIST on the PLC. Convert to load-side degrees with load_angle_deg = G1_XIST / p0408 * 360 / 16. Reset the encoder to zero at the start of each cycle via control word bit 11. When the torque-window-reached condition is detected (status word bit r0052.3), compute the delta to 25° modulo 360°, choose the shortest direction, and drive to the target with SINA_SPEED at a creep speed (~30 rpm) and torque limits at the upper bound of the tightening window. Clear Enable on target reached.