Extending SINAMICS G120X Telegram 352 on S7-1200 over PROFINET

David Krause11 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

Extending SINAMICS G120X Telegram 352 on S7-1200 over PROFINET

The SINAMICS G120X is a field-proven fan/pump/compressor drive, but unlike the G120, G120C, or G120D, it is not integrated into TIA Portal Startdrive. Every project must therefore be brought in via a GSDML file as a generic PROFINET IO device. That detail alone causes a recurring set of questions on real plants: how do you append extra process data words (PZD) to the standard Telegram 352 so that the S7-1200 can read power, voltage, or energy consumption? This article documents the working configuration used on commissioned drives: Telegram 999 as a free telegram extension of 352, p2051/p2061 PZD mapping, dual HW_ID handling on the PLC side, and the SinaPara fallback for double-word REAL values.

Scope. This reference targets firmware-supported G120X units controlled by an S7-1200 (firmware 4.x CPU) over PROFINET IRT/RT using the G120X GSDML. PROFIBUS equivalents share most parameter logic but use different PLC-side calls (DPRD_DAT/DPWR_DAT vs. direct I/O access).

1. Telegram Architecture on the G120X

The G120X follows the PROFIdrive profile but is delivered with a stripped Startdrive support set. The telegram selection logic lives in drive parameter p922, and the telegram extension mechanism uses p2079.

Parameter Function Typical value for extension
p922 Telegram selection at the PROFINET/PN interface 999 (free telegram)
p2079 Extended telegram (acts as base for the extension) 352 (the base of the extended image)
p2051 PZD send word interconnection (drive → controller) Indices 0..n mapped to connectors (r2050, r2089, r0032, r0080, etc.)
p2061 Additional PZD extension words appended to the base telegram Used as the next free send-word slot beyond p2051's index range
p2050 PZD receive word interconnection (controller → drive) Control words, setpoints

The free Telegram 999 starts at 8 PZD in / 8 PZD out on the G120X (compared to 6/6 for Telegram 352). The controller can therefore squeeze more parameters into the deterministic PROFINET cycle. For very small extensions you can keep p922 = 352 and only configure the extension slots; for large reads (dozens of REALs) the full free telegram is usually preferable.

Why free telegram, not just an extended standard telegram? On the G120X, configuring the closest standard telegram first and then switching to p922 = 999 preserves the BICO interconnections Starter/Startdrive has created. You only have to wire the new or changed slots. Configuring 999 from scratch leaves every word at 0.

2. Prerequisites

  1. G120X GSDML file matching the drive firmware. Obtain from the Siemens SIOS support pages under entry ID 109757254 or the product-specific download.
  2. S7-1200 CPU with PROFINET interface (CPU 1214C DC/DC/DC or higher recommended for fan/pump applications with one PN port used).
  3. TIA Portal V16 or later (V17/V18 for newer G120X firmware revisions). Startdrive is not strictly required because the drive is added as a generic PN device.
  4. IOP-2 or BOP-2 for parameter access on the drive (Startdrive does not integrate the G120X, so on-drive parameterization via the Intelligent Operator Panel is the typical path).
  5. SINAMICS standard telegram list from the SINAMICS G120X manual set for verifying slot counts.

3. Adding the G120X to the S7-1200 Project

  1. Install the GSDML: Options → Manage general station description files (GSD) → browse to the GSDML-Vxx-Siemens-Sinamics-G120X-…xml file.
  2. In the device catalog, expand Other field devices → PROFINET IO → Drives → Siemens AG → SINAMICS and drag the G120X into the network view.
  3. Assign the PROFINET device name and IP. Use Topology editor → Assign PROFINET device name to push the name from TIA Portal.
  4. In the Device view of the G120X, open slot 0 (the drive object) and select Telegram 352 as the standard PZD module.
  5. Add a supplementary PZD module from the catalog (e.g. PZD-2/4 or PZD-2/2). This module represents the extension you will configure with p2079.

The result is two telegram entries on the PLC side: the standard Telegram 352 (HW_ID_1) and the extension (HW_ID_2). Both must be addressed separately when reading or writing process data.

4. Configuring the Drive-Side Telegram Extension

On the drive, navigate via the IOP-2 (or BOP-2) or via PROFIdrive acyclic parameter access from the PLC.

  1. Set the base telegram:
    • p922 = 999  — select free telegram at the PN interface
    • p2079 = 352  — extend Telegram 352 (preserves standard slot meaning)
  2. Map the parameters you want to send on PZD using p2051. Indices continue after the last standard slot of Telegram 352 (typically indices 6, 7, 8 for additional send words):
    • p2051[6] = r0080  — torque actual (Nm, normalized)
    • p2051[7] = r0032  — active power actual (kW, normalized)
    • p2051[8] = r0026  — DC-link voltage (V, normalized)
    • Index numbers must not collide with the indices already used by Telegram 352's BICO list.
  3. For double-word REAL parameters (e.g. energy consumption r0039) you cannot use p2051 alone because the drive packs REAL values into two consecutive PZD words that the controller must interpret as 32-bit float. Append to p2061 instead:
    • p2061[0] = r0039[0]  — low word of energy counter
    • p2061[1] = r0039[1]  — high word of energy counter
  4. Map p2061 into the next free PZD send slot via the supplementary module's index.
  5. Save and power-cycle the drive (or run p0971 = 1 to copy RAM → ROM if the parameter class allows).
Critical: The energy counter is a REAL (32-bit). Trying to read it as two separate INT words and reassembling on the PLC side causes byte-order confusion. Either accept it as a 4-byte REAL on the PLC side or use the SinaPara FB described in Section 6.

5. S7-1200 Side: Two Telegrams, Two HW_IDs

Once you accept the configuration, the G120X in TIA Portal shows two slots with different HW identifiers. Open Devices & networks → G120X → Device view → Properties → System constants to read the HW_ID values, e.g.:

Slot Module HW_ID Length Typical address
0 PN-Interface 100
1 DO Servo / Telegram 352 101 12 B in / 12 B out I300.0..Q303.7
2 Supplementary PZD 2/4 102 8 B in / 4 B out I304.0..Q306.7

The HW_ID is what the S7-1200 hands to DPRD_DAT, DPWR_DAT, and GetIO / SetIO. If you read the wrong HW_ID you read the standard telegram, not the extension.

6. Reading the Extension on the S7-1200

You have three practical paths. Choose based on data type and cycle position.

6.1 Direct Process Image (cyclic, simplest)

The simplest approach is to let the PROFINET cycle populate the input process image directly. In the Default tag table of the Telegram 352 slot and the supplementary slot, name each word:

  • I300.0..I301.7 — STW1 / ZSW1 (standard 352)
  • I302.0..I303.7 — Actual frequency, current (standard 352)
  • I304.0..I305.7 — Torque actual, power actual (extension via p2051)
  • I306.0..I309.7 — Energy counter as REAL (extension via p2061)

For data encapsulation inside an FB, pass the input area as a POINTER or VARIANT pointing at P#I300.0 BYTE 16. This keeps the FB portable across drives.

6.2 DPRD_DAT in a Cyclic OB (cyclic, encapsulated)

For FB-based encapsulation, use SFCs in OB1 or OB30–OB38:

// Read standard Telegram 352 inputs (12 bytes)
iRet := DPRD_DAT(
    LADDR := 101,                    // HW_ID of standard slot
    RETVAL := iErr1,
    RECORD := P#DB_Inputs.Byte0 BYTE 12);

// Read extension (supplementary PZD 2/4 → 8 bytes input)
iRet := DPRD_DAT(
    LADDR := 102,                    // HW_ID of extension slot
    RETVAL := iErr2,
    RECORD := P#DB_Inputs.Byte12 BYTE 8);

// Write standard control word + setpoint (12 bytes output)
iRet := DPWR_DAT(
    LADDR := 101,
    RECORD := P#DB_Outputs.Byte0 BYTE 12);

Place the FB call inside OB1 with a 50 ms cycle, or in a synchronous OB (OB30) synchronized to the PROFINET send clock for deterministic timing.

6.3 GetIO / SetIO (acyclic, parameter access)

Use GetIO for sub-cycle reads of large parameter sets. This is the path recommended for the energy double-word when the controller wants a scaled REAL without reformatting two INT words:

iRet := GetIO(
    LADDR := 102,                   // HW_ID of extension
    RECORD := iDataArea,            // must be ≥ 8 bytes for p2061
    RETVAL := iErr,
    BUSY := bBusy);

To read a specific parameter with proper scaling, use the SinaPara FB (Siemens library SINAMICS Blocks for SIMATIC S7-1200/S7-1500):

iRet := SinaPara(
    LADDR := 101,                   // drive HW_ID
    Parameter := 39,                // r0039 — energy counter, kWh
    Index := 0,
    ReadWrite := READ,
    Value := rEnergyReal,           // already REAL scaled
    Done := bDone,
    Busy := bBusy,
    Error := bErr);

SinaPara handles byte-order and scaling, returning the value as REAL. The trade-off is acyclic update (typically 30–80 ms latency per call) and additional load on the PROFINET acyclic channel.

7. Mapping Examples (p2051 / p2061)

Slot index Parameter Source connector Engineering unit PLC tag
0–5 (T352) Standard STW, NSW, NIST_glatt, IAIST, MIST, PIST I300.0..I311.7
6 (ext) p2051[6] r0080 — torque 4000h ≡ M_MAX (p0640) DB_Inputs.W12
7 (ext) p2051[7] r0032 — active power 4000h ≡ P_REF (p2004) DB_Inputs.W14
8–9 (ext) p2061[0..1] r0039[0..1] — energy REAL kWh (32-bit) DB_Inputs.DW16 (REAL)

The 4000h normalization matches PROFIdrive conventions for connector scaling. To convert a raw INT16 to engineering units in the PLC:

// Torque [Nm]
rTorqueNm := INT_TO_REAL(WORD_TO_INT(DB_Inputs.W12)) / 16384.0 * rMaxTorque;

// Power [kW]
rPowerkW := INT_TO_REAL(WORD_TO_INT(DB_Inputs.W14)) / 16384.0 * rRefPower;

For the REAL energy value, dereference the double-word directly:

rEnergykWh := DB_Inputs.DW16;   // 32-bit REAL, big-endian, kWh
Endianness. PROFIdrive sends REAL values big-endian on the wire. The S7-1200 swaps bytes on read, so the value lands correctly in the REAL tag. If the value appears as a wild negative or NaN, you are reading two INT16s where a REAL was expected, or the indices in p2051/p2061 are misaligned.

8. Verification

  1. Online view — in TIA Portal, go online with the S7-1200 and open the telegram tags. The standard 352 words should update every PROFINET cycle.
  2. Watch table — monitor DB_Inputs.W12 (torque), DB_Inputs.W14 (power), and DB_Inputs.DW16 (energy). Apply a step in setpoint and confirm the values change within one PN cycle (typically 1–4 ms).
  3. Drive trace — record r0080, r0032, and r0039 on the IOP-2 to confirm the drive-side sources are live.
  4. PROFINET diagnostics — enable Web diagnostics on the CPU; the cyclic frame should show the configured number of I/O bytes (12 + 8 = 20 in, 12 + 4 = 16 out for the example).
  5. Alarm buffer — confirm no F08501 (PROFINET configuration error) or F01910 (telegram invalid).

9. Troubleshooting Matrix

Symptom Likely cause Fix
Drive reports F08501 after parameter save p922 and PLC slot length disagree Match slot count to p922; for free telegram set the slot to 8/8 words
Standard 352 reads OK, extension always zero Wrong HW_ID in DPRD_DAT / GetIO call Read System constants; use the supplementary slot's HW_ID
Energy value is NaN or wildly negative Reading two INT16s where one REAL lives, or p2061 indices inverted Read as a 32-bit REAL; verify p2061[0] = low word, p2061[1] = high word
Power tag jumps by ~factor 2 or 0.5 Wrong reference: p2004 differs from rated power Set p2004 = motor rated power, recompute scaling
Startdrive complains "device not supported" Attempting Startdrive integration Remove Startdrive, use generic PN IO with the GSDML
DPRD_DAT returns 80A1 (job still active) Call frequency exceeds PROFINET update cycle Move FB to a cyclic OB aligned with PN send clock, or use process image
Extension slot missing in catalog Wrong GSDML revision Re-install the GSDML matching drive firmware; restart TIA Portal

10. Differences vs. G120/G120C

The G120 and G120C use Startdrive-internal telegram editors. The G120X workflow is closer to starter-based configuration: parameters must be written on the drive directly (IOP-2/BOP-2 or STARTER via PROFIBUS/PROFINET). Practical consequences:

  • No drag-and-drop BICO editor inside TIA Portal — only p2051/p2061 indices on the drive side.
  • Slot length changes require the same GSD re-import. Some older G120X GSDMLs cap the free telegram at 16/16 PZD; check the XML header before assuming more words.
  • The PLC always sees two HW_IDs. G120/G120C with Startdrive present the extension transparently as one logical telegram.

If Startdrive support becomes mandatory for your project, consider migrating to the G120X successor family or using a G120 with CU240E-2 PN, both of which integrate directly into TIA Portal.

11. Performance & Network Considerations

Reading via the process image is essentially free — the PROFINET cycle delivers the bytes deterministically. Adding a second DPRD_DAT for the extension is also cheap but doubled FBs on 20 drives add tens of microseconds of CPU time per cycle. For 20+ drives on an S7-1214C, prefer direct process image access and FB parameterization via VARIANT pointers.

For each SinaPara call expect 30–80 ms latency. SinaPara is acyclic and serialized per drive. If you read energy from 20 drives every 100 ms, expect significant bus load. Stagger the requests by at least one PROFINET update cycle per drive.

12. Frequently Asked Questions

How do I add extra PZD words to G120X Telegram 352 from an S7-1200?

Set p922 = 999 and p2079 = 352 on the drive, configure the next free PZD send slot via p2051 (single-word connectors) or p2061 (REAL double-words). Add a supplementary PZD module to the G120X slot in TIA Portal and read it with its own HW_ID.

Why does Startdrive refuse the G120X?

Startdrive does not integrate the G120X product line. Import the G120X GSDML under Options → Manage GSD and add the drive as a generic PROFINET IO device. Configure telegram and parameters on the drive directly via IOP-2, BOP-2, or acyclic access.

Can I read the energy counter (r0039) directly as a REAL?

Yes. Use p2061[0] and p2061[1] for the low/high word of r0039 and read the supplementary slot's bytes as a 32-bit REAL on the PLC side. Alternatively, use the SinaPara FB to read r0039 acyclically — it returns the value already scaled in kWh.

Why do I see two HW_IDs for one G120X?

Because the standard Telegram 352 and the supplementary extension are configured as two PROFINET slots. Each has its own HW_ID for DPRD_DAT/DPWR_DAT/GetIO/SetIO. Use the device view's System constants to read both values.

What scaling do I apply to the power (r0032) and torque (r0080) PZD words?

PROFIdrive normalizes connector values to 4000h = reference. Use p2004 for the power reference (kW) and p0640 for the torque reference (Nm). Convert on the PLC side with value = raw / 16384.0 * reference.

Back to blog