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.
| 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 |
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.
| 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/STWthat are present in all telegrams. -
Absolute and relative MDI moves silently fail because they require
POS_STW1bits 0–4 (MDI mode selection and type: absolute/relative) andPOS_STW2bit 4 (direction positive/negative, MDI setpoint acceptance edge). -
Reference-point approach fails because the "Set reference point" / "Start referencing" trigger is encoded in
POS_STW2and not inSTW2.
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.
| 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 | — |
| 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.
| 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:
- 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. - Reverting to Telegram 110/111 and using the dedicated DriveLib block (recommended), which exposes
POS_STW1andPOS_STW2as direct I/O. - 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_Bas the speed setpoint. This is not basic positioner (EPOS) mode; it is an open PROFINET speed profile.
Step-by-Step: Switching V90 to Telegram 111 for SINA_POS
- Open the V90 project in TIA Portal and select the V90 PN device in the project tree.
- 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.
-
Open the drive's parameter view (STARTER/SINAMICS Startdrive) and set
p0922 = 111(standard telegram 111). Save to ROM. - 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.
- 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.
-
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. - Test jog first (ModeSelect = 0 or 1). Confirm axis moves in both directions.
-
Test homing (ModeSelect = 6). Confirm reference point is reached and
ZSW2.4(referenced) = 1 after completion. -
Test MDI absolute and relative (ModeSelect = 5). Write
Position,Velocity,MDImodeinputs and pulse theExecuteinput. -
Test traversing blocks (ModeSelect = 7). Configure blocks in V90 parameters p26xxx and select the active block via the
TraversingBlockinput.
Verification Checklist
| 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
| 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:
- Import SINAMICS DriveLib V15.0 or later into TIA Portal from the Siemens support page.
- Place the
LAcycCtrl_7orLAcycCtrl_9FB in the cyclic OB (e.g., OB1 or OB91 with the configured send clock). - Drive the input
STW1using 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) - 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. - Read back
ZSW1andZIST_B(PZD3–4 IN) for status monitoring and actual speed feedback. - Implement the position loop in S7: compute position error → speed command, applying Kv (loop gain), feed-forward, and any velocity/acceleration limits.
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.