S7-1200 Torque Limiting with Festo CMMT: Telegram 750 Setup

David Krause16 min read
Motion ControlSiemensTutorial / How-to
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

S7-1200 Torque Limiting with Festo CMMT: Telegram 750 Setup

The SIMATIC S7-1200 does not expose a native MC_TorqueLimiting technology object in the same form as S7-1500T, but torque limiting is achievable through PROFINET Telegram 750, Siemens-supplied function blocks, and intelligent drive-side handling on the Festo CMMT-AS servo drive. This reference describes the complete architecture, parameter mapping, Festo commissioning, Siemens FB wiring, and verification procedure for a linear axis application requiring ~50 N force limit.

Architectural Rule: The closed-loop torque sensing, evaluation, and protection shutdown must execute on the drive cycle (typically 1 ms on Festo CMMT-AS, 4 ms on S7-1200 G2 with SINAMICS). The PLC is used to set the limit value, enable/disable the function, and react to status bits. Do not attempt to evaluate measured torque over PROFINET for high-speed shutdown—this path is too slow and will fault the drive.

1. System Overview

The application consists of a linear axis driven by a servo motor and controlled by a Festo CMMT-AS servo drive, supervised by a SIMATIC S7-1215 DC/DC/DC (firmware V4.6 or later recommended). The PLC sets torque limits via PROFINET using Siemens standard telegram 750, which carries the torque limit setpoint to the drive. The drive itself monitors actual torque (motor current) against the limit and either reduces command velocity or stops the axis when the threshold is exceeded.

1.1 Topology

S7-1215 CPU PROFINET I/F FW V4.6+ PROFINET Telegram 750 Festo CMMT-AS Servo Drive CiA 402 / PROFIdrive Servo Motor + Linear Axis Festo EGC / DGCI Mechanical Load MC_TorqueLimiting FB instance

1.2 Component List

Component Model / Part No. Role
CPU S7-1215 DC/DC/DC (6ES7215-1AG40-0XB0) Master, PROFINET controller
Servo drive Festo CMMT-AS-C2-3A (or CMMT-ST) Torque limiting executor, current controller
Servo motor Festo EMME-AS / EMMT-AS Mechanical actuator
Linear axis Festo EGC / DGCI spindle-driven Load-bearing axis
Engineering Siemens TIA Portal V18 / V19 PLC + device configuration
Festo tool Festo Automation Suite V4.x Drive commissioning, telegram config

2. Prerequisites

Hardware note: PROFINET Telegram 750 is a Siemens standard telegram. It is selected on the Festo CMMT in the Festo Automation Suite under Device Function > PROFIdrive > Telegram Selection. If telegram 750 is not exposed on the GSD, install the latest GSDML version from Festo.

3. Why Drive-Side, Not PLC-Side

The S7-1200 OB1 cycle time is typically 1–10 ms depending on program size. Motion control OB (MC-Servo) typically runs at 4 ms. The Festo CMMT-AS current/torque loop runs at 250 µs with field-oriented control. Any torque-limiting decision made on the PLC must travel across PROFINET (1–2 ms update) and into the drive before the drive can react. Total latency from "excess torque detected" to "drive stops" via the PLC exceeds 10 ms. By the time the PLC command reaches the drive, the motor has already been producing peak torque for several milliseconds—long enough to either trip a drive fault (Festo CMMT I²t monitoring) or damage the mechanical load.

The recommended architecture places torque evaluation in the drive. The PLC writes a torque limit value into telegram 750; the drive compares this against actual torque every cycle and either:

  • Reduces velocity command (soft limit), or
  • Trips a stop (hard limit) with configurable deceleration.

The PLC's role is to:

  1. Provide the torque limit value (Nm or %, depending on drive scaling).
  2. Enable/disable the limit via a control bit in telegram 750.
  3. Monitor status bits in the process data for "limit active" and "limit reached".
  4. React to the status by halting higher-level motion jobs.

4. PROFINET Telegram 750 Configuration

Telegram 750 is a Siemens free-configurable telegram used for vendor-specific I/O on PROFIdrive-compatible drives. The Festo CMMT-AS supports telegram 750 as a "manufacturer-specific" slot for transmitting torque limits and reading torque status.

4.1 Telegram 750 Signal Layout

Word Direction Signal Data Type Unit / Range
0 PLC → Drive Control word (torque limit) WORD Bit field
1 PLC → Drive Torque limit positive INT 0.1% of rated torque (signed)
2 PLC → Drive Torque limit negative INT 0.1% of rated torque (signed)
3 PLC → Drive Reserved / mode WORD Mode selection
4 Drive → PLC Status word WORD Bit field
5 Drive → PLC Actual torque INT 0.1% of rated torque (signed)
6 Drive → PLC Limit status WORD Bit field
7 Drive → PLC Diagnostic WORD Drive-specific
Word count: Telegram 750 on Festo CMMT carries a configurable number of PZD words; verify the exact mapping against the active GSDML revision and the drive parameterization in Festo Automation Suite. The table above reflects the common PROFIdrive pattern for vendor-specific slots; treat signal mapping as a contract to validate against your specific GSD file.

4.2 Selecting Telegram 750 in TIA Portal

  1. Open the device configuration of the Festo CMMT in TIA Portal.
  2. Navigate to Properties > PROFINET interface > Module parameters.
  3. In Slot configuration, add module Free PROFIdrive telegram 750 with the configured I/O length (default 8 words each direction).
  4. Confirm the slot is mapped under Submodule list; the start address is automatically assigned (e.g. I/QW 256..271).
  5. Compile and download the device configuration.

4.3 Configuring Telegram 750 in Festo Automation Suite

  1. Open Festo Automation Suite and connect to the CMMT-AS.
  2. Navigate to Parameters > PROFIdrive > Telegram selection.
  3. Select Telegram 750 (vendor-specific).
  4. Configure the torque limit scaling (e.g. 1000 = 100% rated torque).
  5. Set reaction on limit exceed: velocity reduction (default) or rapid stop.
  6. Save parameters to the drive (Save > Save to device + Save to project).

5. S7-1200 G2 Function Block for Torque Limiting

The Siemens application manual SIMATIC S7-1200 G2: Torque limiting with SINAMICS Drives (FB version V1.0.0) provides a ready-made SCL function block for torque limiting on the S7-1200 / S7-1200 G2 platform. Although the reference integration is with SINAMICS drives, the same telegram-750-based logic is applicable to any PROFIdrive-compatible drive including the Festo CMMT, provided the telegram mapping is identical.

5.1 Function Block Interface

Parameter Direction Type Description
enable INPUT BOOL Master enable for torque limit
limitPositive INPUT INT Positive torque limit (0.1% units, signed)
limitNegative INPUT INT Negative torque limit (0.1% units, signed)
torqueHWAddr INPUT HW_IO PROFINET slot HW identifier
driveReady INPUT BOOL Drive state ready feedback
active OUTPUT BOOL Torque limit active
limitReached OUTPUT BOOL Drive reported limit reached
actualTorque OUTPUT INT Actual torque feedback (0.1%)
error OUTPUT BOOL Function-block error
status OUTPUT WORD Status / error code

5.2 SCL Implementation Skeleton

The following SCL code shows the typical structure for a torque-limiting FB on S7-1200. Adapt the fieldbus write/read offsets and the bit assignments to match your exact telegram-750 mapping.

FUNCTION_BLOCK "FB_TorqueLimit_S7_1200"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 1.0

VAR_INPUT
    enable         : BOOL;          // Master enable
    limitPositive  : INT;           // 0.1% units, signed
    limitNegative  : INT;           // 0.1% units, signed
    hwTorqueSlot   : HW_IO;         // Telegram 750 HW identifier
    driveReady     : BOOL;          // Drive ready feedback (STW1 bit, e.g. ZSW1.2)
END_VAR

VAR_OUTPUT
    active         : BOOL;          // Limit currently enforced
    limitReached   : BOOL;          // Drive reported "limit reached"
    actualTorque   : INT;           // Actual torque 0.1% units
    error          : BOOL;          // FB error
    status         : WORD;          // Status / diagnostic word
END_VAR

VAR
    controlWord    : WORD;          // Telegram 750 word 0 (PLC->drive)
    statusWord     : WORD;          // Telegram 750 word 4 (drive->PLC)
    limitStateWord : WORD;          // Telegram 750 word 6 (drive->PLC)
    fbError        : BOOL;
END_VAR

BEGIN
    // Default outputs
    active       := FALSE;
    limitReached := FALSE;
    actualTorque := 0;
    error        := FALSE;
    status       := 16#0000;

    IF enable AND driveReady THEN
        // Build control word: bit 0 = enable limit, bit 1 = ramp
        controlWord.%X0 := TRUE;            // enable torque limit
        controlWord.%X1 := TRUE;            // soft ramp engaged

        // Write 8-word telegram to drive via direct I/O access
        %QW0  := controlWord;               // PZD 0 - control
        %QW2  := WORD(UINT(limitPositive)); // PZD 1 - limit +
        %QW4  := WORD(UINT(limitNegative)); // PZD 2 - limit -
        %QW6  := 16#0000;                   // PZD 3 - reserved

        // Read 8-word telegram from drive
        statusWord     := %IW0;             // PZD 0 - status
        actualTorque   := INT(%IW2);        // PZD 1 - actual torque
        limitStateWord := %IW4;             // PZD 2 - limit status

        active       := statusWord.%X0;
        limitReached := limitStateWord.%X0;
        status       := statusWord;

    ELSIF NOT driveReady THEN
        // Drive not ready - clear control word, raise diagnostic
        %QW0 := 16#0000;
        %QW2 := 16#0000;
        %QW4 := 16#0000;
        %QW6 := 16#0000;
        status := 16#0001;                  // 0x0001 = drive not ready

    END_IF;

    // Catch I/O access faults (PLC runtime)
    IF ... runtime fault present ... THEN
        error := TRUE;
        status := 16#8001;
    END_IF;

END_FUNCTION_BLOCK
Important: The S7-1200 does not have a built-in technology object called MC_TorqueLimiting. The naming convention MC_TorqueLimiting is reserved for S7-1500T technology objects (see Siemens S7-1500T force/torque limiting, where Mode = 0 selects force/torque limiting and Limit sets the value). On S7-1200, the user constructs a functionally equivalent FB using telegram 750.

6. S7-1500T Reference Semantics Applied to S7-1200

The S7-1500T force/torque-limiting technology object exposes two key parameters per the S7-1500T documentation:

Parameter Type Meaning
Mode INT 0 = force/torque limiting active (drive enforces limit and reduces velocity)
Limit LREAL Limit value in user units (N for linear, Nm for rotary)

On S7-1200, replicate this model inside your FB:

  • Mode = 0 (drive enforces, reduces velocity): Set controlWord.%X0, leave stop-bit clear.
  • Mode = 1 (drive enforces, rapid stop on limit): Set controlWord.%X0 and controlWord.%X1 (stop-on-limit).
  • Limit value: Convert your engineering-unit value (e.g. 50 N) to 0.1% of rated torque using the drive's torque constant (Nm/A) and the force-to-torque conversion (Nm = N × ball-screw lead / 2π × efficiency).

7. Converting 50 N to Telegram 750 Setpoint

Suppose the linear axis is a ball-screw-driven stage with the following parameters:

Parameter Symbol Value
Required force limit Flimit 50 N
Ball-screw lead h 5 mm/rev = 0.005 m/rev
Drive efficiency η 0.9
Motor rated torque MN 2.4 Nm (example EMMT-AS-40)

7.1 Torque Equivalent of 50 N

For a ball-screw:

M = F × h / (2π × η)

M = 50 × 0.005 / (2π × 0.9) = 0.0442 Nm

7.2 Percentage of Rated Torque

%M = M / MN × 100 = 0.0442 / 2.4 × 100 = 1.84 %

7.3 Telegram 750 Integer Value

Setpoint = %M × 10 = 18 (integer, 0.1% units)

This means limitPositive := 18 and limitNegative := -18 in the FB. The drive will limit motor torque to 1.84% of rated, equivalent to ~50 N at the load.

Margin: In practice, add 5–10% engineering margin above the worst-case mechanical limit to absorb measurement noise and dynamic overshoot. For 50 N nominal, set the FB input to ~55 N equivalent (~20 in 0.1% units).

8. Festo CMMT-AS Drive Configuration

8.1 Required Drive Parameters

Festo Parameter Meaning Recommended Value
Telegram type PROFIdrive telegram 750 (vendor-specific)
Torque limit source Source for torque limit Fieldbus (telegram 750)
Torque limit reaction Action on limit Reduce velocity (soft) / Stop (hard)
Torque limit scaling 100% = integer value 1000 (= 100.0%)
Torque monitoring window Hysteresis 2–5%
I²t warning threshold Thermal pre-alarm 80% rated
I²t shutdown threshold Thermal shutdown 105% rated

8.2 Activating Torque Limiting on the CMMT

  1. In Festo Automation Suite, navigate to Application > Torque Limiting.
  2. Enable the function and select Source: Fieldbus telegram 750.
  3. Set Reaction:
    • For gentle press-fit applications: Velocity reduction to zero.
    • For safety-sensitive applications: Category 1 stop (controlled, then STO).
  4. Save parameters and cycle drive power if required (CMMT applies most parameters non-volatile on save).

9. PLC Program Architecture

9.1 OB1 Cyclic Call

// OB1 - main cyclic
// Instantiate the torque limit FB once per axis
"iDB_TorqueLimit_Axis1"(
    enable         := "Axis1_DriveReady",
    limitPositive  := REAL_TO_INT("Axis1_Limit_N" * 10.0 / "Axis1_ScalingFactor"),
    limitNegative  := -REAL_TO_INT("Axis1_Limit_N" * 10.0 / "Axis1_ScalingFactor"),
    hwTorqueSlot   := 256,                  // HW address of telegram 750
    driveReady     := "Axis1_DriveReady",
    active         => "Axis1_TorqueLimitActive",
    limitReached   => "Axis1_TorqueLimitReached",
    actualTorque   => "Axis1_ActualTorque",
    error          => "Axis1_TorqueLimitError",
    status         => "Axis1_TorqueLimitStatus"
);

// React to limit reached: halt higher-level motion
IF "Axis1_TorqueLimitReached" THEN
    "MC_Halt"(Axis := "TO_Axis1");
END_IF;

9.2 State Machine for 50 N Tool-Detect Use Case

Idle start MoveToContact M_ LimitActive=1, T≥50N Stop MC_Halt, log event, signal OK Condition: limitReached OR positionReached Operator reset to Idle

9.3 HMI Integration

Bind the following tags to the HMI for diagnostics:

  • Axis1_ActualTorque (INT, 0.1% units) — bar graph 0–100%.
  • Axis1_TorqueLimitActive (BOOL) — green indicator.
  • Axis1_TorqueLimitReached (BOOL) — red indicator with history bit.
  • Axis1_TorqueLimitError (BOOL) — alarm field.
  • Axis1_Limit_N (REAL) — HMI input field, writeable in operator mode.

10. Step-by-Step Commissioning

  1. Hardware wiring: PROFINET cable from S7-1215 port to Festo CMMT-AS. Verify PROFINET link LED on CMMT is solid green.
  2. Import GSDML in TIA Portal: Options > Manage device description files (GSD). Browse to Festo CMMT GSDML; install.
  3. Add CMMT to PROFINET topology: drag from catalog under "PROFINET IO > Drives > Festo > CMMT-AS". Assign to the S7-1215 PROFINET interface.
  4. Configure telegram 750: in the CMMT device view, slot 0, add submodule "Free PROFIdrive telegram 750". Confirm 8 PZD words each direction.
  5. Assign IP and device name: from TIA Portal, "Assign PROFINET device name" to "cmmt-as-axis1".
  6. Download TIA project to S7-1215.
  7. Festo Automation Suite commissioning:
    • Run motor/axis setup wizard (commutation, encoder, homing).
    • Set current/torque limits in drive to safe maximums first.
    • Enable telegram 750 reception.
    • Set reaction on limit to "reduce velocity" for initial test.
  8. Test open-loop torque limit: with drive enabled but axis not commanded to move, write limitPositive := 20 via watch table. Verify in Festo trace that drive registers the limit value.
  9. Test axis stop on torque: command slow jog motion (10 mm/s) toward a fixed stop. Verify axis decelerates and stops within ~50 ms of contact.
  10. Tune reaction: switch reaction between "velocity reduction" and "rapid stop" depending on application needs.
  11. Save and back up: save Festo parameters to PC and to SD card on S7-1215.

11. Verification Checklist

# Verification Pass Criterion
1 PROFINET telegram 750 communication Watch table shows PLC output words update and input words reflect drive status
2 Limit value reaches drive Festo Automation Suite diagnostic shows limit = expected % torque
3 Force threshold accuracy Measured contact force = 50 N ± 5 N (use calibrated load cell)
4 Stop latency From contact to drive stop < 30 ms (Festo trace)
5 Status bits limitReached toggles TRUE on contact event
6 No PLC fault S7-1215 diagnostic buffer clean during and after test
7 Repeatability 10 successive contacts give consistent stop position ±0.05 mm
8 No drive I²t trip Drive thermal load < 80% after 100 cycles

12. Troubleshooting Matrix

Symptom Root Cause Remedy
Drive ignores torque limit Telegram 750 not selected on CMMT In Festo Automation Suite, set telegram selection to 750
Limit value always 0 in drive PLC not writing telegram 750 outputs Check HW address in FB matches configured slot; verify with watch table
Drive faults with overcurrent Reaction is "reduce velocity" but limit value too high Lower limitPositive / limitNegative; verify scaling
Axis stops but force exceeds 50 N Drive current loop saturated above torque limit during deceleration Add 5–10% margin to setpoint; use rapid stop reaction instead of velocity reduction
HMI shows limitReached permanently Bit assignment inverted in FB Verify status bit in telegram 750 (read drive manual for bit polarity)
PROFINET diagnostic alarm on CMMT Wrong PZD length Match submodule PZD length to drive configuration
S7-1200 OB1 cycle too long Torque-limit processing in OB1 instead of MC-Servo Move torque-limit FB call to a cyclic interrupt OB (OB30–OB38) at 1–4 ms
Drive I²t alarm during repeated tests Cycle time too short for thermal recovery Increase dwell time between test cycles; lower setpoint
Actual torque reads negative unexpectedly Sign convention in telegram differs from FB Apply sign inversion in FB or check drive scaling
MC_Halt doesn't trigger on limit HMI tag "limitReached" not wired to MC_Halt input Wire directly in OB1 or in a dedicated interrupt OB

13. Performance Comparison: S7-1200 vs S7-1500T

Feature S7-1200 (this article) S7-1500T
Native TO function Not available (user FB) MC_TorqueLimiting / ForceLimiting
Min cycle time 1 ms (OB30) 250 µs (MC-Servo)
Telegram type 750 (vendor-specific) 750, 751 or TO-specific
Encoder in TO Indirect via drive Direct via TO
Drive-side enforcement required Yes (recommended) Optional (TO can also enforce)
Reference S7-1200 G2 manual TIA V20 docs

14. Specifications Summary

Item Value
Target PLC S7-1215 DC/DC/DC (FW V4.6+)
Target drive Festo CMMT-AS-C2-3A / CMMT-ST
PROFINET telegram Telegram 750 (vendor-specific)
PZD word count 8 input + 8 output (verify with GSD)
Torque setpoint scaling 1000 = 100% rated torque
Setpoint resolution 0.1%
Update rate (PLC → drive) 1–4 ms (PROFINET IRT)
Update rate (drive cycle) 250 µs (Festo CMMT)
Force limit (example) 50 N ± 5 N
Reaction options Velocity reduction, rapid stop
Siemens reference FB version V1.0.0 (109988351)

15. Safety Considerations

Functional safety: Torque limiting implemented via PROFINET is not a safety-rated function. For applications requiring SIL/PL rating, the Festo CMMT-AS offers integrated safety functions (STO, SS1, SS2 via PROFIsafe on Festo CMMT-AS variants with safety option). Do not use telegram-750-based torque limiting as the sole protection against hazardous motion.
  • Always commission with mechanical end-stops in place as a secondary hard stop.
  • Configure drive I²t limits for thermal protection of motor and wiring.
  • Use PROFINET IRT (isochronous real-time) for sub-millisecond deterministic updates if reaction latency is critical.
  • Validate stop distance under worst-case velocity at the maximum mass.
  • Implement HMI-side acknowledgement of limit-reached events to prevent auto-restart into a stalled condition.

16. Frequently Asked Questions

Does the S7-1200 have a built-in MC_TorqueLimiting technology object?

No. The S7-1200 does not expose a native MC_TorqueLimiting TO. That function exists on the S7-1500T platform (see Siemens TIA V20 force/torque limiting). On S7-1200 you implement the equivalent behavior with a user FB that writes the torque limit to PROFINET telegram 750, as documented in the S7-1200 G2 torque-limiting manual.

Why is the torque limit evaluated on the Festo CMMT instead of the S7-1200?

The Festo CMMT-AS current/torque loop runs every 250 µs, while the S7-1200 OB cycle runs every 1–10 ms and PROFINET adds 1–2 ms latency. Closing the torque loop on the drive gives <1 ms reaction time; closing it on the PLC exceeds 10 ms, which is too slow for protecting the drive from overcurrent or the mechanics from over-force.

How do I convert a 50 N force limit into a Telegram 750 setpoint?

Convert force to torque using the ball-screw formula M = F × h / (2π × η), divide by rated motor torque MN, multiply by 100 to get percent, then multiply by 10 to get the 0.1%-units integer. For 50 N on a 5 mm lead, 0.9 efficiency, 2.4 Nm rated motor: M = 0.0442 Nm, %M = 1.84%, setpoint = 18.

Can I use Telegram 750 with any PROFIdrive drive, or only Festo CMMT?

Telegram 750 is a Siemens vendor-specific PZD slot supported by most PROFIdrive-compatible drives, including Festo CMMT-AS, SINAMICS, and most third-party servo drives that expose a PROFIdrive slot 750 in their GSDML. The exact signal mapping (which word carries torque limit, which word carries actual torque, etc.) must be confirmed against the specific drive's GSDML or vendor manual.

What firmware version of S7-1200 is recommended for torque limiting with telegram 750?

Firmware V4.4 or later is the minimum for stable PROFINET IRT with telegram 750. For S7-1200 G2 CPUs, firmware V1.0 or later is required to use the official Siemens torque-limiting FB (V1.0.0) from application manual 109988351. Update both the CPU and the CMMT-AS to their latest stable firmware before commissioning.

Back to blog