Configuring SINAMICS S110 PROFINET Telegram on KUKA KR C4 in KRL

David Krause12 min read
SiemensTutorial / How-toVFD / Drives
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

1. Architecture Overview

A SINAMICS S110 (single-axis positioning drive from the SINAMICS S family) coupled to a KUKA KR C4 compact controller over PROFINET IO is a heterogeneous cell in which:

  • The KR C4 is the PROFINET IO Controller (PN-IO-Controller) and runs the KUKA PROFINET stack configured from WorkVisual.
  • The SINAMICS S110 (CU305 PN or CU310 PN + PM340) is the PROFINET IO Device (PN-IO-Device) configured from STARTER, SCOUT, or Startdrive in TIA Portal.
  • KRL (KUKA Robot Language) consumes the process data through $Config.dat / $IOSYS.ini symbolic I/O and does not parse Siemens telegrams natively.

The S110 is positioned as a simple, fast, accurate basic positioning drive for machine axes per the official product description on PI (PROFIBUS & PROFINET International) – SINAMICS S110 product finder.

Topology rule: The KR C4 PROFINET master port is normally the XPN1 socket on the compact cabinet. The S110 is the only downstream PN device unless additional drives or distributed I/O are added. The robot arm itself is not a PROFINET node.

2. Prerequisites

  • KUKA KR C4 compact controller, KSS 8.3.x or later. PROFINET stack option enabled (standard on compact variants).
  • KUKA KR 6 robot arm.
  • SINAMICS S110 with Control Unit CU305 PN or CU310 PN + PM340 power module.
  • SINAMICS firmware ≥ 4.4 (recommended 5.1 for current GSDML-V2.3x family).
  • KUKA.WorkVisual ≥ 4.0 (current V8.x release train).
  • SINAMICS STARTER ≥ 4.5 or Startdrive V15.1+ inside TIA Portal V16.
  • GSDML for SINAMICS S110 (e.g. GSDML-V2.31-Siemens-Sinamics_S110-xxxxxxxx.xml) imported into both WorkVisual and STARTER.
  • One managed PROFINET switch (recommended) or direct line topology if the S110 is the only slave.

3. Installing the GSDML and Adding the S110 in WorkVisual

  1. Open WorkVisual and load the KR C4 project.
  2. Options → GSDML Files → Import… and browse to the S110 GSDML.
  3. In the catalog tree open PROFINET IO → Drives → Siemens AG → SINAMICS → SINAMICS S110.
  4. Drag the device into the topology under the KR C4 PROFINET master port.
  5. Assign a PROFINET device name (e.g. s110-a1) and IP address (e.g. 192.168.1.10).
  6. Open the slot configuration. Default slots on the S110 PROFINET interface:
    - Slot 0: DAP
    - Slot 1: Telegram (default Standard Telegram 1)
    - Slot 2: Supplementary data / measurement / extended modules

4. Telegram Type Selection

The S110 supports the standard Siemens telegrams (predefined process-data layouts designed for use with SIMATIC blocks like SINAMICS_S, LAcycCom, DriveLib) plus the Free Telegram 999 (a freely configurable user-defined telegram). KRL does not interpret Siemens telegram structures directly; it only reads/writes the bytes that WorkVisual maps into $IN[n] / $OUT[n].

Telegram PZD IN (drive → ctrl) PZD OUT (ctrl → drive) Typical use
Standard Telegram 1 2 words 2 words Speed setpoint + 16-bit status
Standard Telegram 2 4 words 4 words Speed setpoint + actual values
Standard Telegram 3 9 words 5 words Speed + position feedback
Standard Telegram 4 6 words 6 words Speed + 2 encoders
Standard Telegram 5 9 words 9 words Extended speed/position
Standard Telegram 6 12 words 12 words Speed + torque + position
Standard Telegram 7 2 words 2 words Position only
Standard Telegram 9 10 words 10 words Extended position
Standard Telegram 110 12 words 12 words Positioning with MDI
Standard Telegram 111 12 words 12 words Positioning with MDI extended
Free Telegram 999 user-defined user-defined Free layout via STARTER/SCOUT

Selection guidance for KR C4 + KRL

  • Standard Telegram 3 or 5 – choose when the KRL program needs OFF1/OFF2/OFF3, enable, ramp-function generator enable, a 16-bit speed setpoint, and a 32-bit actual-position feedback (G1_XIST1).
  • Standard Telegram 110 / 111 – choose when driving the S110 in MDI (Manual Data Input) mode from the KRL submit interpreter, where traversing blocks are written cyclically.
  • Free Telegram 999 – choose when the KRL data width does not match any standard layout, or when you need custom connector routing (e.g. adding KPC gain, XERR position error, or removing the speed word entirely).
Pitfall: A standard telegram has fixed signal order. If the drive firmware does not recognise the selected telegram, the AR will be rejected with F01910 fieldbus timeout on the next power cycle. Free Telegram 999 is permissive but requires explicit per-signal mapping in STARTER.

5. Configuring Free Telegram 999 in STARTER

  1. Open the S110 in STARTER online or offline.
  2. Navigate to Communication → PROFINET → Telegram configuration.
  3. Delete the default telegram and insert Telegram 999.
  4. Define the PZD mapping by adding signals:
    - Outputs (ctrl → drive): STW1 (r2050[0]), STW2, NSOLL_A, optional XERR, KPC.
    - Inputs (drive → ctrl): ZSW1 (p2051[0]), ZSW2, NIST_A, G1_XIST1, G1_XIST2.
  5. Compile and download to the S110.
  6. Back in WorkVisual refresh the slot. The slot length must match the configured telegram length exactly, otherwise the AR (Application Relationship) will fail to establish.

6. PROFINET Address Assignment in WorkVisual

After telegram selection, open the S110 device view and inspect the I/O addresses tab. A typical default layout for Telegram 3 on the KR C4:

  • Input start address: IB 256 (18 bytes = 9 words)
  • Output start address: QB 256 (10 bytes = 5 words)

Record these offsets; they are referenced from $Config.dat and from the WinPZAd tool during commissioning.

7. Mapping the PROFINET Words into KRL

The KRL runtime reads/writes $IN[n] and $OUT[n] words. Inside $Config.dat declare symbolic aliases:

; ===== Inputs (drive → controller) =====
DECL GLOBAL SIGNAL S110_ZSW1     $IN[256]    ; Status Word 1
DECL GLOBAL SIGNAL S110_ZSW2     $IN[257]    ; Status Word 2
DECL GLOBAL SIGNAL S110_NIST     $IN[258]    ; Actual speed N2
DECL GLOBAL SIGNAL S110_G1XIST1  $IN[259]    ; Encoder 1 actual position (low)
DECL GLOBAL SIGNAL S110_G1XIST1H $IN[260]    ; Encoder 1 actual position (high)

; ===== Outputs (controller → drive) =====
DECL GLOBAL SIGNAL S110_STW1     $OUT[256]   ; Control Word 1
DECL GLOBAL SIGNAL S110_STW2     $OUT[257]   ; Control Word 2
DECL GLOBAL SIGNAL S110_NSOLL    $OUT[258]   ; Speed setpoint (N2)
DECL GLOBAL SIGNAL S110_XSETP    $OUT[259]   ; Position setpoint low
DECL GLOBAL SIGNAL S110_XSETPH   $OUT[260]   ; Position setpoint high

Bit-of-word pattern in KRL

KRL has no native bit-of-word operator equivalent to Siemens DB1.DBX0.0. Use a wrapper integer pattern in a submit interpreter so the cycle is deterministic:

DECL GLOBAL INT giSTW1 = 0

; Set OFF1 = 1  (bit 0)
giSTW1 = giSTW1 BOR (1 BSH 0)
; Clear OFF2 = 1  (bit 1) – keep 1 to prevent coast stop
giSTW1 = giSTW1 BOR (1 BSH 1)
; Enable operation = 1  (bit 3)
giSTW1 = giSTW1 BOR (1 BSH 3)
; Acknowledge fault rising edge  (bit 7)
giSTW1 = giSTW1 BOR (1 BSH 7)

$OUT[256] = giSTW1

Read ZSW1 back the same way using BAND (bitwise AND) and BSH (bit shift):

liStatus = $IN[256]
bReady   = ((liStatus BAND (1 BSH 1)) <> 0)   ; bit 1 = "ready to switch on"
bFaulted  = ((liStatus BAND (1 BSH 3)) <> 0)   ; bit 3 = "fault present"
bInSetpoint=((liStatus BAND (1 BSH 6)) <> 0)   ; bit 6 = "switch on inhibited active"

8. Example KRL Motion Driver

The following minimal pattern issues a steady setpoint and monitors drive status. Treat it as a reference skeleton, not as production code.

; ----- enable and command motion -----
giSTW1 = 0
giSTW1 = giSTW1 BOR (1 BSH 0)        ; /OFF1 = 1
giSTW1 = giSTW1 BOR (1 BSH 1)        ; /OFF2 = 1
giSTW1 = giSTW1 BOR (1 BSH 3)        ; Enable operation
giSTW1 = giSTW1 BOR (1 BSH 4)        ; Ramp-function generator enable
$OUT[256] = giSTW1

$OUT[258] = 1500                     ; NSOLL_A in LU  (scaling: p2000 = reference speed)
WAIT SEC 0.05

; ----- read feedback -----
liStatus = $IN[256]
bOpEnabled = ((liStatus BAND (1 BSH 2)) <> 0)   ; ZSW1 bit 2 = "operation enabled"

IF NOT bOpEnabled THEN
  ; Drive refused enable. Inspect ZSW1 bits 0..3 and ZSW2 fault bits.
  ERR_SYSTEM("S110 not enabled, status=" << liStatus)
  HALT
ENDIF

9. PROFINET Topology and AR Bring-up

The recurring field problem – "only the S110 is visible in WorkVisual topology, controller and S110 are not connected" – is almost always caused by one of the following:

  1. PROFINET master not activated on the KR C4. In WorkVisual go to the controller node, open the PROFINET master settings, and confirm the port is enabled and the project has been transferred with a cold restart.
  2. PROFINET name mismatch. The S110 was named in STARTER (e.g. s110-a1) but the KR C4 project uses a different name. DCP will not establish neighbour relations unless both sides agree.
  3. Topology cable not drawn. In the topology editor drag a connection from the KR C4 PN port to the S110 PN port 1. Saving the topology forces port-based LLDP neighbours and turns off the requirement for name assignment in some cases.
  4. Firmware / GSDML version mismatch. The GSDML must declare firmware that matches the S110. If the S110 ships with a newer firmware than the GSDML supports, the controller will reject the device with F01910 at AR start.

10. Verification Checklist

  1. Power S110 and KR C4. S110 PROFINET LEDs: green LINK + green RX/TX.
  2. On the KUKA SmartHMI: Diagnostics → PROFINET → IO Devices. S110 should show AR established and Data exchange.
  3. In STARTER online: the S110 project must show the green online indicator with cyclic traffic.
  4. Write $OUT[256] = 16#047E from KRL and read back $IN[256]. ZSW1 should mirror STW1 bits per the Siemens control-word state machine.
  5. Run a small jog motion through the external axis and verify $IN[259..260] (G1_XIST1) increments in the expected direction and resolution.

11. Diagnostic Word and Bit Reference

Word Bit Signal Source → sink
STW1 0 ON / OFF1 ctrl → drive
STW1 1 OFF2 (0 = coast) ctrl → drive
STW1 2 OFF3 (0 = quick stop) ctrl → drive
STW1 3 Enable operation ctrl → drive
STW1 4 Ramp-function generator enable ctrl → drive
STW1 7 Acknowledge fault (rising edge) ctrl → drive
STW1 10 Control by PLC ctrl → drive
ZSW1 0 Ready to switch on drive → ctrl
ZSW1 2 Operation enabled drive → ctrl
ZSW1 3 Fault present drive → ctrl
ZSW1 6 Switch-on inhibited drive → ctrl
ZSW1 10 f or n reached drive → ctrl
ZSW1 13 Alarm present drive → ctrl
NSOLL_A Speed setpoint (16-bit, N2 scaling) ctrl → drive
NIST_A Actual speed (N2 scaling) drive → ctrl
G1_XIST1 Encoder 1 actual position, 32-bit drive → ctrl

12. Troubleshooting Matrix

Symptom Likely root cause Action
S110 not visible in WorkVisual topology PN master disabled or project not deployed with cold restart Activate PN master port on KR C4, redeploy
AR fails to establish Telegram length mismatch between WorkVisual slot and STARTER configuration Match slot lengths byte-for-byte
AR fails to establish S110 PROFINET name mismatch Assign name via STARTER (p8920 family) or S110 web interface
Cyclic I/O not updating $Config.dat signals point to wrong offset Re-verify $IOSYS.ini mapping with WinPZAd
Drive trips F08501 PROFINET communication failure Inspect cabling, switch, IP/name, watchdog
Drive trips F01910 Fieldbus setpoint timeout (PN watchdog p2040) Verify submit-interpreter cycle, set p2040 ≥ 2× submit interval
Encoder feedback unavailable Using Standard Telegram 1 instead of position-capable telegram Switch to Telegram 3, 5, 6, 7, 9, 110, or Free Telegram 999 with G1_XIST1/2
Drive trips F08502 Sign-of-life failure Verify that the KRL submit interpreter is running (not halted, not in step)
Position error overflow MDI setpoint out of range Check traversing-block limits, encoder scaling (p2900)
Only S110 appears; controller not visible Topology not wired Drag cable from KR C4 port to S110 port 1; redeploy

13. Safety Considerations

The PROFINET-integrated SINAMICS S110 supports PROFIsafe for Safety Integrated functions such as STO, SS1, SOS, and SLS. The safety connection is normally terminated in the KUKA safety controller (if the relevant KUKA option is licensed), not in KRL. The control bits OFF1, OFF2, OFF3 mapped into $OUT[…] are non-safety operator commands. Functional stop categories F-F0/F-F1 must be implemented via PROFIsafe or hard-wired safe inputs on the S110 (e.g. F-DI on CU310 PN). For additional background on integrated positioning with Safety Integrated, see the Siemens Application Note SINAMICS S: Positioning of a S110 using S7-300/400 with PROFINET/PROFIBUS and Safety Integrated.

Warning: Never use $OUT[...] mapped OFF-bits as a substitute for hardwired STO. A stopped KRL submit interpreter or a PROFINET drop will not bring the drive to a safe state through these bits alone.

14. Alternative: KUKA.CNC Sinumerik

If the application is a CNC-style machining process with the KR C4 acting as a SINUMERIK 840D sl emulation, the KUKA.CNC Sinumerik option package lets the KRL runtime consume SINUMERIK telegrams natively and uses the Siemens PLC blocks (FB379, FB380, etc.) for axis control. For a single external positioning axis driven from a robot motion program, the WorkVisual + $Config.dat approach covered above is the simpler and more common path. Choose KUKA.CNC only when the S110 must behave like a SINUMERIK-managed spindle or path axis.

15. Reference Architecture Diagram

KR C4 compact PN IO-Controller WorkVisual project $Config.dat + KRL submit Managed switch LLDP, DCP Optional VLAN 100 Mbit/s full duplex SINAMICS S110 CU305 PN / CU310 PN PN IO-Device STARTER project PROFINET PROFINET KRL motion program DECL SIGNAL $OUT[..] Submit-interpreter cycle S110 firmware p2050 / r2051 connectors Telegram 999 / Standard STW1 / ZSW1 / NSOLL / G1_XIST1

16. State Machine Reference

Not ready Ready Switched on Operation Fault OFF1 OFF2=1 Enable Fault

17. Scaling Formulas

Speed setpoint and feedback use the N2 (16-bit) scaling defined in the S110 parameters. Convert between physical speed and the raw 16-bit value with:

n_raw = round(n_phys / p2000 × 16384)

with p2000 = reference speed (default 3000 rpm). For position feedback, the G1_XIST1 32-bit counter is scaled by the load gear / motor encoder resolution per p2900 family parameters.

FAQ

Which telegram should I choose for an SINAMICS S110 driven from KRL on a KR C4?

Use Standard Telegram 3 or 5 for most external-axis applications (16-bit speed setpoint + 32-bit position feedback); switch to Standard Telegram 110/111 for MDI mode, or to Free Telegram 999 when the KRL data width does not match a standard layout. Always match the telegram length in WorkVisual to the configuration in STARTER exactly.

How do I install the SINAMICS S110 GSDML into WorkVisual?

Open WorkVisual, go to Options → GSDML Files → Import, browse to the S110 GSDML (e.g. GSDML-V2.31-Siemens-Sinamics_S110-…xml), then drag the device under PROFINET IO → Drives → Siemens AG → SINAMICS into the topology under the KR C4 PROFINET master port.

Why does only the S110 appear in my WorkVisual PROFINET topology?

The KUKA robot arm itself is not a PROFINET node; the KR C4 is the PN master. If only the S110 shows and the AR will not establish, the PN master on the KR C4 may be disabled, the project may not have been redeployed with a cold restart, or the S110 PROFINET name does not match the value assigned in STARTER.

Can I use Free Telegram 999 with the S110 and KR C4?

Yes. Configure Telegram 999 in STARTER under Communication → PROFINET → Telegram configuration, define the PZD mapping (STW1/STW2/NSOLL_A for outputs, ZSW1/ZSW2/NIST_A/G1_XIST1 for inputs), then refresh the slot in WorkVisual so its length matches exactly. This is the most flexible option when the standard telegram layouts do not fit the KRL I/O map.

How do I map a Siemens status-word bit into a KRL boolean signal?

KRL does not provide direct bit-of-word access. Use a wrapper: read $IN[n] into an INT and test bits with BAND (bitwise AND) and BSH (bit shift), for example ((liStatus BAND (1 BSH 2)) <> 0) for ZSW1 bit 2 (operation enabled). Run this in a submit interpreter so the I/O cycle is deterministic.

Back to blog