Overview: Telegram Types and the SINAMICS G120D
The SINAMICS G120D is a distributed inverter in the SINAMICS family, designed for cabinet-free installation close to the motor and connected over PROFINET or PROFIBUS. Every drive on a PROFINET/PROFIBUS segment exchanges its process data with the controller (S7-1200, S7-1500, ET 200, or third-party PLC) using a fixed-length process-data block called a telegram (or PZD block in PROFIdrive terminology). Siemens offers three categories of telegram for the G120D:
- Standard telegrams (Tel. 1–7): PROFIdrive-compliant, vendor-predefined PZD layouts (e.g. Standard telegram 1 = STW1/ZSW1 + NSOLL_A/NIST_A, Standard telegram 3 = 9/5 words for speed/positioning). They are selected directly in TIA Portal under device configuration → Telegram.
- Siemens telegrams (Tel. 20, 220, 350, 352, 354, 999 base): vendor-specific layouts tuned for use with function blocks such as SinaSpeed, positioning, or safety.
- Free telegram configuration (p922 = 999): a fully user-defined PZD layout where every word is wired through BICO to a parameter of your choice.
The free telegram (telegram 999) is the right answer when a standard layout does not carry the exact signals your application needs, when you must read torque, current, temperature, or process status bits alongside speed, or when you are migrating a legacy drive and want exact bit-for-bit compatibility. Because every PZD word is mapped individually, free telegrams also give full control over the bit layout, which is essential for diagnosing swapped-endian traffic.
p922 = 999 and individual word assignments are written to p923 (send direction, drive → controller) and p924 (receive direction, controller → drive). Selecting "Free telegram" in TIA Portal or STARTER triggers the same parameter assignments but writes them automatically when the project is loaded to the drive.Prerequisites and Hardware Identification
Before changing telegram layout, capture the as-delivered configuration and confirm the following items.
| Item | Requirement | Where to verify |
|---|---|---|
| Control Unit (CU) | CU240D-2 PN, CU250D-2 PN, or CU240D-2 DP (PROFIBUS) | Drive nameplate, STARTER → Online → Device identification |
| Firmware | ≥ V4.7 for full p922/p923/p924 support on CU240D-2; ≥ V5.1 SP1 recommended | STARTER → Online → Drive → Properties → Version |
| STARTER version | STARTER ≥ V5.4 (or Startdrive ≥ V15.1 in TIA Portal) | Help → About in commissioning tool |
| Parameter access | Expert parameter list visible (default in STARTER Expert mode) | Right-click drive → Expert parameter list |
| Backup of offline project | Export drive parameter set before changes | STARTER → Project → Archive |
The function diagrams referenced throughout this article are documented in the SINAMICS G120/G120D/G120C List Manual, available from the official Siemens Industry Online Support portal at support.industry.siemens.com. The communication function diagrams (FP2410, FP2420, FP2440, FP2450, FP2460, FP2470, FP2480, FP2490) cover telegram selection, PZD extension, status/control words, and free telegram mapping.
Selecting the Right Telegram Strategy
Engineers routinely face three legitimate paths; the right one depends on what you are trying to do.
- Standard telegram only. Use Tel. 1 (4 PZD) for classic speed control via PROFIdrive. STW1/ZSW1 give command and status, NSOLL_A/NIST_A give setpoint and actual. No additional configuration required.
-
Telegram extension (Tel. 1 + extension). Keep Tel. 1 as the base and append additional PZD words through
p2051andp2061. This is the recommended approach when you want to add a few extra words (e.g. torque actual, fault code) without abandoning the standard profile. TIA Portal exposes this as the "Activate telegram extension" checkbox under Communication → Telegram configuration. - Free telegram (Tel. 999). Use when the base layout is wrong, when you need bit-level control over every word, or when interfacing with non-PROFIdrive controllers (third-party PLC, custom protocol bridges).
Most G120D projects start with the standard telegram and extend it. The free telegram becomes necessary when you must select telegram words that the standard layout simply does not expose, or when you are forced to keep the PZD length identical to a non-Siemens drive for swap-out scenarios.
Status Word (ZSW1, r0052) Bit Mapping
The status word ZSW1 is read from parameter r0052 and is mandatory in any PROFIdrive-compliant telegram. In a free telegram you can choose to expose ZSW1 as a whole word or to slice individual bits into separate PZD words — both are common. The standard bit assignments are:
| Bit | Mnemonic | Meaning |
|---|---|---|
| 0 | RDY_ON | Ready to switch on (power unit energized, no fault) |
| 1 | RDY_RUN | Ready for operation (DC bus charged, no coast stop) |
| 2 | RDY_REF | Operation enabled (drive follows setpoint) |
| 3 | FAULT | Fault active (r0945 entry present) |
| 4 | NO_OFF2 | Coast stop (OFF2) not active |
| 5 | NO_OFF3 | Quick stop (OFF3) not active |
| 6 | INHIBIT | Switch-on inhibit (must be acknowledged before re-on) |
| 7 | ALARM | Alarm present (r2111 entry present, drive still runs) |
| 8 | AT_SETPOINT | Speed setpoint–actual deviation within tolerance (p2161) |
| 9 | REMOTE | Control requested from PLC (master sign-of-life) |
| 10 | f_n_REACHED | |n_act| ≥ p2161 threshold |
| 11 | I_M_P_LIMIT | Current, torque, or power limit reached |
| 12 | HOLD_BRAKE | Open motor holding brake |
| 13 | ALARM_OT | Motor overtemperature alarm |
| 14 | ROT_FWD | Motor rotates forward (sign-of-life) |
| 15 | CDS_BIT | CDS bit 0 — command data set selection |
A common question is whether to read ZSW1 from r0052 directly or from a sliced alternative such as r0052.0, r0052.3, etc. The difference is purely one of presentation:
-
Whole word (r0052): a 16-bit value is packed into one PZD. The controller unpacks the bits via masking (
Status AND 16#0001for bit 0). - Bit-sliced (r0052.0, r0052.1, …): individual boolean signals are wired to individual bits of one or more PZD words. This is the recommended approach when a free telegram is being assembled because it lets you combine drive-side booleans (e.g. fault, warning) with integer signals (actual speed, current) in the same compact layout.
Configuring a Free Telegram in STARTER
Open the project in STARTER, double-click the G120D drive, and navigate to Communication → Telegram configuration. The exact menu sequence is: drive tree → right-click → Properties → Communication tab → Telegram configuration. From the drop-down list, select Free telegram (p922 = 999) or pick a specific base telegram and click "Activate telegram extension".
- Set
p922to999via the parameter list, or select "Free telegram" in the dialog. STARTER will then offer editable slots forp923(drive → controller) andp924(controller → drive). - For each PZD index, type the parameter number whose value should occupy that word. Examples:
-
p923[0] = 52— PZD 1 send = Status word 1 (r0052) -
p923[1] = 21— PZD 2 send = Actual speed smoothed (r0021) -
p923[2] = 31— PZD 3 send = Actual torque smoothed (r0031) -
p924[0] = 3700— PZD 1 receive = Control word 1 (r0050 source via p2050[0] = 3700) -
p924[1] = 1150— PZD 2 receive = Speed setpoint (r1150)
-
- If you need bit-level signals, use the indexed bit notation.
p923[3] = 52.3sends bit 3 (FAULT) of the status word into PZD 4. Repeat for as many individual bits as needed. - Click Load to drive and then Copy RAM to ROM so the layout survives a power cycle.
- Run Commissioning → Optimization → Calculate motor data if parameters have been altered before normal operation.
The same parameters can also be edited directly in the expert list:
p922 = 999 ; Free telegram selection
p923.1 = 52 ; PZD 1 send → ZSW1 (r0052)
p923.2 = 21 ; PZD 2 send → n_act (r0021)
p923.3 = 31 ; PZD 3 send → M_act (r0031)
p924.1 = 3700 ; PZD 1 receive → STW1 source
p924.2 = 1150 ; PZD 2 receive → speed setpoint source
The receive side must be wired with a BICO source, not just a parameter number, because the controller's output words are normally fed into the control word 1 (r0050) via p2050, and p1150 for the speed setpoint. The indices of p923/p924 correspond 1:1 with the slot indices in the PROFINET telegram mapping.
BICO Interconnection Principles
SINAMICS uses a BiCo (Binector/Connector) model to route signals between parameters. A connector is a numeric (word or double-word) signal; a binector is a single bit. Free telegram assignment is nothing more than wiring a connector sink (each PZD slot) to a connector source.
| Sink parameter | Direction | Typical source |
|---|---|---|
p2050[0] |
PLC → STW1 (r0050) | Connector output from PROFINET receiver; default = r2050[0] |
p2050[1] |
PLC → NSOLL_A | PROFINET receiver word 2 |
p2051[0] |
ZSW1 → PLC |
r0052 (status word 1) |
p2051[1] |
NIST_A → PLC |
r0021 (actual speed smoothed) |
p2061[0] |
Extension 1 → PLC | Any connector (e.g. r0080 torque, r0032 active power) |
The crucial BICO detail for free telegrams is that p923/p924 describe the telegram layout, while p2050/p2051/p2060/p2061 describe the I/O interconnection. Both must agree. A frequent commissioning error is to set p923[2] = 31 (expecting torque) but leave p2061[0] unset, in which case the controller receives zero. Always cross-check p2051/p2061 against p923 after a parameter download.
Endianness, Word Swapping, and Bit Packing
When the controller is a third-party PLC, an OPC UA gateway, or a non-S7 master, the engineer must verify that both ends interpret each 16-bit PZD word in the same byte order. PROFINET transport is big-endian on the wire (per IEEE 802.3 and PROFIdrive profile V4.2), but the bytes inside a 16-bit PZD word are defined as little-endian word — high byte first in PZD order. This means that for a value such as 0x1234, the on-wire representation is 12 34 in PROFINET byte order, but most S7 CPUs view it as word value 0x1234. The discrepancy almost never appears on S7-to-SINAMICS because both use the same convention.
Where it does appear is in user-defined telegrams (UDTs) where the engineer defines a structure with individual byte members:
// Bad: byte-by-byte UDT on a Siemens side
TYPE UDT_ZSW1 :
STRUCT
b_low : BYTE; // bits 0-7
b_high : BYTE; // bits 8-15
END_STRUCT;
END_TYPE
If the controller then reads the same word into a signed 16-bit INT, the high and low bytes are reversed relative to the status-word convention. The drive has not swapped bytes; the PLC UDT is mis-declared. The fix is either to read the PZD as a single WORD or INT, or to swap the byte order in the UDT (low byte at high address). On a Siemens S7-1200/1500 with PROFINET, the standard I/O accessor always presents a 16-bit PZD in the correct little-endian word format, so byte swapping is unnecessary if the standard I/O access path is used.
Saving, Exporting, and Reusing Telegram Configurations
Two layers of configuration must be backed up:
- Offline project (TIA Portal / STARTER). Save the project archive (.zap15 or .zip). The telegram layout, hardware configuration, and PROFINET device name are all part of the archive.
- Drive parameter set. Use Drive → Upload to PG in STARTER to capture the as-running parameters, then Copy RAM to ROM on the drive so the layout is non-volatile on the memory card or internal flash.
To reuse a free-telegram configuration on another G120D, three viable approaches exist:
- Project duplication. Copy the G120D device in the project tree, then change the PROFINET device name and IP. Download to the new drive. This is the cleanest method.
-
STARTER script file. Export a script that writes
p922,p923,p924,p2050, andp2051on the new drive. Scripts can be executed from Tools → Scripts → Execute or invoked at project start. - Parameter upload/download with the expert list. Use Drive → Parameter assignment → Parameter comparison to identify deltas between the source and target drive.
STARTER Script Files for Automation
A STARTER script file is a plain-text file containing one parameter assignment per line. Scripts are executed from Tools → Scripts in STARTER or from the command-line variant STARTER.exe -s script.txt. A typical G120D free-telegram script is:
; G120D_free_telegram.script
; --- Telegram selection ---
p922 = 999 ; Free telegram
; --- Drive → Controller (p923 send) ---
p923[0] = 52 ; ZSW1
p923[1] = 21 ; n_act smoothed
p923[2] = 31 ; M_act smoothed
p923[3] = 52.3 ; ZSW1 bit 3 (FAULT)
p923[4] = 2139 ; Fault code (r2139)
; --- Controller → Drive (p924 receive) ---
p924[0] = 3700 ; STW1
p924[1] = 1150 ; Speed setpoint source
; --- I/O interconnection (must agree with p923/p924) ---
p2051[0] = 52
p2051[1] = 21
p2051[2] = 31
p2061[0] = 52.3
p2061[1] = 2139
p2050[0] = 3700
p2050[1] = 1150
; --- Commit ---
p971 = 1 ; Save parameter changes non-volatile
Script files are particularly useful when commissioning many drives with identical layouts — a common requirement on conveyor sections, AGVs, or modular machine cells. Siemens documents the script syntax in the STARTER online help and at Siemens Support entry 75163088.
p922 = 999 clears any previous standard telegram mapping. Always save the existing layout (Drive → Parameter assignment → Save to memory card) before running the script. Restoring a corrupted parameter set requires re-loading the original project archive or performing a factory reset (p0970 = 1).PROFINET / PROFIBUS Integration and PLC Programming
On the controller side, the G120D is integrated as a PROFINET IO device with a slot structure that mirrors the telegram. For a free telegram with five send and two receive words, TIA Portal shows:
| Slot | Subslot | Direction | PZD index | Length (bytes) |
|---|---|---|---|---|
| 0 | 1 | Input | 1–5 | 10 |
| 0 | 2 | Output | 1–2 | 4 |
Inside the PLC, the input/output addresses are assigned automatically (or can be fixed with the "I/O address" property). For an S7-1500 with a free telegram of 5 input words and 2 output words starting at input address 256 / output address 256, the symbolic names would be:
// SCL example for S7-1500 PROFINET free telegram
#drive_status_word := %IW256; // ZSW1
#drive_speed_act := %IW258; // n_act (RPM, scaled per p2000)
#drive_torque_act := %IW260; // M_act (Nm, scaled per p2003)
#drive_fault_bit := %IX264.3; // ZSW1 bit 3 — FAULT
#drive_fault_code := %IW266; // r2139 — active fault number
#plc_control_word := %QW256; // STW1
#plc_speed_setpoint := %QW258; // speed setpoint (RPM, scaled per p2000)
// Bit-level interpretation
IF #drive_status_word.2 THEN // RDY_REF (operation enabled)
// … machine logic
END_IF;
Note that the scaling of n_act follows p2000 (reference speed). If p2000 = 1500 RPM, then a value of 16384 (0x4000) on the wire equals 1500 RPM. The conversion is:
n_actual_rpm = (%IW258 / 16384.0) * p2000
For PROFIBUS, the procedure is identical but the slot indices are fixed by the GSD file and the slot assignment is performed in HW Config or TIA Portal device configuration.
Verification and Commissioning
After loading the free-telegram configuration, run the following verification sequence before enabling the drive:
-
Parameter readout. Connect STARTER online and check
r2050[0..4]andr2051[0..4]— these are the connectors actually being sent on the wire. They must matchp923/p924numerically. -
Sign-of-life check. With the controller in stop, drive parameter
r2050[0]should be 0. Toggle a single bit in the controller and confirm it appears inr2050[0]within one PROFINET cycle (typically 1 ms). -
Loopback test. In STARTER, set
p2051[1] = r2050[1](echo the controller's speed setpoint back to the controller's input address). Watch the input word in the controller to confirm wire integrity before applying actual speed commands. -
Scaling check. Command 50 % of
p2000on the setpoint word. Confirmr0021matches the expected value within 1 % (allowing for ramp-up time). -
Fault simulation. Trigger a non-latching alarm (e.g. by raising the load) and confirm bit 7 of ZSW1 is set in
r0052and propagated to the controller's input word.
Troubleshooting Matrix
| Symptom | Likely cause | Diagnosis | Remediation |
|---|---|---|---|
| Controller always reads 0 from a PZD |
p2051/p2061 mismatch with p923
|
Online → r2051 list view |
Set p2051[i] = same parameter as p923[i]
|
| Bits appear reversed in PLC UDT | UDT declared byte-by-byte instead of word-level | Inspect UDT structure | Use WORD/INT data type or correct byte order in UDT |
| Drive does not accept setpoint | STW1 control bits not interpreted | Check r0050 in STARTER |
Verify p2050[0] = 3700 and free telegram word count matches controller |
| Telegram mismatch alarm F01910 | Controller and drive have different PZD length | Online diagnostics buffer | Match I/O length on PLC side to p922/p2079 length |
| Configuration lost after power cycle | Changes only in RAM | Check p971 last action |
Execute Copy RAM to ROM or p971 = 1
|
| Status bits update slowly | PROFINET update time too long | Check IO device properties | Reduce send clock (e.g. 1 ms instead of 4 ms) if bus allows |
| Free telegram rejected (p922 won't accept 999) | Drive firmware does not support free telegram | Check firmware version | Upgrade to ≥ V4.7 CU240D-2; reinstall parameter set |
| Drive reports "PROFIsafe fault" after layout change | PROFIsafe slot reassigned incorrectly | Check slot 1 / subslot 2 | Reassign PROFIsafe slot in TIA Portal device view, not in p923
|
FAQ
How many PZD words can a free telegram on the G120D have?
A free telegram (p922 = 999) supports up to 32 send words (p923[0..31]) and 32 receive words (p924[0..31]) on CU240D-2 / CU250D-2 with firmware ≥ V4.7. Practical projects typically use 4–12 words; larger telegrams reduce the achievable PROFINET update time.
Why does my status-word value appear swapped in the PLC?
The drive transmits a single 16-bit word (r0052) in standard little-endian PROFINET word order. If the controller reads the bytes into a byte-structured UDT, the engineer will see reversed byte order. Use a WORD or INT data type, or correct the byte order in the UDT definition. SINAMICS itself does not transmit "reversed" data.
Can I copy a free-telegram configuration to another G120D?
Yes. Three methods are supported: duplicate the device in the TIA Portal project tree (preferred); export a STARTER script file (p922, p923, p924, p2050, p2051) and run it on the target drive; or use Drive → Parameter assignment → Parameter comparison to apply deltas between source and target.
Do I need to change HW Config I/O addresses when using a free telegram?
Yes. The I/O address range in the controller is allocated based on the PZD length, not on the parameter content. After switching from Standard telegram 1 (4 words in / 4 words out) to a free telegram with a different length, re-compile the PLC hardware configuration so the input and output address ranges match the new telegram length. Otherwise the drive reports F01910.
What is the difference between a free telegram and a telegram extension?
A telegram extension keeps a standard PROFIdrive base telegram (Tel. 1–7) and appends additional PZD words through p2060/p2061. A free telegram (p922 = 999) discards the standard layout entirely and lets the engineer wire each PZD slot to any parameter. Extension is recommended when the standard profile bits are still required; free telegram is recommended for full layout control or non-PROFIdrive integrations.