SINAMICS S110 MDI Positioning Stops at Target: S7-1200 Fix

David Krause11 min read
S7-1200SiemensTroubleshooting
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

Problem Overview

When a SIMATIC S7-1200 controller drives a SINAMICS S110 servo through the Basic Positioner (EPOS), two primary setpoint sources are available: Traversing Blocks stored inside the drive and MDI (Manual Data Input), where the higher-level PLC pushes position, velocity, and acceleration setpoints in real time.

In the field, the MDI mode frequently exhibits the following symptom on a vertical or linear axis:

  • Setpoint 1 is accepted and the axis accelerates.
  • Immediately after the PLC writes setpoint 2, the drive decelerates to zero and dwells at the original setpoint 1 location before continuing.
  • The same sequence of discrete "stops" is visible on every new MDI setpoint, although the drive should logically run through the points continuously (continue-flying behavior).
  • Traversing Block mode with the Continue-flying continuation condition runs smoothly on the same mechanics.

The fault is not a hardware defect and not a telegram failure; it is a timing mismatch between PLC cycle, PROFINET bus update, and the SINAMICS S110 setpoint acceptance window inside the EPOS task.

Affected Components and Versions

Component Model / Order Number Firmware Branch Notes
SIMATIC S7-1200 CPU 6ES721x-1xxxx-xxxx Firmware 4.x or newer Any CPU that supports PROFINET IRT or RT, S7-1211C through S7-1516 references in this guide
SINAMICS S110 6SL3210-1xxxx-xxxx FW 4.x / 5.x Built-in Basic Positioner (EPOS) active
Positioning telegram Standard telegram 3 or Siemens telegram 105 - Telegram 105 is the recommended profile for EPOS on S7-1200
Siemens Drives library "SINAMICS EPOS Library for S7-1200/S7-1500" Library V15 or newer in TIA Portal Contains Sina_Para, SINA_POS, SINA_SPEED

Reference the official Function Manual "Basic Positioner EPOS for SINAMICS S110" at the Siemens Industry Online Support entry ID 109757593 for setpoint processing details that drive this analysis.

Root Cause: Why MDI Stops Between Setpoints

The Basic Positioner treats MDI setpoints the same way it treats a single Traversing Block row that is configured with continuation condition END (0). When the axis reaches the commanded position, EPOS internally issues a halt, ramps the velocity setpoint to zero, and only re-arms for the next setpoint after the PLC writes a fresh MDI telegram. This is a deliberate functional behavior, not a bug.

Two competing timing parameters determine whether you observe the intermediate stop or not:

  1. Axis mechanical response time — governed by maximum velocity, jerk limit, and the distance between commanded positions.
  2. PLC-to-drive setpoint delivery rate — governed by PROFINET send clock, OB1/OB35 cycle time, and the time the S7-1200 spends on the MDI write logic.

If the axis physically reaches the commanded position before the next MDI telegram arrives, EPOS halts. If the next setpoint is already in the drive's setpoint buffer when the axis arrives, EPOS executes a smooth transition.

Engineering Rule of Thumb: For continue-flying behavior in MDI, the next PLC setpoint must arrive at the drive input at least one PROFINET send-clock interval (typically 1–4 ms) before the position setpoint r2665 crosses the current commanded position.

Symptom Matrix

Symptom Likely Cause Confirm With
Stops only at high speed, runs smooth at low speed Mechanical transit between points is shorter than PLC update period Trace r2665 vs r2666
Always stops, regardless of speed MDI mode is configured as single setpoint (not continuous) or p2640 accept edge is missing Inspect p2640, p2641
Stops every Nth setpoint only PLC OB1 cycle > 4 ms or PROFINET watchdog toggles Monitor r2060 update timing
Drive reports F07490 or F07491 Positioning tolerance violated Check r2526, p2544
Behavior identical to Traversing Block END mode MDI handling is correct; continuation is impossible by design in pure MDI Switch to traversing blocks or use Sina_Para

Diagnostic Procedure

Before changing application code, capture a STARTER / SINAMICS Startdrive trace of the following three parameters over a window that includes at least four commanded positions:

Parameter Meaning Polarity / Unit Sampling
r2060[x] (MDI setpoint interface) Position setpoint as written by the PLC telegram LU (length units) 4 ms typical
r2665 Position setpoint inside EPOS (after interpreter) LU Position controller cycle (typically 1 ms)
r2666 Velocity setpoint issued by EPOS 1000 LU/min Position controller cycle

Interpretation guide:

  • If r2060 changes step-wise and r2666 dips to zero between steps while r2665 holds its end value — the PLC is too slow; the drive reaches target before the next telegram.
  • If r2060 is already updated but r2665 still shows the previous target — the drive has not yet accepted the new MDI word; verify p2650 (MDI mode) and the Setpoint acceptance edge in p2640.
  • If r2666 never reaches the configured maximum velocity and the axis follows a triangular profile — distance between setpoints is too short for the configured acceleration ramp; reduce velocity, increase distance, or raise jerk limit in p2574/p2575.

Solution Path 1 — Optimize the PLC Cycle and PROFINET Timing

The cheapest correction is to compress the time between setpoints below the axis transit time.

  1. Set the PROFINET send clock on the S7-1200 to 1 ms if the topology supports IRT. Otherwise use 2 ms.
  2. Move the MDI setpoint write logic from OB1 (typically 10–20 ms) to a time-of-day or cyclic interrupt OB, e.g. OB35 configured to 2 ms or 4 ms.
  3. Pre-compute the next MDI block in the same OB that triggers the current move, so the new position is already on the bus when EPOS reaches the current target.
  4. Raise the axis jerk limits (p2574, p2575) and the maximum deceleration (p2573) so the axis can round corners instead of stopping.
Do not lower the PROFINET send clock below the minimum supported by every device on the line. The S110 supports down to 1 ms IRT; check any other nodes such as ET200SP or switches.

Solution Path 2 — Use Sina_Para to Push a Traversing Block Live

If pure MDI cannot meet the timing budget, the correct workaround is to use acyclic parameter access to download a traversing block into the drive on the fly. The S7-1200 then triggers that block by writing to control word bits, which behaves exactly like the Traversing Block Continue-flying mode that already works on the application.

The function block for this is Sina_Para from the official Siemens "Library for Drives (EPOS)". It wraps the standard acyclic DPV1 read/write services and presents a simple STEP 7 interface.

Sina_Para Interface (STEP 7 V15+)

Input / Output Type Meaning
execute BOOL Edge-triggered start of the acyclic job
readWrite BOOL FALSE = read, TRUE = write
parameterNumber DINT Drive parameter number (e.g. 26100 for traversing block 0)
index INT Index/sub-parameter (block number, field index)
value REAL / DINT / WORD Value to write or read result
hardwareId HW_IO PROFINET device identification from the S7-1200 device view
done BOOL Job completed without error
busy BOOL Job in progress
error BOOL Job failed
status WORD Siemens standard error code

Block Parameters of Interest on the S110

Parameter Description Type
p26100[0…15] Traversing block position (LU) DINT
p26101[0…15] Traversing block velocity (1000 LU/min) FLOAT
p26102[0…15] Traversing block acceleration override FLOAT
p26103[0…15] Traversing block deceleration override FLOAT
p26104[0…15] Traversing block mode (bit field: continuation, absolute/relative) WORD
p26105[0…15] Traversing block Dwell time / continuation condition WORD

STEP 7 Pattern for Loading Traversing Block 0

// Load one traversal block into S110, then start it
// Place inside the same OB that feeds the MDI logic.

IF bLoadNextBlock AND NOT fbSinaPara.busy THEN
    fbSinaPara(
        execute       := TRUE,
        readWrite     := TRUE,
        hardwareId    := hwS110,                // PROFINET HW identifier
        parameterNumber := 26100,               // p26100
        index         := iBlockIndex,           // 0..15
        value         := lrTargetPosition,      // LU
        done          => bLoadPosDone,
        busy          => bLoadPosBusy,
        error         => bLoadPosError,
        status        => wLoadPosStatus);
    bLoadNextBlock := FALSE;
END_IF;

// Repeat with parameterNumber := 26101 (velocity), 26104 (mode), 26105 (continuation = CONTINUE_FLYING).
// After the final parameter returns done, toggle the "Activate traversing block" bit in STW1 (bit 6) of telegram 105.

Use p26104 mode bit 2 = relative and p26105 continuation = 2 (Continue-flying) for the same behavior the application already validates in Traversing Block mode.

Solution Path 3 — Pure Software Workaround with SINA_POS

If only MDI is allowed for project reasons, the SINA_POS block from the same library can keep the MDI words flowing every PLC cycle by writing the next setpoint while the current one is still in motion:

  1. Configure MDI mode for "continuous setpoint transfer" (drive parameter p2650 = 1 or equivalent in the active telegram).
  2. Drive the block's Position, Velocity, Acceleration inputs with a function that emits a new pair every PROFINET update.
  3. Hold ExecuteMode high (level-triggered), not rising-edge. EPOS will treat every update as a new target without halting if the next telegram is in the buffer.

Note that this only works while the axis is still in motion; if r2666 returns to zero, the drive commits to the previous target and the PLC must re-trigger the sequence.

Programming the S7-1200 OB35 Cyclic Interrupt

Place the MDI write in OB35 at 2 ms so the setpoint is broadcast more frequently than the axis can react:

// OB35, cycle 2 ms
IF iState = 0 THEN
    // Pre-stage next setpoint while current move runs
    lrNextTarget := lrTargets[iIndex];
    bMdiExecute  := TRUE;
    iState := 10;
END_IF;

CASE iState OF
    10:
        // Wait until drive has accepted and velocity > 0
        IF lrActualVel > 0.1 THEN
            iIndex := iIndex + 1;
            IF iIndex > 31 THEN iIndex := 0; END_IF;
            iState := 0;
        END_IF;
END_CASE;

Pair this with a hardware interrupt OB (OB40) wired to a fast input if the application also needs deterministic phase alignment to a sensor on the vertical axis.

Verification Procedure

  1. Open SINAMICS Startdrive and enable a 4-second trace on r2060, r2665, r2666, and r2526 (position actual).
  2. Run the original motion profile. The expected waveform is a near-trapezoid or sinusoidal velocity curve, not a stop-and-go pattern.
  3. Confirm in r2526 that the axis traverses every commanded position without dwelling on any of them for more than one PROFINET send-clock interval.
  4. Check the drive fault buffer for F07490 / F07491. Either is acceptable here only if the dwell is intentional; otherwise the build is incomplete.
  5. Reproduce the test at minimum, nominal, and maximum velocity. The optimization is only successful when r2666 remains non-zero throughout the move at maximum speed.

Edge Cases and Field-Proven Caveats

  • Vertical axes: the effective load torque changes sign when crossing the load point. With high jerk limits, the drive may momentarily overshoot and oscillate before the next setpoint; add a 1–2 % reserved distance in p26105 when using Sina_Para-loaded blocks.
  • Mixed PROFINET topologies: if the S110 sits on an external switch with a 100 Mbit uplink, IRT 1 ms is not available. Either drop to RT 4 ms or replace the switch with a 1 Gbit IRT-capable model (e.g. SCALANCE XC-100).
  • S7-1200 send clock mismatch: the S7-1200 default PROFINET send clock is 1 ms but the IO controller cycle can be higher in OB1. Always set the controller cycle to match the send clock.
  • Sina_Para on heavily loaded OB1: the acyclic write takes 10–30 ms. Never call it from the same OB that issues the cyclic MDI write; pre-load several blocks in OB100 startup or a low-priority cyclic OB.
  • Loss of bus: if PROFINET drops, the drive faults on F01910 with default settings. Configure p2044 for a graceful stop and p0854 for controlled coasting on vertical axes.

Related Drive Parameters Quick Reference

Parameter Default Effect on Continue-Flying
p2640 1 Setpoint acceptance edge; must be set to continuous acceptance for MDI level mode
p2650 0 MDI mode of operation selection
p2574 0 Jerk limit; raise to round corners
p2544 40 LU Positioning window; reduces false F07490 trips during fast MDI
p26105 0 Traversing block continuation: 0=END, 1=CONTINUE_FLYING, 2=...

FAQ

Why does my SINAMICS S110 MDI mode stop at each commanded position even though I selected continuous transfer?

Because MDI behaves like a single traversing block configured with continuation condition END. When r2666 drops to zero, EPOS commits to the current target. To remove the stop, either pre-stage the next setpoint in OB35 so the new MDI word is in the drive before r2666 reaches zero, or use Sina_Para to download a traversing block with continuation = CONTINUE_FLYING (1).

What is the difference between telegram 3 and telegram 105 for S7-1200 to S110 EPOS?

Telegram 3 is the universal 16-bit positioner profile; telegram 105 is the Siemens EPOS profile that exposes MDI position, velocity, and acceleration in a single PZD. For MDI continuous mode use telegram 105 with at least 8 PZD words.

Which parameters should I trace to confirm the PLC is too slow for MDI?

Trace r2060 (PLC setpoint), r2665 (EPOS position setpoint), and r2666 (EPOS velocity setpoint) at the position controller sample rate. If r2666 dips to zero between updates of r2060, the PLC cycle is the limiting factor.

Can Sina_Para load a new traversing block while the previous one is still running?

Yes. Sina_Para performs an acyclic DPV1 write that does not interfere with the cyclic drive control. The new block becomes active as soon as the EPOS interpreter reads it, typically within one position controller cycle. This is the supported way to switch targets without MDI dwell.

Is there a built-in continue-flying option for MDI in the SINAMICS S110?

No. MDI is a single-setpoint mode by design. Continue-flying is a property of the traversing block interpreter, not of MDI. The only way to obtain continue-flying behavior while keeping PLC-driven setpoints is to download traversing blocks via Sina_Para or use the SINA_POS block with continuous level-triggered execution.

Back to blog