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.
| 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.
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
- 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).
- Software: TIA Portal V17 or later with SINAMICS S120 GSDML support (or HSP installed for the relevant drive object).
- 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.
- 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.
- 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.
%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
- Open the drive device configuration: In the project tree, expand SINAMICS S120 -> Drive Object (for example, Servo_1) -> double-click Device configuration.
- 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.
- 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.
-
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. - 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.
-
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) andr0922[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.
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:
- In the PLC tag table or PLC data types editor, create a new PLC data type named
UDT_S120_Extension_750. - 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 - Create a global DB named
DB_Drive_Extensionand 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 - 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
ATstructure 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:
| 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;
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:
| 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:
- Use
RD_ADDRto read the process-image base address of a hardware identifier. - Use
PEEK_WORD/PEEK_DWORDwith 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/POKEbypasses 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:
- Place the drive device with the desired telegram and download the hardware configuration.
- Open an SCL FB and call
RD_ADDR(LADDR := HW_ID, RET_VAL := dw_Base);to retrieve the byte base address of the slot. - Use
PEEK_WORD(AREA := 16#81, DBNUMBER := 0, BYTEOFFSET := dw_Base);for each PZD word. - Convert the resulting WORD/DWORD using the same scaling formulas described in section 8.
PEEK/POKE implementation to a UDT-bound symbolic I/O area as soon as possible.11. Verification
-
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
ZSW1shows0x0C37(drive ready, no fault) and thatFAULT_CODEreads0. - 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").
-
LED status on CU320-2: The
RDYLED must be green; theBF(bus fault) LED must be off. A redRDYindicates a configuration error such as mismatched telegram length. -
Trace recording: Use the drive's trace function to record
r0027(current) and the value ofIAISTin parallel. Verify that the scaledIAISTmatches the trace amplitude after the scaling formula. -
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_CODEreports30002on the PLC within one PROFIdrive cycle.
12. Troubleshooting Matrix
| 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 SP3and 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_PARArather than parsingFAULT_CODEalone;FAULT_CODEonly reports the currently active fault, whiler0945[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.