Reading SINAMICS S120 Telegram Extensions in TIA Portal

David Krause15 min read
SiemensTIA PortalTutorial / 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

Reading SINAMICS S120 Telegram Extensions in TIA Portal

SINAMICS S120 drives expose their process data over PROFIdrive telegrams. The base telegram (typically 1, 2, 3, 5, 6, 7, 9, 110, or 111) carries control and status words plus the speed setpoint and actual value. A telegram extension appends extra PZD (Process Data Words) for additional process variables such as actual current, torque, fault code, warning code, and the contents of the fault memory. Reading these extensions correctly on an S7-1200 or S7-1500 controller is one of the most common engineering tasks in a Sinamics commissioning project.

This reference walks through the architecture, configuration, and runtime access of telegram extensions using TIA Portal V17 or later, the symbolic I/O image, and UDTs (User-Defined Data Types). It also documents the legacy RD_ADDR / PEEK approach, explains when it remains valid, and shows how to scale engineering values such as smoothed actual current.

1. PROFIdrive Telegram Architecture on SINAMICS S120

Every SINAMICS S120 Control Unit (CU320-2, CU310-2, CU305, CU250S, etc.) processes its cyclic data exchange through one or more PROFIdrive telegrams. A telegram is a fixed list of PZD words; the receive direction (PLC -> Drive) contains setpoints and control words, while the send direction (Drive -> PLC) contains actual values and status words.

SINAMICS S120 standard PROFIdrive telegrams (PROFIdrive profile V4.2)
Telegram Receive PZD (PLC -> Drive) Send PZD (Drive -> PLC) Typical Use
1 STW1, NSOLL_B ZSW1, NIST_B Speed control, 32-bit speed
2 STW1, NSOLL_A ZSW1, NIST_A Speed control, 16-bit speed
3 STW1, NSOLL_B, G1_STW ZSW1, NIST_B, G1_ZSW Speed control + 1 encoder
4 STW1, NSOLL_B, G1_STW, G2_STW ZSW1, NIST_B, G1_ZSW, G2_ZSW Speed control + 2 encoders
5 STW1, NSOLL_B ZSW1, NIST_B Speed control with DSC
6 STW1, NSOLL_B, G1_STW ZSW1, NIST_B, G1_ZSW DSC + 1 encoder
7 STW1, NSOLL_B, G1_STW, G2_STW ZSW1, NIST_B, G1_ZSW, G2_ZSW DSC + 2 encoders
9 STW1, NSOLL_B, G1_STW, G2_STW ZSW1, NIST_B, G1_ZSW, G2_ZSW Position control with DSC
110 STW1, NSOLL_B, STW2 ZSW1, NIST_B, ZSW2, MELDW Universal, speed + extended status
111 STW1, NSOLL_B, STW2, G1_STW ZSW1, NIST_B, ZSW2, MELDW, G1_ZSW Universal, with encoder 1
116 STW1, NSOLL_B, STW2 ZSW1, NIST_B, ZSW2, MELDW, IAIST, ITIST Universal with current and torque
700 STW1, NSOLL_B ZSW1, NIST_B, MELDW, FAULT_CODE, WARN_CODE Add-on to telegram 1
701 STW1, NSOLL_B, G1_STW ZSW1, NIST_B, G1_ZSW, MELDW, FAULT_CODE, WARN_CODE Add-on to telegram 3
750 STW1, NSOLL_B, STW2 ZSW1, NIST_B, ZSW2, MELDW, FAULT_CODE, WARN_CODE, IAIST, ITIST, WARN_COD2, FAULT_COD2 Standard extension for S120
999 Freely configurable up to 32 PZD each direction Freely configurable up to 32 PZD each direction Free interconnection via BICO

Siemens documents the entire telegram matrix in the SINAMICS S120/S150 List Manual, function block diagram 2410 and the PROFIdrive Profile V4.2 specification.

2. What a Telegram Extension Adds

An extension is a separate telegram appended after the base telegram in the drive's PROFIdrive configuration. The base telegram stays untouched, and the extension provides additional send/receive words without modifying the original signal map. For SINAMICS S120 firmware V5.x and V6.x, common extensions are:

  • Telegram 700: Adds MELDW, FAULT_CODE, WARN_CODE.
  • Telegram 701: Adds encoder 1 status, MELDW, fault and warning codes.
  • Telegram 750: Adds MELDW, FAULT_CODE, WARN_CODE, IAIST, ITIST, plus the secondary fault and warning words.
  • Telegram 999: Free BICO interconnection; the engineer wires any parameter (r-class) to a PZD slot.
Engineering values are normalized. Values such as IAIST (actual current) and ITIST (actual torque) are transmitted as normalized integers. They must be scaled using the drive's reference variables (p2000 reference speed, p2002 reference current, p2003 reference torque) before they represent engineering units.

3. Prerequisites

  1. Hardware: SIMOTION or SIMATIC S7-1200 (firmware V4.4 or later) or S7-1500 (firmware V2.0 or later) with PROFINET or PROFIBUS interface to a SINAMICS S120 with CU320-2 (firmware V5.2 or later, recommended V6.x).
  2. Software: TIA Portal V17 or later with SINAMICS S120 GSDML support (or HSP installed for the relevant drive object).
  3. Drive commissioning tool: Either TIA Portal's integrated Startdrive commissioning, or STARTER/SIMOTION SCOUT for offline parameterization. The Startdrive commissioning plugin is the preferred tool in TIA Portal V18 onward.
  4. Project structure: SINAMICS S120 device already added to the TIA Portal project tree, with a configured PROFINET/PROFIBUS connection to the controller and at least one DO (Drive Object) such as a Servo or Vector axis.
  5. Base telegram already in operation: Telegram 1, 2, 3, 5, 6, 7, 9, or 110 active on the drive and tested for basic speed control.

4. Hardware ID Concept in TIA Portal

Every telegram slot in a SINAMICS S120 drive object is identified inside the S7 controller by a Hardware Identifier (HW ID). The HW ID is an integer assigned by TIA Portal when the drive is added and the telegram slots are configured. It is used by:

  • GETIO / SETIO (read/write the entire I/O area)
  • GETIO_PART / SETIO_PART (read/write a contiguous subset)
  • DPNRM_DG (legacy diagnostic reader for PROFIBUS DP)

Each telegram produces two HW IDs in the device configuration: one for the receive direction (inputs from the perspective of the drive, outputs from the PLC) and one for the send direction (outputs from the drive, inputs to the PLC). When you append an extension, two additional HW IDs appear.

Best practice: Use symbolic I/O addressing (%IW or symbolic tag names) rather than HW IDs for the cyclic process data. Reserve HW-ID-based access for non-cyclic situations or for systems where TIA Portal does not expose the symbolic name.

5. Step-by-Step: Configuring the Telegram Extension in TIA Portal

  1. Open the drive device configuration: In the project tree, expand SINAMICS S120 -> Drive Object (for example, Servo_1) -> double-click Device configuration.
  2. Open the telegram properties: In the device view, select the PROFINET/PROFIBUS interface submodule on the drive, then select the current Telegram slot (e.g., Telegram 1). The properties dialog shows the assigned I/O addresses.
  3. Add the extension slot: Click on an empty slot directly below the existing telegram. From the catalog on the right, drag Telegram 750 (or 700/701 depending on the signals you need) onto the slot. The slot is added in the same DO; the HW ID for the extension is generated automatically.
  4. Adjust the I/O addresses: TIA Portal assigns default addresses such as %ID230. Click the new telegram slot and edit the start address so the extension data sits contiguously with the base telegram (for example, append immediately after the last PZD of the base telegram). This produces a single, contiguous block of process data that is easier to map into a UDT.
  5. Compile and download: Compile the S7 project (Hardware and Software) and download to the controller. The drive's telegram configuration is downloaded via PROFINET/PROFIBUS using the Startdrive commissioning.
  6. Verify the drive accepts the new telegram: In online mode on the drive, parameter r0922 (PROFIdrive PZD telegram selection) must list both telegrams. For example: r0922[0] = 1 (base) and r0922[1] = 750 (extension).

6. Reading Telegram Data via Symbolic I/O

On an S7-1200 (firmware V4.4+) and S7-1500, PROFIdrive process data is mapped into the process image. The I/O symbols defined in the device configuration appear in the PLC tag table with fully qualified symbolic names such as:

// Symbolic access (TIA Portal V18 example)
"Servo_1".DriveIO.Telegram_1.STW1    // Word 0, receive
"Servo_1".DriveIO.Telegram_1.NSOLL_B  // Word 1-2, receive (DWORD)
"Servo_1".Extension_750.MELDW        // Status word extension
"Servo_1".Extension_750.FAULT_CODE   // Current fault number
"Servo_1".Extension_750.WARN_CODE    // Current warning number
"Servo_1".Extension_750.IAIST        // Actual current (normalized)
"Servo_1".Extension_750.ITIST        // Actual torque (normalized)

These tags are updated every PROFIdrive cycle (typically 1 ms, 2 ms, or 4 ms depending on the configured send clock). No instruction is required to read them; the controller writes the symbol value from the process image into the program variable each OB1 scan.

Process image consistency: Always access cyclic drive data from a time-of-day or cyclic OB that runs at or above the PROFIdrive send-clock rate. Reading the same data from OB1 and OB35 may yield inconsistent snapshots if the OB35 period is greater than the send clock.

7. Creating a UDT for the Telegram Extension

A UDT (User-Defined Data Type) gives the extension a strongly typed structure. Build one in TIA Portal as follows:

  1. In the PLC tag table or PLC data types editor, create a new PLC data type named UDT_S120_Extension_750.
  2. Add fields in the order of the telegram words (send direction):
    TYPE "UDT_S120_Extension_750"
    VERSION : 0.1
      STRUCT
        MELDW      : WORD;   // NAMUR message word, bits per PROFIdrive V4.2
        FAULT_CODE : WORD;   // Current fault number (r2132 for active fault)
        WARN_CODE  : WORD;   // Current warning number (r2122 for active warning)
        IAIST      : INT;    // Smoothed actual current, normalized
        ITIST      : INT;    // Actual torque, normalized
        FAULT_COD2 : WORD;   // Secondary fault
        WARN_COD2  : WORD;   // Secondary warning
      END_STRUCT;
    END_TYPE
    
  3. Create a global DB named DB_Drive_Extension and declare a variable of the new type:
    DATA_BLOCK "DB_Drive_Extension"
    VAR
      Servo1Ext : "UDT_S120_Extension_750";   // Maps to "Servo_1".Extension_750
    END_VAR
    BEGIN
    END_DATA_BLOCK
    
  4. In the same DB, declare an AT (absolute) view that overlays the symbolic I/O addresses of the telegram extension. TIA Portal's "Drag & Drop" between the device I/O view and the DB-AT view generates the matching AT structure automatically.

Once the DB-AT view is bound, every OB cycle updates the UDT directly from the process image. The application code reads DB_Drive_Extension.Servo1Ext.IAIST and scales it to engineering units (see next section).

8. Scaling Engineering Values

The SINAMICS S120 reference variables are parameterized as follows:

Reference variables for SINAMICS S120 telegram scaling
Drive parameter Meaning Default (vector)
p2000 Reference speed Reference speed = p2000 = rated speed (r0333)
p2002 Reference current Reference current = p2002 = rated current (r0305)
p2003 Reference torque Reference torque = p2003 = rated torque (r0334)

PROFIdrive normalizes all process values to a 16-bit signed integer where 100 % equals 16384 (0x4000). The conversion formulas are:

// S7-1500 SCL example
// Input: normalized value (INT) from telegram
// Output: engineering value (REAL)

"DB_Drive_Extension".Servo1Ext.AI_Scaled_Current_A :=
    INT_TO_REAL("DB_Drive_Extension".Servo1Ext.IAIST)
    / 16384.0 * "DriveParameter".p2002;

"DB_Drive_Extension".Servo1Ext.AI_Scaled_Torque_Nm :=
    INT_TO_REAL("DB_Drive_Extension".Servo1Ext.ITIST)
    / 16384.0 * "DriveParameter".p2003;
Sign convention. IAIST and ITIST are signed values; positive torque corresponds to motoring in the drive's positive direction of rotation. Verify against r0027 (smoothed absolute current) and r0031 (actual torque) on the drive's online parameter view.

For the fault and warning codes, no scaling is required: they are the direct fault and warning numbers from the SINAMICS fault buffer. FAULT_CODE maps to r2132 (current fault) and WARN_CODE maps to r2122 (current warning). Cross-reference these numbers against the SINAMICS S120 List Manual, chapter "Faults and Warnings".

9. Reading the Fault Buffer

The PROFIdrive fault buffer is read non-cyclically over the same PROFINET/PROFIBUS connection. Two methods are available:

9.1. Acyclic parameter access via RDREC / WRREC

Each SINAMICS drive object exposes a standard PROFIdrive parameter channel at slot 0 / subslot 1 with index ranges 0x0000-0x0FFF (read request) and 0x1000-0x1FFF (write request). The most useful parameters for fault buffer access are:

Selected SINAMICS S120 fault buffer parameters
Parameter Index Meaning
r0945[0..7] 0945 Fault code history (8 entries)
r0946[0..7] 0946 Fault time, days
r0947[0..7] 0947 Fault time, milliseconds
r0948[0..7] 0948 Fault value
r2109[0..7] 2109 Warning code history

Use the SINAMICS S120/S150 List Manual to look up the meaning of every fault code.

9.2. Using the standard FB for acyclic parameter access

For S7-1500, Siemens publishes example FB SINA_PARA (also called SINAMICS_PARAMETER) on the Siemens support site. The function block reads or writes a single parameter by index and element, using RDREC / WRREC on the drive's parameter channel. Download the latest version:

Typical call:

// SCL: read r0945[0] (most recent fault code)
"SINA_PARA_DB".REQ      := TRUE;
"SINA_PARA_DB".ID       := HW_Drive_Param_Channel;  // HW ID of parameter channel
"SINA_PARA_DB".PARAMETER := 945;                     // r0945
"SINA_PARA_DB".INDEX     := 0;                       // r0945[0]
"SINA_PARA_DB".RD_WR     := FALSE;                   // read
"SINA_PARA_DB".VALUE     := 0;
// Done / Busy / Error checked in "SINA_PARA_DB".DONE / .BUSY / .ERROR

10. Alternative: RD_ADDR and PEEK/POKE

Older Siemens documentation, and many third-party examples, demonstrates reading telegram data using the RD_ADDR instruction combined with PEEK / POKE. The recipe is:

  1. Use RD_ADDR to read the process-image base address of a hardware identifier.
  2. Use PEEK_WORD / PEEK_DWORD with the resulting base address to fetch each PZD.

Siemens explicitly discourages this approach in newer manuals because:

  • The base address can change when TIA Portal re-assigns I/O slots.
  • The symbolic I/O name (which TIA Portal also generates automatically) is far more robust and is consistent with the rest of the project.
  • Using PEEK/POKE bypasses type checks and may produce silent access violations.

Use RD_ADDR only when:

  • The drive object was added manually via GSDML without generating symbolic names.
  • A legacy project predates the symbolic-I/O feature of the controller firmware.
  • An OEM environment hides the symbolic name from the user (rare; specific migration scenarios).

If RD_ADDR/PEEK is unavoidable, follow the steps in the legacy documentation:

  1. Place the drive device with the desired telegram and download the hardware configuration.
  2. Open an SCL FB and call RD_ADDR(LADDR := HW_ID, RET_VAL := dw_Base); to retrieve the byte base address of the slot.
  3. Use PEEK_WORD(AREA := 16#81, DBNUMBER := 0, BYTEOFFSET := dw_Base); for each PZD word.
  4. Convert the resulting WORD/DWORD using the same scaling formulas described in section 8.
Recommendation: Modern TIA Portal versions support symbolic I/O for all SINAMICS telegrams on S7-1200 V4.4+ and S7-1500 V2.0+. Migrate the legacy PEEK/POKE implementation to a UDT-bound symbolic I/O area as soon as possible.

11. Verification

  1. Watch table: Open a watch table in TIA Portal, drag the symbolic tags from Servo_1 -> DriveIO -> Telegram_1 and Extension_750. Enable monitoring and verify that ZSW1 shows 0x0C37 (drive ready, no fault) and that FAULT_CODE reads 0.
  2. Online diagnosis on the drive: In Startdrive's online view, navigate to Diagnosis -> PROFIdrive diagnostics. Verify that the drive reports the configured telegram number (for example, "Telegram 1 + Telegram 750").
  3. LED status on CU320-2: The RDY LED must be green; the BF (bus fault) LED must be off. A red RDY indicates a configuration error such as mismatched telegram length.
  4. Trace recording: Use the drive's trace function to record r0027 (current) and the value of IAIST in parallel. Verify that the scaled IAIST matches the trace amplitude after the scaling formula.
  5. Fault injection: Force a fault via the drive's control panel (for example, trigger F30002 DC-link overvoltage by spinning the motor with no load and applying negative torque). Verify that FAULT_CODE reports 30002 on the PLC within one PROFIdrive cycle.

12. Troubleshooting Matrix

Common telegram extension faults
Symptom Probable cause Remediation
Extension PZD always zero Telegram 750 not active in drive (r0922 shows only base) Re-run Startdrive commissioning and ensure the extension slot is downloaded to the drive.
Fault F08501 on the drive PROFINET/PROFIBUS telegram length mismatch between drive and controller Verify slot order in TIA Portal device view matches the drive's configuration.
PLC reports "Hardware fault" on extension input I/O address conflict; another module occupies the same address range Re-assign the start address so it does not collide; recompile and re-download.
FAULT_CODE never matches the drive's online fault Extension is wired to a non-real-time register Confirm the BICO interconnection in the drive (for Telegram 999) or use the predefined Telegram 750.
Scale factor mismatch p2000, p2002, p2003 changed after project download Re-read p2000/p2002/p2003 at runtime via SINA_PARA and update the scaling DB.
Symbolic name missing in PLC tag table Drive device added without "Create symbolic name" option Right-click the device in the project tree, choose "Update device", then enable "Create symbolic I/O names" and recompile.

13. Notes on Firmware and Tooling Compatibility

  • SINAMICS S120 firmware V5.x: Standard extensions 700, 701, 750 are supported. SINAMICS V5.2 SP3 and later expose the full Telegram 750 structure.
  • SINAMICS S120 firmware V6.x: Same extensions; additional safety telemetry is available in Telegram 902 (PROFIsafe extension) when the drive is configured for safety.
  • TIA Portal V16 and earlier: Use the Startdrive HSP for SINAMICS S120 V5.x. Telegram 750 is fully supported.
  • TIA Portal V17/V18/V19: Same functionality; Startdrive commissioning plugin is integrated. Symbolic I/O naming behavior is unchanged.
  • S7-1200 firmware V4.4+: Required for symbolic I/O access to PROFINET drive telegrams.
  • S7-1500 firmware V2.0+: Symbolic I/O plus enhanced access via GETIO_PART / SETIO_PART.

14. Best Practices Summary

  • Always use Telegram 750 (or 700/701) instead of Telegram 999 unless a unique signal mapping is absolutely required; the predefined telegrams are documented and the BICO wiring is automatic.
  • Assign the extension I/O addresses contiguously with the base telegram so the UDT overlay covers a single, uninterrupted range.
  • Create a UDT for every drive's extension. This keeps the program readable and makes scale-factor changes single-source updates.
  • Read the fault buffer via SINA_PARA rather than parsing FAULT_CODE alone; FAULT_CODE only reports the currently active fault, while r0945[0..7] exposes the full history.
  • Re-read p2000/p2002/p2003 at runtime if you allow the drive's reference parameters to be re-parameterized from the HMI.
  • Reserve one telegram extension for safety if the drive is PROFIsafe-enabled; Telegram 902 is the recommended choice for SINAMICS S120 with safety integrated.

Which Siemens manuals describe the telegram extension in detail?

The SINAMICS S120/S150 List Manual (function diagram 2410) lists every PROFIdrive telegram and its PZD contents. The SINAMICS S120 Commissioning Manual covers configuring Telegram 750 in Startdrive, and the S7-1500 / S7-1200 system manuals describe symbolic I/O access.

Do I really need RD_ADDR and PEEK to read the telegram extension?

No. S7-1200 firmware V4.4 or later and S7-1500 firmware V2.0 or later expose the telegram PZD as symbolic I/O names. Create a UDT, bind it to the process image of the extension, and read it directly from the OB. Use RD_ADDR only when the symbolic name is unavailable.

How is the actual current (IAIST) scaled to amperes?

IAIST is transmitted as a normalized 16-bit value where 16384 equals 100 percent. Multiply IAIST by p2002 (reference current) and divide by 16384 to obtain engineering amperes. p2002 is initialized to the rated motor current (r0305) on first commissioning.

What is the difference between FAULT_CODE and r2132?

FAULT_CODE in the telegram extension is the real-time view of the active fault code, mapped directly to r2132. The full history of past faults is available only by acyclic parameter read of r0945[0..7] via SINA_PARA. Use FAULT_CODE for alarms, r0945 for diagnostics.

Can I append more than one extension to the same drive object?

Yes. Up to four telegrams can be assigned in series on a single SINAMICS drive object, but be aware of the per-CU PZD budget (typically 32 words per direction). For most projects, one base telegram plus Telegram 750 covers all standard diagnostics.

Back to blog