Configuring Telegram 352 on SINAMICS Drives via PROFIBUS

David Krause21 min read
ProfibusSiemensTutorial / 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

Overview

Siemens SINAMICS drives (G110, G120, G120C, G120D, G120P, G130, G150, S110, S120, S210, V20) on PROFIBUS DP or PROFINET exchange setpoints, control bits, and actual values through standardized Process Data (PZD) containers called telegrams. Telegram 352 is a six-word (6 PZD) bidirectional profile that exposes the main speed setpoint, actual speed, actual current, actual torque, alarm word, and fault word in addition to the standard control word (STW1) and status word (ZSW1). The drive auto-frames the process data in STARTER or Startdrive; the PLC only has to place the correct words at the configured I/O addresses and read them back, using SFC14 (DPRD_DAT) and SFC15 (DPWR_DAT) for consistent data transfer.

This reference covers the Telegram 352 layout, reference scaling, drive commissioning, PLC hardware configuration, STEP 7 ladder code, and the diagnostic steps that resolve the most common "SF" (group fault) LED conditions seen when the PLC tries to write telegram words with a plain MOVE instead of the consistent-data system functions.

16-bit setpoint limit: Standard Telegram 352 carries a 16-bit main setpoint only. If a 32-bit (double-word) setpoint is required - typically for high-resolution speed reference, torque-controlled applications, or when retrofitting a Masterdrive that previously used PPO Type 4 - you must switch to Free Telegram configuration with BICO, not Telegram 352.

PROFIdrive Profile Background

Telegram 352 is one of a family of PROFIdrive profile telegrams standardised by the PROFIBUS / PROFINET user organisation (PNO) and adopted by Siemens in the SINAMICS drive platform. The profile defines a fixed setpoint direction (PLC → drive) and actual-value direction (drive → PLC) for cyclic data exchange. The PROFIdrive V3/V4 profile is the de-facto implementation on SINAMICS, where the first PZD word is always the control word (STW1) or status word (ZSW1) and the second PZD word is the main setpoint (NSOLL) or main actual (NIST).

Telegram PZD Out PZD In Setpoint Content Actual Content Typical Use
1 2 2 STW1, NSOLL ZSW1, NIST Simple V/Hz or vector control
2 4 4 STW1, NSOLL, optional ZSW1, NIST, IAIST, MIST Standard speed control
3 1 1 STW1 ZSW1 Minimal write / read
4 4 4 STW1, NSOLL, M_LIM, STW2 ZSW1, NIST, IAIST, MIST, ZSW2 Servo with torque limit
5 4 4 STW1, NSOLL, M_LIM, STW2 ZSW1, NIST_B, IAIST_G, MIST_B, ZSW2 Servo with dual encoder
6 6 6 STW1, NSOLL, M_LIM, STW2, G1_STW, n_corr ZSW1, NIST_B, IAIST_G, MIST_B, ZSW2, G1_ZSW, G1_NIST Advanced servo
20 2 6 STW1, NSOLL ZSW1, NIST, IAIST, MIST, PIST, ZSW2 Vector drive with all actuals
352 6 6 STW1, NSOLL, 4 user-defined ZSW1, NIST, IAIST, MIST, AlarmCode, FaultCode Speed control with alarm and fault code in the cycle
999 Free Free Free BICO Free BICO Custom 32-bit / mixed

Telegram 352 PZD Structure

Each SINAMICS standard telegram has a fixed, vendor-defined PZD layout. Telegram 352 has six 16-bit PZD words in each direction. All process data is normalised to 4000H (decimal 16384) = 100% of the reference value defined in p2000 to p2004.

Setpoint Direction (PLC → Drive)

PZD Word Signal Name Width Source / Target Parameter Purpose
PZD1 STW1 (Control Word 1) 16 bits Interconnect via BICO Drive commands: ON/OFF, enable, fault acknowledge, jog, etc.
PZD2 NSOLL (Speed Setpoint) 16 bits Source typically set by p1070 Main speed setpoint; 0x4000 = 100% of p2000
PZD3 User-defined / empty 16 bits Configurable in STARTER BICO Optional: ramp time, torque limit, additional setpoint
PZD4 User-defined / empty 16 bits Configurable in STARTER BICO Optional
PZD5 User-defined / empty 16 bits Configurable in STARTER BICO Optional
PZD6 User-defined / empty 16 bits Configurable in STARTER BICO Optional

Actual Value Direction (Drive → PLC)

PZD Word Signal Name Width Source Parameter Notes
PZD1 ZSW1 (Status Word 1) 16 bits r2089[0] Drive status: ready, enabled, fault, alarm, etc.
PZD2 NIST (Speed Actual) 16 bits r0021 (smoothed) 0x4000 = 100% of p2000
PZD3 IAIST (Current Actual) 16 bits r0027 (smoothed) 0x4000 = 100% of p2002
PZD4 MIST (Torque Actual) 16 bits r0031 (smoothed) 0x4000 = 100% of p2003
PZD5 Alarm Code 16 bits r2122[0] Top-priority active alarm number
PZD6 Fault Code 16 bits r2131[0] Top-priority active fault number
Consistency rule: Six 16-bit PZD words = 12 bytes of consistent data. Standard MOVE / load-transfer instructions are NOT atomic for 12 bytes and will trigger a PROFIBUS DP access error (diagnostic buffer entry "I/O access error" or "OB not loaded"). Always use SFC14 / SFC15 on S7-300/400, or the equivalent DP system functions on S7-1200/1500.

Reference Parameters p2000 - p2004

All normalised setpoints and actuals are scaled to a 100% reference value. The default for p2000 is typically 50.00 Hz (G120, G120C) or 3000 rpm (S120 with speed-controlled drive). Adjust these parameters to match the application:

Parameter Name Default (typical) Scales
p2000 Reference speed / frequency 50.00 Hz / 3000 rpm NSOLL, NIST
p2001 Reference voltage 1000 V Voltage setpoint / actual
p2002 Reference current Drive-rated current IAIST
p2003 Reference torque Drive-rated torque MIST
p2004 Reference power Drive-rated power Power setpoint / actual

For 16-bit PZD the 100% point is 0x4000 (16384 decimal). For example, to command 1500 rpm on a drive with p2000 = 3000 rpm:

NSOLL_dec = 16384 × (1500 / 3000) = 8192 = 0x2000

For a 32-bit PZD (only available with Free Telegram BICO) the 100% point is 0x40000000 (1073741824 decimal), and the formula becomes:

NSOLL_32 = 1073741824 × (setpoint / p2000)

Control Word (STW1) and Status Word (ZSW1) Bit Definitions

Bit layout follows the PROFIdrive profile V3/V4. The PLC places 0x047E in STW1 to power up the drive in a "ready and enabled" state, then 0x047F to release the pulse enable and start operation.

STW1 Bit Layout (PLC → Drive)

Bit Signal Function
0 ON / OFF1 1 = pulse enable path closed, 0 = ramp-down to 0 then pulse inhibit
1 OFF2 1 = OFF2 inactive, 0 = immediate pulse inhibit (coast)
2 OFF3 1 = OFF3 inactive, 0 = fast stop (p1135 ramp)
3 Enable operation 1 = enable, 0 = inhibit operation
4 Ramp-function generator enable 1 = ramp active, 0 = ramp frozen
5 Ramp-function generator start Edge 0→1: ramp output to setpoint
6 Setpoint enable 1 = setpoint accepted, 0 = setpoint held at 0
7 Fault acknowledge 0→1 edge: clear pending faults (F-class)
8 Jog 1 (optional) Source of p1051
9 Jog 2 (optional) Source of p1052
10 Control by PLC 1 = PLC has control authority, 0 = local/auto
11 Reversal 1 = invert setpoint sign (direction reversal)
12-15 Reserved / vendor Profile-specific

Standard power-up sequence: 0x047E → 0x047F. The PLC sends 0x047E first (OFF1 active, OFF2 inactive, OFF3 inactive, enable, ramp enable, setpoint enable), waits for ZSW1 bits 0+1+2 = 1, then raises bit 0 to set 0x047F.

ZSW1 Bit Layout (Drive → PLC)

Bit Signal Function
0 Ready to switch on Power supply OK, electronics initialised
1 Ready for operation No fault present, DC bus charged
2 Operation enabled Drive outputs enabled and ramping
3 Fault present At least one active fault (F-class)
4 OFF2 active 1 = OFF2 inactive (OK), 0 = coast commanded
5 OFF3 active 1 = OFF3 inactive (OK), 0 = fast stop active
6 Switching on inhibited Restart requires OFF1 pulse + ON
7 Alarm present At least one active warning (A-class)
8 Speed set/actual deviation in tolerance Within p2163 window
9 Control requested 1 = drive expects PLC to control via STW1
10 f or n reached/exceeded |n_act| ≥ p2161 threshold
11 I, M or P limit reached Torque / current / power limiter active
12-15 Reserved / vendor Profile-specific

Drive State Machine (PROFIdrive)

  1. Not Ready to Switch On — mains not present, or drive booting up. ZSW1 = 0x0000.
  2. Switch-on Inhibited — mains present but pre-charge or fault active. ZSW1 bit 6 = 1.
  3. Ready to Switch On — STW1 = 0x047E, ZSW1 bit 0 = 1.
  4. Ready for Operation — STW1 = 0x047E, ZSW1 bits 0+1 = 1.
  5. Operation Enabled — STW1 = 0x047F, ZSW1 bits 0+1+2 = 1; drive follows NSOLL.
  6. OFF1 / OFF3 active — drive ramps down, pulses inhibited at standstill.
  7. Fault — ZSW1 bit 3 = 1; acknowledge via STW1 bit 7 (0→1 edge) to return to state 1 or 2.

Prerequisites

  • SINAMICS drive with PROFIBUS or PROFINET interface (CU240B, CU240E, CU240S PN, CU250S, CX32, CU320, CU310, etc.)
  • STARTER V4.x / V5.x or Startdrive V15+ (TIA Portal) for drive commissioning
  • STEP 7 V5.5 (S7-300/400) or TIA Portal V15+ (S7-300/400/1200/1500)
  • Drive GSD file installed in the PLC hardware catalog (e.g., siem80F0.gsd for G120 PN, siem8180.gsd for G120 DP, sinamics_s.gsd for S120)
  • PROFIBUS DP cable with terminators on both ends, or PROFINET cable with managed switch
  • Engineering station with PROFIBUS / PROFINET interface or Ethernet route to the PLC and the drive

SINAMICS Drive Configuration (STARTER / Startdrive)

  1. Connect to the drive via PROFIBUS or PROFINET and go online with STARTER / Startdrive.
  2. Open the drive project, navigate to Communication → PROFIBUS / PROFINET and set the slave address. Typical range: 3 to 126. Default for SINAMICS is often 3.
  3. Open Communication → Telegram configuration. From the drop-down list, select Standard Telegram 352. The slot preview will show 6 PZD in each direction.
  4. Confirm the BICO interconnections for the empty PZD3-PZD6. If unused, leave the source / target as "no connection" (BI: 0 / BO: 0).
  5. Set reference values: p2000 = motor rated frequency (Hz) or rated speed (rpm); p2002 = motor rated current; p2003 = motor rated torque.
  6. Configure command sources: p0700 = 6 (PROFIBUS / PROFINET), p1000 = 6 (setpoint via PROFIBUS / PROFINET). Verify p0922 = 352 (telegram selection).
  7. Save the project to the drive (Copy RAM to ROM) and run "Save to non-volatile memory" if prompted.
  8. Cycle the drive power if you changed the bus address or telegram.

PLC Hardware Configuration

STEP 7 V5.5 (S7-300 / S7-400)

  1. Open SIMATIC Manager and the hardware configuration (HW Config).
  2. Install the SINAMICS GSD file: Options → Install GSD File, browse to the .gsd or .gsd.gz file supplied with STARTER, then refresh the catalog (right-click PROFIBUS DP → Additional Field Devices → SINAMICS).
  3. Drag the SINAMICS slave onto the PROFIBUS DP subnet. The default slave address should match the drive's address (e.g., 3). Open the drive object properties and confirm the address.
  4. Open the drive slot configuration (drive icon → "DP slave properties" → "Configured slots"). The slot assignment must mirror the telegram layout:
Slot Module Input Address Output Address Length
0 Drive Object / telegram 352 322 322 12 bytes in / 12 bytes out

Note: the input and output base addresses can be set to any even byte, but they must fall in the PLC process image and must not overlap. For the example in the source, the drive is mapped to I/Q 322-329, which equals 12 bytes (6 words) of process image.

  1. Compile and download the hardware configuration to the PLC.

TIA Portal (S7-1200 / S7-1500)

  1. Open the device view for the S7 CPU and add the SINAMICS slave from the hardware catalog (PROFINET IO → Drives → Siemens AG → SINAMICS).
  2. Drag the slave onto the PROFINET subnet and assign the device name. Right-click the slave → Properties → Module parameters and select Standard Telegram 352 in the slot configuration.
  3. Under I/O addresses, assign the input and output start address (e.g., 322). The user program uses DPWR_DAT and DPRD_DAT system instructions from the Instructions panel under Communication → PROFINET / PROFIBUS.
  4. Compile and download the device configuration.

PLC Programming with SFC14 / SFC15 (S7-300 / S7-400)

For consistent data blocks larger than 4 bytes, the SIMATIC S7-300/400 needs explicit system calls. SFC15 (DPWR_DAT) writes 6 PZD words atomically; SFC14 (DPRD_DAT) reads 6 PZD words atomically. A plain MOVE instruction will not work for the 12-byte block and will trigger an I/O access error, raising SF on the CPU and a diagnostic buffer entry pointing to the OB that was missing (typically OB1 or an OB that handles I/O access errors).

Data Block Layout

Reserve a DB with a known name (e.g., DB100 "SINAMICS_352") and declare the send and receive areas as follows:

DATA_BLOCK DB100
STRUCT
  STW1      : WORD;    // PZD1 send - control word
  NSOLL     : INT;      // PZD2 send - speed setpoint
  PZD3_send  : WORD;    // PZD3 send (optional)
  PZD4_send  : WORD;    // PZD4 send (optional)
  PZD5_send  : WORD;    // PZD5 send (optional)
  PZD6_send  : WORD;    // PZD6 send (optional)
  ZSW1      : WORD;    // PZD1 receive - status word
  NIST      : INT;      // PZD2 receive - speed actual
  IAIST     : INT;      // PZD3 receive - current actual
  MIST      : INT;      // PZD4 receive - torque actual
  AlarmCode  : WORD;    // PZD5 receive - alarm number
  FaultCode  : WORD;    // PZD6 receive - fault number
END_STRUCT
END_DATA_BLOCK

OB1 Example: SFC15 Write + SFC14 Read

The following STL extract shows the call sequence. Use the actual LADDR from the PLC hardware config (decimal: 322 → hex 0x142).

// --- WRITE 6 PZD to drive (consistent) ---
CALL  SFC  15            // DPWR_DAT
  LADDR    := W#16#142;      // 322 decimal = 0x142
  RECORD    := P#DB100.DBX 0.0 BYTE 12;  // 6 PZD = 12 bytes
  RET_VAL   := MW  200;             // 0 = OK; != 0 = error code

// --- READ 6 PZD from drive (consistent) ---
CALL  SFC  14            // DPRD_DAT
  LADDR    := W#16#142;
  RET_VAL   := MW  202;
  RECORD    := P#DB100.DBX 12.0 BYTE 12;  // store 6 PZD into DB100 from byte 12

Structured Text (S7-1200 / S7-1500 TIA Portal)

On S7-1200 / S7-1500, use the system instructions DPWR_DAT and DPRD_DAT from the instruction catalog. The CALL syntax in SCL is:

// Write telegram
DPWR_DAT_DB(
  LADDR    := 322,
  RECORD    := SendBuffer,   // ARRAY[0..5] OF WORD
  RET_VAL   := wrStatus
);

// Read telegram
DPRD_DAT_DB(
  LADDR    := 322,
  RET_VAL   := rdStatus,
  RECORD    := RecvBuffer   // ARRAY[0..5] OF WORD
);

Populating Send Words

Build the control word from discrete bit flags and write to DB100.STW1. Example power-up sequence:

// Word assembly for STW1
"L_ReadyToStart";      // bit 0 - ON/OFF1
"L_Enable_OFF2";        // bit 1
"L_Enable_OFF3";        // bit 2
"L_EnableOperation";      // bit 3
"L_EnableRFG";           // bit 4
"RFG_Start";               // bit 5
"L_SetpointEnable";       // bit 6
"FaultAck_Edge";          // bit 7
"ControlByPLC";           // bit 10
"DirectionReverse";       // bit 11

"BitAssemble_FB".Assemble(Out => DB100.STW1);

// Speed setpoint, scaled to 0x4000 = 100% of p2000
"Scale_0x4000"    (
  Input  := "SpeedRequest_RPM",
  RefVal  := "p2000_ReferenceSpeed",
  Output  => DB100.NSOLL
);

32-bit Setpoint Alternative (Free Telegram BICO)

Standard Telegram 352 only supports a 16-bit speed setpoint. If you need 32-bit resolution (e.g., for very low-speed / high-precision applications or when retrofitting a Masterdrive using PPO Type 4), configure a free telegram with BICO rather than using Telegram 352.

  1. In STARTER / Startdrive, open the drive and navigate to Communication → Telegram configuration.
  2. Click Add telegram and select Free telegram configuration (BICO). The PZD count can be set between 1 and 16 words in each direction.
  3. For the setpoint direction, map the second and third PZD words to a 32-bit speed setpoint (e.g., NSOLL_32 interconnect). The high word goes in PZD2, the low word in PZD3. The SINAMICS parameter for 32-bit speed setpoint scaling is p1075[0] as the source, with p2000 as the reference; the 100% point is 0x40000000 (1073741824 decimal).
  4. Configure the receive side as needed: NIST_32, IAIST, MIST, status words, alarm, fault.
  5. Save the configuration. In HW Config, the slave slot must mirror the new telegram length (e.g., 16 bytes in / 16 bytes out for 4 PZD + 4 PZD).
  6. Update the PLC SFC14 / SFC15 RECORD length to match (16 bytes).
Endianness reminder: SINAMICS expects the 32-bit value in big-endian / high-word-first order. When splitting a DWORD into two INTs in S7 logic, write the high word into the lower PZD index (PZD2) and the low word into the higher index (PZD3).

Troubleshooting the SF LED and Diagnostic Buffer

The "SF" (group fault) LED on a SIMATIC CPU and the diagnostic buffer entries are the most reliable starting points for a Telegram 352 problem. The buffer records the exact event with date / time, OB number, and a hex error code.

Diagnostic Buffer: Common Telegram 352 Errors

Diagnostic Buffer Text Hex Code Likely Cause Resolution
I/O access error when reading 2942 MOVE on consistent data > 4 bytes; or SFC14/15 with wrong LADDR Switch to SFC14/15; verify the LADDR matches the HW Config slot base address
I/O access error when writing 2941 MOVE on consistent data > 4 bytes Use SFC15 (DPWR_DAT) instead of MOVE
OB not loaded / OB1 missing 3583 Error OB missing for the triggered event class Download OB82 / OB85 / OB121; or correct the calling code so the OB is not needed
Distributed I/O: slave failure 38C4 PROFIBUS connector / terminator / GSD mismatch Check address switches, wiring, GSD version, drive power
Diagnostic interrupt from slave 39xx Drive raised an alarm or fault (r2122 / r2131) Read drive fault buffer, clear via STW1 bit 7 edge
Station failure / bus fault 38C0 PROFIBUS DP wire break or short Check connectors, segment terminators, baud rate
Parameter assignment error 24xx Slot / module mismatch in HW Config Re-run the SINAMICS slave wizard, re-download HW Config

Step-by-Step Diagnostic Procedure

  1. Open the diagnostic buffer of the CPU: PLC → Diagnostic/Setting → Diagnostic Buffer in STEP 7, or Online & Diagnostics → Diagnostic Buffer in TIA Portal.
  2. Locate the most recent event tied to the drive slot. Note the error code, OB number, and the input / output address from the event details.
  3. Confirm the input / output address in the diagnostic event matches the start address configured in HW Config (e.g., 322 = 0x142 for the example project).
  4. Open the hardware configuration and verify:
    • PROFIBUS address matches the drive's address dial / STARTER setting
    • Telegram selected matches the drive's p0922 value (Telegram 352 in this case)
    • Slot module order is correct (drive object = single slot 0 with 12 bytes in / 12 bytes out)
  5. Open the user program. Search for direct I/O access instructions (MOVE, L PIW, T PQW) that overlap the Telegram 352 address range. Replace with SFC14 / SFC15 calls. A standard 16-bit load / transfer on a process image word will read only the first two bytes consistently, but the remaining 10 bytes will be undefined, and the cycle check will flag the I/O access violation.
  6. Download the corrected program and trigger a CRST (cold restart) if the diagnostic buffer still shows the original event.

MOVE vs. SFC14 / SFC15 - Why the SF LED Lights

For data length ≤ 4 bytes, the process image transfer is consistent and a plain MOVE works. For a 6-PZD telegram (12 bytes), the data is split across multiple PROFIBUS DP cycles, and a non-atomic read or write can return mismatched data. The CPU's cycle-time watchdog treats the access error as a group fault and lights the SF LED. Loading OB122 (I/O access error OB) suppresses the SF LED but does not fix the underlying inconsistent data. The proper fix is to call SFC14 (DPRD_DAT) for reads and SFC15 (DPWR_DAT) for writes.

Edge Cases and Field-Proven Caveats

  • Drive power cycle: Telegram selection (p0922) is read only at startup. If you change p0922 online, cycle the drive mains for the change to take effect.
  • Watchdog time: If the PLC stops calling SFC15, the drive's p2040 / p2041 PROFIBUS watchdog expires and the drive trips with F1910 (comm loss). Configure a non-zero setpoint hold time so transient outages do not trip the drive.
  • PROFIsafe coexistence: Telegram 352 can be selected on SINAMICS CU250S-2 PN alongside PROFIsafe telegrams 30 / 31, but the safety telegram must be in slot 0 and the standard telegram in a higher slot.
  • Watch table for STW1: Forcing STW1 = 0x0000 stops the drive but does not always clear an active fault. Use the dedicated fault-acknowledge edge on bit 7.
  • Process image update: STEP 7 updates the process image at the start and end of OB1. For tight control loops, call SFC14 / SFC15 inside a dedicated OB (e.g., OB35 cyclic interrupt at 10 ms) and copy the result into the process image.

Verification and Commissioning

  1. Bring the CPU online. Confirm there are no pending diagnostic buffer events after a CRST.
  2. Open a VAT / watch table. Force DB100.NSOLL = 0x0000 and DB100.STW1 = 0x047E. Confirm DB100.ZSW1 shows bits 0+1 set (drive in "Ready for switching on").
  3. Set DB100.STW1 = 0x047F. Confirm ZSW1 bits 0+1+2 = 1 (operation enabled) and the motor holds zero speed.
  4. Apply a small setpoint: DB100.NSOLL = 0x1000 (4096 decimal, ~25% of p2000). Verify DB100.NIST tracks the setpoint within the ramp time defined in p1120 / p1121.
  5. Toggle bit 7 of DB100.STW1 for one cycle to acknowledge any pending fault. Confirm DB100.FaultCode clears to 0.
  6. Trigger an OFF3: drop bits 0+1+2 of STW1. Verify the drive performs a fast stop (ramp defined by p1135).
  7. Read the drive's r2131 (fault buffer) and r2122 (alarm buffer) via STARTER and cross-check against DB100.FaultCode and DB100.AlarmCode.
  8. Disconnect the PROFIBUS connector at the drive. Confirm the CPU logs 38C4 (station failure) and the drive trips with F1910 within the configured watchdog time.

Field Commissioning Checklist

  • [ ] Drive firmware flashed to the same STARTER / Startdrive version catalog
  • [ ] p0922 = 352, confirmed via r0922 after power cycle
  • [ ] p0700 = 6, p1000 = 6, p2050 indexes aligned to PZD sources
  • [ ] p2000 / p2002 / p2003 match the motor nameplate
  • [ ] PROFIBUS slave address on the drive (DIP / address switch) matches HW Config
  • [ ] GSD file is the latest for the firmware version
  • [ ] HW Config slot length = 12 bytes in / 12 bytes out, start address noted
  • [ ] All user program I/O accesses to that address range use SFC14 / SFC15
  • [ ] PROFIBUS terminators enabled at both ends; cable shield grounded at both ends
  • [ ] SF LED off, diagnostic buffer clean after a CRST
  • [ ] STW1 ↔ ZSW1 handshake sequence tested manually in the VAT
  • [ ] Direction reversal (bit 11) tested with the drive in a safe, decoupled state

Application Example: SIMIT Behaviour Library

Siemens publishes a Telegram 352 reference model for the SIMIT simulation platform. The example includes a configurable SINAMICS drive block that responds to all six PZD in each direction and is intended for hardware-in-the-loop testing of PLC programs. Use it to validate the SFC14 / SFC15 calls before connecting to a real drive, especially when retrofitting a system from a Masterdrive PPO4 application.

Cross-Platform Notes

  • S7-300 with CP 342-5: Same SFC14 / SFC15 calls; LADDR is the logical base address of the slave on the CP-side PROFIBUS.
  • S7-400 with CP 443-5: SFC14 / SFC15 operate on the backplane bus, same call signature.
  • S7-1200 (PROFINET): Use DPRD_DAT / DPWR_DAT from the "PROFINET / PROFIBUS" instruction set. The S7-1200 does not support all telegram types in the first firmware versions; firmware V4.1+ is recommended.
  • S7-1500 (PROFINET): Use DPRD_DAT / DPWR_DAT. The S7-1500 also supports optimised block access to PROFINET devices; in that mode the system functions are not required, and direct read / write of the I/O variable in the PLC tag table is sufficient.
  • Third-party PROFINET controllers: Map the SINAMICS slot to the configured telegram and use the controller's equivalent of DPRPRD / DPRWR (e.g., DPC31 for Allen-Bradley, RDREC / WRREC for acyclic parameter access).

Frequently Asked Questions

Why does my PLC go to SF when I use MOVE instead of SFC14 / SFC15 for Telegram 352?

Telegram 352 carries 12 bytes of consistent process data, which exceeds the 4-byte atomicity guaranteed by direct I/O access (L PIW / T PQW / MOVE). The PLC raises an I/O access error (hex 2941 / 2942), lights the SF LED, and logs "OB not loaded" if the error OB is missing. Replace MOVE with SFC15 (DPWR_DAT) for writes and SFC14 (DPRD_DAT) for reads, and confirm the LADDR matches the HW Config base address of the drive slot.

Can Telegram 352 carry a 32-bit (double-word) speed setpoint?

No. Standard Telegram 352 only provides a 16-bit main setpoint. For 32-bit resolution, use a Free Telegram with BICO, where PZD2 carries the high word and PZD3 carries the low word of NSOLL_32, scaled to 0x40000000 (1073741824 decimal) = 100% of p2000. Update the SFC14 / SFC15 RECORD length to 16 bytes and the HW Config slot length to 16 bytes in / out to match.

What do 0x4000 and p2000 mean for Telegram 352 scaling?

0x4000 (16384 decimal) is the 100% point for 16-bit PZD in the PROFIdrive profile. The 100% reference value is set on the drive side with p2000 (reference speed / frequency), p2002 (reference current), and p2003 (reference torque). For example, to command 1500 rpm with p2000 = 3000 rpm, send 8192 (0x2000) in the speed setpoint word.

What is the difference between Telegram 1, Telegram 2, and Telegram 352?

Telegram 1 has 2 PZD in each direction (STW1 / ZSW1 + NSOLL / NIST). Telegram 2 has 4 PZD (adds the actual current and torque). Telegram 352 has 6 PZD in each direction and additionally carries a current actual, torque actual, alarm number, and fault number. Pick the smallest telegram that fits the required process data to minimise bus cycle time.

How do I read the drive's fault code from the PLC?

In Telegram 352, PZD6 of the receive direction carries the top-priority active fault number from r2131[0]. Read the drive's r2131 in STARTER for a complete history. To acknowledge a fault from the PLC, send a 0→1 edge on bit 7 of STW1 (fault acknowledge) while the drive is in "ready" state, and check that the OFF1 / OFF2 / OFF3 bits are set in the same word.

Why does my drive not start even though ZSW1 shows "ready"?

Check the four state-machine prerequisites: STW1 bit 0 (ON/OFF1) = 1, bit 1 (OFF2) = 1, bit 2 (OFF3) = 1, and bit 3 (enable) = 1. Confirm p0003 (access level) ≥ 3 to see all parameters, and check r0002 for the actual drive state code. The most common field error is leaving bit 10 (control by PLC) = 0, in which case the drive ignores STW1 and follows its local command source.

Back to blog