1. Application Overview
Position-at-torque (also called torque-limited positioning or soft-touch probing) is a hybrid motion profile where a servo drive is commanded to move a mechanical actuator toward a target position, but the motion is interrupted the instant the drive torque reaches a configured threshold. The instantaneous mechanical position at the moment torque saturates is then used as a measurement value. The classic application is dimensional gauging: a probe, plunger, or piston is driven into a soft, deformable product (food, foam, rubber, clay, cosmetic bars, biological tissue) until contact force equals a recipe-defined setpoint, and the position at that instant equals the product height to within the mechanical repeatability of the actuator.
On a Siemens SINAMICS S210 servo system with a SIMATIC S7-1500 controller, this application is implemented by combining a standard positioning telegram (105) with a supplementary torque telegram (750) on the same PROFINET connection to the drive, then programming the technology object to issue a torque-limited motion via the MC_MoveToPosition, MC_Halt, or the dedicated MC_Torque... command family from the PLCopen motion control library. The PLC reads the actual torque back through telegram 750, monitors when it crosses the recipe limit, captures the axis position at that instant, and stores the value as the measurement result.
2. Hardware and Software Bill of Materials
| Component | Article Number | Firmware / Version | Role |
|---|---|---|---|
| SIMATIC CPU 1510SP F-1 PN | 6ES7510-1SJ01-0AB0 | V2.5 or later (V2.0/V2.8 supported; V3.0 also available on this CPU) | Motion controller, recipe store, HMI interface |
| SINAMICS S210 servo drive | 6SL3210-5HB10-2UF0 | FW V5.2 or later | PROFINET slave, torque and position control |
| SIMOTICS S-1FK2 servo motor | 1FK2203-2AG10-1CA0 | — | Actuator with absolute encoder (single-turn/multi-turn per option) |
| TIA Portal | — | V15 Update 2 minimum; V16/V17 recommended | Engineering |
| S7-1500 Motion Control | — | V3.0 or V4.0 (NOT V2.0 — see Section 5) | Technology objects (TO_PositioningAxis, TO_SynchronousAxis, etc.) |
The 6SL3210-5HB10-2UF0 is a 1-axis AC/AC converter in the S210 family rated for 200 V class 3-phase operation. The 1FK2203-2AG10-1CA0 is a compact 1FK2 motor with integrated Drive-CLiQ encoder. Match the motor's stall torque (M0) and rated speed (nN) to the mechanical load such that the probing torque setpoint lands between 10 % and 50 % of M0 for clean signal-to-noise without stalling.
3. Telegram Architecture: 105 Plus 750
SINAMICS S210 supports multiple parallel PROFINET telegrams on one logical connection, as documented in the SINAMICS S210 List Manual and the PROFINET telegram overview on the Siemens support portal. The combination required for torque-limited positioning is:
| Telegram | Type | PZD Direction | Function |
|---|---|---|---|
| 105 | Standard positioning | Controller ↔ Drive | Position, velocity, status words, control words, setpoints |
| 750 | Supplementary torque | Controller → Drive: M_ADD, M_LIMIT_POS, M_LIMIT_NEG | Torque feed-forward and bipolar torque limit override |
| 750 | Supplementary torque | Drive → Controller: M_ACT | Actual torque feedback, scaled |
3.1 Telegram 105 PZD layout (SINAMICS standard)
| PZD Word | Controller → Drive (Setpoint) | Drive → Controller (Actual) |
|---|---|---|
| 1 | STW1 (control word 1) | ZSW1 (status word 1) |
| 2 | NSOLL_B (speed setpoint, 32-bit) | NIST_B (actual speed, 32-bit) |
| 3 | — | — |
| 4 | STW2 (control word 2) | ZSW2 (status word 2) |
| 5 | XERR (position error / position setpoint) | — |
| 6 | — | — |
| 7 | — | — |
| 8 | — | — |
| 9 | — | — |
| 10 | — | — |
3.2 Telegram 750 PZD layout (supplementary torque)
| PZD Word | Controller → Drive | Drive → Controller |
|---|---|---|
| 1 | M_ADD (supplementary torque feed-forward, 0x4000h = 100 % of p2003) | M_ACT (actual torque smoothed, 0x4000h = 100 % of r0080/p2003) |
| 2 | M_LIMIT_POS (positive torque limit, 0x4000h = 100 %) | — |
| 3 | M_LIMIT_NEG (negative torque limit, 0x4000h = 100 %) | — |
| 4 | — | — |
All torque words are 16-bit signed normalized to 0x4000h (16384) = 100 %. The reference value is the drive's torque reference p2003 in Nm (default derived from motor M0). The drive additionally publishes the actual torque internally on parameter r0080; telegram 750 simply exposes it on the bus for the PLC to read without acyclic parameter access.
3.3 Activating Telegram 750 in HW Config
- Open Devices & Networks in TIA Portal and select the SINAMICS S210 node.
- Open the PROFINET interface properties → tab Telegram configuration.
- Click Add telegram and select Telegram 750 in the drop-down. Telegram 105 must remain selected; the order of telegrams is arbitrary but should be kept consistent between drive and TO.
- Compile the hardware configuration and download to the CPU.
- Open the PositioningAxis technology object → Configuration → Hardware interface. Verify both telegrams appear as Standard telegram 1 (105) and Supplementary telegram 1 (750).
- Under Data exchanged with the drive → Additional data, enable the checkbox Torque data. Without this checkbox the technology object discards telegram 750 and the variable
StatusTorqueData.ActualTorquestays at 0. - Compile the technology object. The TO now publishes
PositioningAxis_1.StatusTorqueData.ActualTorque,.ActualTorqueFiltered, and the supplementary setpoint outputsActualPosition,ActualVelocity.
4. Technology Object Configuration
The TO_PositioningAxis technology object is configured with three layers relevant to a probing application: hardware interface (covered above), mechanics, and limits.
4.1 Mechanics
Configure the conversion from motor revolutions to load units so that the ActualPosition reading represents the linear travel of the piston/plunger in millimeters:
- Load gear: ratio numerator / denominator (e.g., 1:1 if the motor shaft directly drives a ballscrew, 5:1 if a planetary reducer is fitted).
- Leadscrew pitch: mm/rev (e.g., 5 mm/rev for an SFU1605 ballscrew). TIA calculates linear units per load revolution from this value.
- Encoder increments: leave at motor default (1FK2 with DRIVE-CLiQ = 20-bit singleturn + 12-bit multiturn) unless using an external encoder.
Resulting scaling: 1 LU = 1 mm or 1 µm depending on unit selection. Always select the unit before commissioning; changing it later requires TO re-initialization.
4.2 Limits
- Max velocity: set to probing speed, typically 50–200 mm/s. Slow probing improves contact repeatability.
- Max acceleration/deceleration: high enough that the jerk on contact does not bounce the piston off the product (e.g., 1000 mm/s² with 50 ms smoothing).
- Software limit switches: define a guarded range above and below the expected product so the piston cannot crash into the fixture if the recipe is wrong.
- Emergency stop limit (hardware): wired to the drive STO through PROFIsafe (see Section 9).
5. Motion Control Library Version Constraint
The TIA Portal V15 Update 2 default installation places S7-1500 Motion Control V2.0 on the project. With Motion Control V2.0 the SINAMICS S210 drive does not appear in the TO hardware interface drive drop-down. The fix:
- Update the CPU firmware from V1.8 to V2.5 or later (TIA Portal > Online > Accessible nodes > CPU > Online & Diagnostics > Firmware update).
- In Devices & Networks, open the CPU properties → Motion Control tab. Switch the version from V2.0 to V3.0 or V4.0.
- Recompile. The drive now appears in TO_PositioningAxis → Configuration → Hardware interface → Drive.
6. PLC Programming the Position-at-Torque Sequence
The control sequence has four phases:
- Approach: drive the piston from a safe home position to a position a few millimeters above the expected top of the product at high speed (open-loop torque limit disabled).
- Probe: drive down at reduced speed with torque-limited control active and the recipe-defined torque limit applied through telegram 750.
-
Detect contact: when |ActualTorque| ≥ recipe threshold for a debounce window, latch the instantaneous
ActualPosition. - Retract: command a return motion to the home position and compare the latched position to the recipe acceptance window.
6.1 Code skeleton in SCL
// Recipe inputs (from HMI / DB)
RecipeData.TorqueLimit_Percent : REAL := 25.0; // % of M0
RecipeData.ProbingSpeed_mm_s : REAL := 50.0;
RecipeData.MinHeight_mm : REAL := 18.0;
RecipeData.MaxHeight_mm : REAL := 22.0;
// Drive constant: p2003 in Nm (read once during commissioning, store in DB)
DriveTorqueReference_Nm : REAL := 7.0; // example for 1FK2203-2AG10
// Torque limit words for telegram 750 (normalized: 16384 = 100%)
TORQUE_FULL_SCALE : INT := 16384;
RecipeTorquePos_Word : INT := REAL_TO_INT(TORQUE_FULL_SCALE * RecipeData.TorqueLimit_Percent / 100.0);
RecipeTorqueNeg_Word : INT := -RecipeTorquePos_Word;
// Phase machine
CASE iState OF
0: // IDLE
IF bStartProbe THEN
MC_Power(Axis := Axis, Enable := TRUE, StartMode := mcStartMode_absolute);
MC_Reset(Axis := Axis);
iState := 10;
END_IF;
10: // POWER ON
IF Axis.StatusWord.PowerOn THEN
MC_Home(Axis := Axis, Position := 0.0, Mode := mcHomingMode_Direct);
iState := 20;
END_IF;
20: // HOME MOVE
IF Axis.StatusWord.Homed THEN
MC_MoveAbsolute(Axis := Axis, Position := RecipeData.ApproachPosition_mm, Velocity := 200.0);
iState := 30;
END_IF;
30: // APPROACH COMPLETE
IF Axis.StatusWord.PositionReached THEN
// Apply torque limit via telegram 750 supplemental setpoints
Axis.Telegram750.M_LimitPos := RecipeTorquePos_Word;
Axis.Telegram750.M_LimitNeg := RecipeTorqueNeg_Word;
MC_MoveAbsolute(Axis := Axis, Position := RecipeData.SafeLowPosition_mm, Velocity := RecipeData.ProbingSpeed_mm_s);
iState := 40;
END_IF;
40: // PROBE — watch torque
IF ABS(Axis.StatusTorqueData.ActualTorque) >= RecipeData.TorqueLimit_Percent THEN
iDebounceCount := iDebounceCount + 1;
IF iDebounceCount >= 5 THEN // 5 * MC servo cycle (~5 ms)
LatchedHeight_mm := Axis.ActualPosition;
bContactDetected := TRUE;
MC_Halt(Axis := Axis, Deceleration := 2000.0);
iState := 50;
END_IF;
ELSE
iDebounceCount := 0;
END_IF;
// Safety: if axis reached SafeLowPosition without contact, treat as under-height
IF Axis.StatusWord.PositionReached AND NOT bContactDetected THEN
LatchedHeight_mm := RecipeData.SafeLowPosition_mm;
bContactMiss := TRUE;
MC_Halt(Axis := Axis);
iState := 50;
END_IF;
50: // EVALUATE
IF Axis.StatusWord.Standstill THEN
IF LatchedHeight_mm >= RecipeData.MinHeight_mm AND
LatchedHeight_mm <= RecipeData.MaxHeight_mm THEN
bAccepted := TRUE;
ELSE
bRejected := TRUE;
END_IF;
MC_MoveAbsolute(Axis := Axis, Position := 0.0, Velocity := 200.0);
iState := 60;
END_IF;
60: // RETURN HOME — sequence done
IF Axis.StatusWord.PositionReached THEN
bAccepted := FALSE;
bRejected := FALSE;
bContactDetected := FALSE;
bContactMiss := FALSE;
iDebounceCount := 0;
iState := 0;
END_IF;
END_CASE;
6.2 Pure MC_Torque API alternative
For applications where the PLC should command a torque (rather than a position with torque limit), use the MC_TorqueLimiting or the V4.0 MC_TorqueControl instruction. Per the S7-1500 Motion Control function manual (entry 109749262), these instructions place the axis in torque-controlled operation; the PLC then closes the position loop by reading ActualPosition and stopping the motion when the height window is satisfied or torque limits are exceeded. Telegram 750 is mandatory for this mode because the standard telegrams do not expose torque data.
7. Reading and Interpreting Torque Data
The structured variable PositioningAxis_1.StatusTorqueData.ActualTorque returns torque as a percentage of the drive's reference torque (p2003), in the same scaling as telegram 750. Conversion to engineering units:
Torque_Nm = (StatusTorqueData.ActualTorque / 16384.0) * DriveTorqueReference_Nm;
Where DriveTorqueReference_Nm is read from drive parameter r0080 ratio p2003 during commissioning and stored in a non-volatile DB (e.g., in the startup OB). The default scaling for 1FK2 motors is p2003 = 2 × M0 / √3 when the drive uses 3-phase AC; check the S210 commissioning manual for the exact entry.
7.1 From torque to linear clamping force
When the piston is driven through a ballscrew and the application cares about contact force (Newton) rather than motor torque (Newton-meter), the conversion chain is:
F_N = (M_motor_Nm * i_ratio * 2 * π * η) / leadscrew_pitch_mm
Where:
-
M_motor_Nm= actual motor torque from telegram 750 / status word -
i_ratio= load gear ratio (motor:load). For a direct drivei = 1; for a 5:1 reducer between motor and screw,i = 5. -
η= mechanical efficiency of the screw (0.85–0.95 for a preloaded ballscrew, 0.3–0.5 for a standard leadscrew). -
leadscrew_pitch_mm= axial travel per screw revolution.
When the technology object's Mechanics dialog is filled with the correct load gear ratio and leadscrew pitch, the TO automatically maintains the linear position in mm; the motor torque value is still exposed through StatusTorqueData.ActualTorque in Nm (motor side). To compare against a linear force setpoint, multiply by the conversion above inside the application code or store the conversion constant in a recipe.
StatusTorqueData.ActualTorque as if it were already a linear force. The variable is motor torque; for a 5 mm pitch screw and 7 Nm motor torque, the resulting axial force is roughly 8800 N (assuming 100 % efficiency), not 7 N. Mis-scaling the force reading will under- or over-torque the workpiece.8. Recipe Management and Accept/Reject Logic
The recipe should contain at minimum:
| Field | Type | Unit | Typical Range |
|---|---|---|---|
| ApproachPosition | REAL | mm | 5–20 above product |
| SafeLowPosition | REAL | mm | 2–3 below expected minimum height |
| ProbingSpeed | REAL | mm/s | 10–100 |
| TorqueLimit | REAL | % of p2003 | 10–50 |
| MinHeight | REAL | mm | product spec low |
| MaxHeight | REAL | mm | product spec high |
| DebounceCycles | INT | servo cycles | 3–10 |
| RetractSpeed | REAL | mm/s | 100–500 |
Store recipes in a global DB (Recipe_DB) and write to it from the HMI or a higher-level MES. The PLC's accept/reject flag drives a reject diverter or marker downstream; integrate a parts-tracking shift register if the line runs continuously between probe cycles.
9. PROFIsafe and Functional Safety
Because the piston presses against a deformable product, an erroneous software failure must not result in continued force. Use PROFIsafe on the S210 (telegram 30 supplementary) to wire:
- STO (Safe Torque Off): trip on E-stop or guard door.
- SS1 (Safe Stop 1): controlled stop then STO.
- SLS (Safely-Limited Speed): limit velocity to a safe value (≤ probing speed) when the operator guard is open, so any contact is below the threshold of injury.
The S210 supports PROFIsafe via F-CPU on the 1510SP F-1 PN. Activate the safety telegram in the same Telegram configuration dialog used for 105 and 750. Map the F-I/O to a fail-safe DB and gate the MC_Power.Enable instruction with the safety OK status.
10. Commissioning Procedure
- With the CPU online and the drive online in TIA Portal, run the S210 Commissioning wizard. Verify motor identification, encoder tuning, and current controller response.
- Run a velocity-controlled jog at 50 mm/s and confirm direction and scaling match the HMI display.
- Run Trace in the drive on
r0080(actual torque) and verify no torque ripple above 5 % of M0 at constant velocity. Excessive ripple indicates a mechanical bind or encoder misalignment. - Enable telegram 750 as described in Section 3.3.
- Set TO mechanical configuration, then run homing.
- Disable all torque limits in telegram 750 (set
M_LimitPos = 32767andM_LimitNeg = -32767) and execute a test profile without the product to verify the piston reaches the safe low position with zero error. - Re-enable recipe torque limit and run the probing sequence on a calibrated gauge block. Latch height should equal block height ± the repeatability of the system (typically ±0.05 mm for a clean 1FK2 with 20-bit encoder and 5 mm pitch screw).
- Verify the accept/reject logic with known-good and known-bad samples.
- Save the project, back up the drive parameters via Drive > Upload to PG, and archive both files.
11. Diagnostic and Troubleshooting Matrix
| Symptom | Likely Cause | Diagnostic Step | Remedy |
|---|---|---|---|
| Drive not selectable in TO drive drop-down | Motion Control V2.0 on CPU V1.8 | Check CPU firmware (Online & Diagnostics > CPU > Identification); check TO version in project tree | Update CPU firmware to V2.5+, switch TO Motion Control to V3.0/V4.0 |
StatusTorqueData.ActualTorque = 0 even when probe is pressed |
Telegram 750 not enabled in TO additional data | TO Configuration > Data exchanged with drive > Additional data > Torque data checkbox | Enable checkbox, recompile TO |
| Telegram 750 cannot be added to PROFINET interface | S210 firmware < V5.1 SP1 | Online & Diagnostics > SINAMICS > Firmware version | Update S210 firmware via Web server or TIA |
| Probing position off by exactly 2× | Load gear ratio reversed in TO mechanics | Jog a known distance, compare TO position to physical scale | Correct load gear numerator/denominator |
| Piston oscillates on contact | Velocity loop gain too high for the mechanical compliance | Trace actual velocity; observe overshoot | Reduce Kp, increase torque filter p0045 |
| Latched height drifts cycle to cycle | Insufficient debounce on torque threshold OR thermal drift | Add logging to trace latched value over 100 cycles | Increase debounce to 10–20 cycles; allow 2-minute warm-up |
| F0180 (PROFIsafe fault) at start-up | F-CPU address mismatch or safety telegram parameter mismatch | Online & Diagnostics > Safety > Status | Reassign F-destination address and CRC; re-acknowledge |
| F30002 (DC link undervoltage) during fast retract | Regenerative energy exceeds braking resistor capacity | Trace DC link voltage during retract | Add external braking resistor or reduce retract deceleration |
| F07900 (motor blocked) immediately on probe start | Torque limit too low for friction | Read r0080 vs. applied torque word | Lower torque threshold to 5 % and ramp up to recipe value |
12. Performance and Repeatability Notes
- Position repeatability of a 1FK2 + S210 system with a 5 mm pitch ballscrew is dominated by the encoder (≈ ±0.0003 mm per 20-bit count) and the mechanics backlash, not by the control loop.
- Probing repeatability on soft products is typically ±0.02–0.10 mm depending on product elasticity, piston shape, and approach speed. A flat piston (Ø ≥ 3× product height variation) gives the best results.
- Sample cycle budget on a 1510SP F-1 PN at V2.5: PROFINET IRT cycle 1 ms, MC servo cycle 2 ms, PLC application OB1 2 ms. Plan for 5 ms worst-case detection latency between contact and
MC_Halt; at 50 mm/s probing speed this is 0.25 mm of post-contact travel. - For higher speed probing without sacrificing repeatability, increase the MC servo cycle to 1 ms (requires CPU V2.8+ and Motion Control V4.0).
Which telegrams must be configured for torque-limited positioning on SINAMICS S210?
Telegram 105 (standard positioning) plus supplementary telegram 750 (torque data: M_ADD, M_LIMIT_POS, M_LIMIT_NEG from controller; M_ACT from drive). Both must be active in HW Config, and the technology object must have "Torque data" enabled under Additional data, or StatusTorqueData.ActualTorque will not populate.
Why is the SINAMICS S210 not selectable in the TO_PositioningAxis drive drop-down?
The CPU firmware is too old for the active Motion Control library version. Update the 6ES7510-1SJ01-0AB0 to firmware V2.5 or later and switch the project's Motion Control version from V2.0 to V3.0 or V4.0. Recompile and the drive will appear.
What engineering units does StatusTorqueData.ActualTorque return?
It returns torque normalized to 0x4000h (16384) = 100 % of drive reference torque p2003 (Nm). To get Newton-meters, multiply by p2003 / 16384. To get linear clamping force from a ballscrew, additionally divide by (leadscrew_pitch_mm / (2 × π × η × i_ratio)).
How do I implement pure torque control on SINAMICS S210 from TIA Portal?
Use the MC_TorqueControl instruction from the Motion Control library V4.0 with telegram 750 enabled. The drive enters torque-controlled mode; the PLC then reads ActualPosition and commands MC_Halt or MC_MoveAbsolute when the desired position window or torque limit is reached. See the S7-1500 Motion Control function manual (Siemens entry ID 109749262) for the full instruction reference.
Can the S210 force the product below its setpoint without damaging it?
Yes, if the torque limit is set correctly through telegram 750. With a recipe torque limit of 25 % of M0 on a 1FK2203-2AG10, contact force at a 5 mm ballscrew with 90 % efficiency is approximately 1980 N. Drop the limit to 10 % for delicate products. Always wire an SLS PROFIsafe limit in addition to the software limit, and verify with a calibrated gauge block before production.