SINAMICS V90 Telegram 111 vs 7/9 with SINA_POS and DriveLib

David Krause13 min read
Motion ControlSiemensTechnical Reference
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

Overview

The SINAMICS V90 servo drive family supports PROFINET-based cyclic communication using a fixed set of standard telegrams defined in the PROFIdrive profile. When paired with a SIMATIC controller (S7-1200, S7-1500, ET 200SP CPU), engineers typically reach for the SINA_POS function block from the SINAMICS STEP 7 Toolbox or the SINAMICS blocks within the SINAMICS DriveLib library to execute jog, homing, MDI (Manual Data Input) absolute/relative positioning, and traversing block moves.

A common integration pitfall is the assumption that any positioning telegram will work transparently with SINA_POS. Field experience shows that only Telegram 111 (and to a limited extent Telegram 110) carries the full set of position-control process data required by SINA_POS, including POS_STW1 and POS_STW2. Telegrams 7 and 9, although superficially "positioning" telegrams, omit those two control words and therefore cannot drive MDI absolute/relative moves or reference-point approach when used with SINA_POS in its default configuration.

This reference documents the underlying telegram structures, identifies the root cause of the failure modes, and provides the recommended path using DriveLib blocks for telegrams 7, 9, 110, 2, and 370.

V90 Telegram Architecture and PROFIdrive Compliance

The SINAMICS V90 PN (PROFINET variant) implements standard PROFIdrive telegrams as defined in IEC 61800-7-204. Each telegram is a fixed-length, fixed-structure container of process data words (PZD). Both directions are independently defined:

  • PZD OUT (setpoint): Controller → Drive (control words + setpoints)
  • PZD IN (actual value): Drive → Controller (status words + actual values)

The telegrams supported on V90 PN, per the V90 operating instructions, are summarized below.

Table 1 — Standard Telegrams Supported by SINAMICS V90 PN
Telegram Profile Function PZD OUT PZD IN
1 Speed control Basic speed setpoint 2 words 2 words
2 Speed control Speed setpoint, 32-bit actual speed 4 words 4 words
3 Speed control Speed setpoint + 1 encoder 5 words 5 words
5 Speed control with DSC Dynamic Servo Control 9 words 9 words
7 Positioning Basic positioning (no POS_STW) 4 words 4 words
9 Positioning with DSC Positioning with Dynamic Servo Control 12 words 12 words
110 Positioning Positioning with MDI (POS_STW1+2) 14 words 14 words
111 Positioning with DSC Positioning with MDI + DSC (POS_STW1+2) 16 words 16 words
370 Positioning Torque limiting + positioning 12 words 12 words
Important: Telegram availability depends on the V90 firmware version and the configured technology function (speed/torque control vs. positioning). The p0922 parameter in the drive selects the standard telegram; the controller's telegram configuration must match the drive side exactly, otherwise an F01910 PROFIsafe/PROFIdrive configuration error is raised.

Telegram Structure Comparison (7, 9, 110, 111)

The structural difference between Telegram 7/9 and Telegram 110/111 is the root cause of the integration problem with SINA_POS. Telegrams 7 and 9 contain only the general PROFIdrive state machine words (STW1, STW2) and basic setpoints; they do not carry the position-specific control words POS_STW1 and POS_STW2 that the basic positioner (EPOS) in the V90 requires for MDI modes, jogging modes, homing mode selection, and traversing block control.

Table 2 — PZD OUT (Controller → Drive) Word Layout
Word Telegram 7 Telegram 9 Telegram 110 Telegram 111
PZD1 STW1 STW1 STW1 STW1
PZD2 STW2 STW2 STW2 STW2
PZD3 NSOLL_B (low) NSOLL_B (low) POS_STW1 POS_STW1
PZD4 NSOLL_B (high) NSOLL_B (high) POS_STW2 POS_STW2
PZD5 — G1_STW STW (POS basic) STW (POS basic)
PZD6 — NSOLL (DSC) NSOLL_B NSOLL_B
PZD7 — XERR (low) XSOLL (low) XSOLL (low)
PZD8 — XERR (high) XSOLL (high) XSOLL (high)
PZD9 — — — XERR (low)
PZD10 — — — XERR (high)
PZD11-12 — — — KPC, padding

SINA_POS Block and Why It Requires Telegram 111

The SINA_POS block is a parameterized function block that abstracts PROFIdrive signaling for EPOS (Basic Positioner) operation on SINAMICS drives. It encapsulates the bit-level manipulation of the following process-data words:

  • STW1 — general drive state machine (ON/OFF1, OFF2, OFF3, enable, ramp-function generator, setpoint enable, fault acknowledge)
  • STW2 — supplementary control (DSC enable, controller enable, etc.)
  • POS_STW1 — positioning-specific control (traversing block selection, MDI mode, jog signals, referencing)
  • POS_STW2 — extended positioning control (signal source for jog/referencing, setpoint direction, MDI absolute/relative)
  • STW (POS basic) — EPOS operating mode (jog, MDI, homing, traversing block)

When SINA_POS is configured for Telegram 111, the block exchanges all of the above words. When the user changes the drive to Telegram 7 or 9, those POS_STW1 and POS_STW2 words simply do not exist on the wire. The HMI/STEP 7 input fields for "Operating mode," "Traversing block," "Position," "Velocity override," and "MDImode" write into words the drive never receives, leading to:

  • Jog and traversing block modes appear to work because those are triggered by combinations of bits in STW1/STW that are present in all telegrams.
  • Absolute and relative MDI moves silently fail because they require POS_STW1 bits 0–4 (MDI mode selection and type: absolute/relative) and POS_STW2 bit 4 (direction positive/negative, MDI setpoint acceptance edge).
  • Reference-point approach fails because the "Set reference point" / "Start referencing" trigger is encoded in POS_STW2 and not in STW2.
Engineering takeaway: Use SINA_POS only with Telegram 111 (recommended) or Telegram 110 if DSC is not desired. Do not retarget SINA_POS to Telegram 7 or 9 expecting the same behavior.

POS_STW1 and POS_STW2 Bit Definitions

Per the SINAMICS S120/S210 List Manual (entry ID 109763271, page 2109 and following), the bit fields of the two position control words are defined as follows.

Table 3 — POS_STW1 (Position Control Word 1)
Bit Designation Function
0 STW1.0 — Type of MDI positioning 0 = Absolute, 1 = Relative
1 STW1.1 — Direction of MDI positioning (positive) 0 = Negative, 1 = Positive
2 STW1.2 — Continuous mode setpoint acceptance 0 = Continuous, 1 = Edge-triggered (single set)
3 STW1.3 — Setpoint acceptance 0/1 → Latches XSOLL into active position setpoint
4 STW1.4 — MDI mode (selection bit) Combined with bits 5, 6 selects MDI mode class
5 STW1.5 — MDI mode (selection bit) See above
6 STW1.6 — MDI mode (selection bit) See above
7 STW1.7 — Reserved —
8 STW1.8 — Traversing block selection bit 0 Selects traversing block number (low bit)
9 STW1.9 — Traversing block selection bit 1 —
10 STW1.10 — Traversing block selection bit 2 —
11 STW1.11 — Traversing block selection bit 3 —
12 STW1.12 — Reserved —
13 STW1.13 — Reserved —
14 STW1.14 — Operating mode 1 (lookup-table source) Combined with bit 15 selects jog/homing/MDI/traversing
15 STW1.15 — Operating mode 2 —
Table 4 — POS_STW2 (Position Control Word 2)
Bit Designation Function
0 STW2.0 — Jog 1 0 = OFF, 1 = ON (CW jog)
1 STW2.1 — Jog 2 0 = OFF, 1 = ON (CCW jog)
2 STW2.2 — Reference point set 0 → 1: Define actual position as reference
3 STW2.3 — Reference cam active Indicates reference cam is engaged
4 STW2.4 — MDI mode direction (absolute / relative) Combined with POS_STW1 bits
5 STW2.5 — MDI setpoint selection —
6 STW2.6 — MDI setup mode Set up mode (memorize intermediate values)
7 STW2.7 — Reserved —
8 STW2.8 — Jog bit 0 / Ref mode selection —
9 STW2.9 — Jog bit 1 / Ref mode selection —
10–11 STW2.10–11 — Ref mode bits Reference-point approach mode selector
12–15 STW2.12–15 — Reserved —

DriveLib Library as the Alternative for Telegram 7 / 9 / 110 / 2 / 370

For applications where the application profile (e.g., positioning by external controller computing position loops) requires Telegram 7 or 9, or where torque-limited positioning (Telegram 370) is used, Siemens recommends the SINAMICS DriveLib block library for TIA Portal. DriveLib (entry ID 109475044) provides FB/FC blocks for each supported telegram, exposing the raw PZD slots so the application can manage every bit directly.

Table 5 — Available DriveLib Blocks by Telegram
Telegram DriveLib FB/FC Name Use Case
2 LAcycCtrl_2 / LAcycCtrlBase_2 Speed control with 32-bit actual speed
7 LAcycCtrl_7 Positioning, basic (no POS_STW)
9 LAcycCtrl_9 Positioning with DSC
110 LAcycCtrl_110 Positioning with MDI (POS_STW1+2)
111 LAcycCtrl_111 Positioning with MDI + DSC
370 LAcycCtrl_370 Positioning with torque limiting
1, 3, 5 LAcycCtrl_1 / _3 / _5 Speed control variants

DriveLib blocks handle PROFIsafe/PROFIdrive state machine compliance (per the PROFIdrive profile V4.2) and provide typed I/O for each PZD slot. The user constructs the application logic by either:

  1. Writing a custom application layer that bit-packs the positioning control word (POS_STW1 / POS_STW2) even when the drive is configured for Telegram 7 or 9 — not recommended, because the data is not transmitted over PROFINET.
  2. Reverting to Telegram 110/111 and using the dedicated DriveLib block (recommended), which exposes POS_STW1 and POS_STW2 as direct I/O.
  3. Using Telegram 7/9 for external-controller position loops (drive in "speed control with encoder feedback" mode) and computing trajectory in the S7 PLC, then using NSOLL_B as the speed setpoint. This is not basic positioner (EPOS) mode; it is an open PROFINET speed profile.
Recommended path: If MDI absolute/relative/homing moves are required, change the drive telegram to 111 and use either SINA_POS (preferred for EPOS-only machines) or DriveLib block LAcycCtrl_111 (preferred for multi-axis mixed operation).

Step-by-Step: Switching V90 to Telegram 111 for SINA_POS

  1. Open the V90 project in TIA Portal and select the V90 PN device in the project tree.
  2. Navigate to Device View → PROFINET interface → Telegram configuration. Add Telegram 111 in slot 0 / 1 as required. Remove any other telegram; only one standard telegram may be active at a time.
  3. Open the drive's parameter view (STARTER/SINAMICS Startdrive) and set p0922 = 111 (standard telegram 111). Save to ROM.
  4. Power-cycle the drive if p0922 is changed at runtime, or perform a "Copy RAM to ROM" then a restart for online change to take effect.
  5. Insert SINA_POS from the SINAMICS blocks library in your S7 program. Wire the HW identifier, IO data, and enable inputs per the block's data sheet.
  6. Compile and download the S7 project. Go online and observe status word bits; ZSW1.0 (Ready to switch on), ZSW1.1 (Ready), ZSW1.2 (Operation enabled) must all be 1 before motion is permitted.
  7. Test jog first (ModeSelect = 0 or 1). Confirm axis moves in both directions.
  8. Test homing (ModeSelect = 6). Confirm reference point is reached and ZSW2.4 (referenced) = 1 after completion.
  9. Test MDI absolute and relative (ModeSelect = 5). Write Position, Velocity, MDImode inputs and pulse the Execute input.
  10. Test traversing blocks (ModeSelect = 7). Configure blocks in V90 parameters p26xxx and select the active block via the TraversingBlock input.

Verification Checklist

Table 6 — Post-Configuration Verification Matrix
Check Expected Result Diagnostic Tool
PROFINET connection established No F01910 / F08501 fault Drive fault buffer (r0947)
Telegram configuration matches controller p0922 = 111, controller telegram slot = 111 Startdrive / Web server
SINA_POS Enable = TRUE ZSW1.0, 1, 2 all set Watch table on ZSW1
Jog mode functional Axis moves on Jog1/Jog2 input rising edge Watch table; motion check
Homing completes ZSW2.4 = 1 after homing Watch table
MDI absolute/relative functional Position reached within tolerance window Compare XIST_A / XSOLL
No following error F07452 not active Fault buffer + r2561 monitoring
No positioning error F07451 not active Fault buffer

Troubleshooting Matrix

Table 7 — Common Telegram-Mismatch Faults and Resolutions
Symptom Likely Cause Resolution
F01910 — PROFIdrive telegram mismatch Controller telegram ≠ p0922 Match both sides to Telegram 111; restart drive
F08501 — PROFINET communication fault Cable/connector/PLC in stop Check link LED, restart CPU if needed
Jog works, MDI absolute/relative does not Telegram 7/9 selected; no POS_STW1/POS_STW2 Change to Telegram 111
Homing starts but never completes Reference cam input not wired to POS_STW2 Switch to 111; verify cam signal at p29652
Traversing block jumps to wrong block POS_STW1.8–11 not transmitted (Telegram 7/9) Switch to Telegram 111
Following error F07452 during fast moves DSC disabled (no XERR/KPC) Use Telegram 111 (DSC active) or reduce dynamics
SINA_POS reports no fault but no motion ModeSelect input never changes from 0 PLC program logic; verify input mapping
Drive powers up in T telegram but PLC sees fault p2079 (PROFINET diagnostics) threshold tripped Check r2079[0..3]; restart if necessary
MDI position jumps on every Execute pulse POS_STW2.6 (setup mode) incorrectly set Clear bit 6 in DriveLib-based custom block
Positioning fails after long uptime Cyclic communication timeout Check PROFINET watchdog (p0922 + p2042); reduce cycle time if needed

DriveLib Implementation Notes (Telegram 7 / 9 Path)

If for engineering reasons the application must remain on Telegram 7 or 9 (e.g., controller computes the closed position loop and only sends speed/acceleration profiles to the drive), the implementation pattern with DriveLib is as follows:

  1. Import SINAMICS DriveLib V15.0 or later into TIA Portal from the Siemens support page.
  2. Place the LAcycCtrl_7 or LAcycCtrl_9 FB in the cyclic OB (e.g., OB1 or OB91 with the configured send clock).
  3. Drive the input STW1 using a standard PROFIdrive state-machine FB or write each bit manually:
    // PROFIdrive state machine bits — STW1 (PZD1 OUT)
    STW1_ON_OFF1   := TRUE;   // Bit 0
    STW1_OFF2      := TRUE;   // Bit 1 — negated: TRUE = no OFF2
    STW1_OFF3      := TRUE;   // Bit 2 — negated: TRUE = no OFF3
    STW1_INHIBIT   := FALSE;  // Bit 3 — pulse enable
    STW1_HLG       := FALSE;  // Bit 4 — ramp-function generator enable
    STW1_RFG_STOP  := FALSE;  // Bit 5 — ramp stop
    STW1_SETPOINT  := TRUE;   // Bit 6 — setpoint enable
    STW1_ACK       := FALSE;  // Bit 7 — fault acknowledge (rising edge)
    
  4. Drive the NSOLL_B (PZD3–4 OUT) with the speed setpoint computed by your controller's position loop. Standardize units to 0x4000 0000 = 100 % rated speed per PROFIdrive profile.
  5. Read back ZSW1 and ZIST_B (PZD3–4 IN) for status monitoring and actual speed feedback.
  6. Implement the position loop in S7: compute position error → speed command, applying Kv (loop gain), feed-forward, and any velocity/acceleration limits.
Engineering caution: When using Telegram 7/9 with DriveLib, you are not using the V90 internal EPOS (basic positioner). Parameters p26xxx (traversing blocks), p2596 (MDI modes), and p2614 (setpoint source selection) become irrelevant. You instead use p29003 = 0 (speed control) or 1 (torque control) modes, and the drive behaves as a pure servo amplifier with setpoint input.

Cross-Reference to SINAMICS Documentation

The official reference for the telegram structure is the SINAMICS S120/S150 List Manual (entry ID 109763271). Specifically:

  • Page 2074: Telegram 7 and Telegram 9 structure diagrams
  • Page 2076: Telegram 110 and Telegram 111 structure diagrams
  • Page 2109f: Bit-level definitions of POS_STW1 and POS_STW2 (and the matching status words POS_ZSW1, POS_ZSW2)

The SINAMICS DriveLib entry (ID 109475044) contains download links for the TIA Portal library, example projects for each supported telegram, and documentation of the FB/FC inputs.

Frequently Asked Questions

Why does Telegram 7 work for jog/homing but not MDI absolute/relative moves?

Telegram 7 carries STW1, STW2, and NSOLL_B, but does not include POS_STW1 or POS_STW2. MDI absolute/relative moves require bit fields in POS_STW1 (bits 0, 1, 4–6) and POS_STW2 (bit 4) to select mode and direction. Without these words, the drive has no information about the requested MDI mode. Jog works because it is triggered through STW1/STW2 bits that are present in all positioning telegrams.

Which telegram should I select on the SINAMICS V90 when using SINA_POS?

Use Telegram 111. It is the only standard telegram that includes POS_STW1, POS_STW2, STW (POS basic), XSOLL, and the DSC fields (XERR, KPC) required for full SINA_POS operation. Telegram 110 works without DSC if your application does not need Dynamic Servo Control.

Can I keep Telegram 7 or 9 and still do absolute positioning with SINA_POS?

No. The POS_STW1 and POS_STW2 words are not transmitted in Telegram 7 or 9, so no SINA_POS variant — neither the standard one nor a custom rebuild — can drive EPOS MDI absolute/relative moves through those telegrams. Switch to Telegram 111 or use the DriveLib block LAcycCtrl_7 / LAcycCtrl_9 in an external position-loop architecture where the controller computes the position.

What is DriveLib and where do I download it?

SINAMICS DriveLib is a TIA Portal block library providing dedicated FB/FC wrappers for each supported standard telegram (1, 2, 3, 5, 7, 9, 110, 111, 370). Download and documentation are available via Siemens entry ID 109475044. DriveLib is recommended over custom block development when the drive's standard telegram does not match SINA_POS assumptions.

The drive throws F01910 after I change p0922 to 111 — what is wrong?

F01910 indicates a PROFINET/PROFIdrive configuration mismatch: the controller's telegram slot assignment does not match the drive's p0922 value. Open the PLC's device configuration, add Telegram 111 to the slot used for the drive (typically slot 0 or 1), remove any other standard telegram, recompile, and re-download to the PLC. Power-cycle the drive after p0922 is changed.

Back to blog