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.inisymbolic 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.
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 PNorCU310 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
- Open WorkVisual and load the KR C4 project.
- Options → GSDML Files → Import… and browse to the S110 GSDML.
- In the catalog tree open PROFINET IO → Drives → Siemens AG → SINAMICS → SINAMICS S110.
- Drag the device into the topology under the KR C4 PROFINET master port.
- Assign a PROFINET device name (e.g.
s110-a1) and IP address (e.g.192.168.1.10). - 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
KPCgain,XERRposition error, or removing the speed word entirely).
5. Configuring Free Telegram 999 in STARTER
- Open the S110 in STARTER online or offline.
- Navigate to Communication → PROFINET → Telegram configuration.
- Delete the default telegram and insert Telegram 999.
- Define the PZD mapping by adding signals:
- Outputs (ctrl → drive):STW1(r2050[0]),STW2,NSOLL_A, optionalXERR,KPC.
- Inputs (drive → ctrl):ZSW1(p2051[0]),ZSW2,NIST_A,G1_XIST1,G1_XIST2. - Compile and download to the S110.
- 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:
- 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.
-
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. - 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.
-
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
F01910at AR start.
10. Verification Checklist
- Power S110 and KR C4. S110 PROFINET LEDs: green LINK + green RX/TX.
- On the KUKA SmartHMI: Diagnostics → PROFINET → IO Devices. S110 should show
AR establishedandData exchange. - In STARTER online: the S110 project must show the green online indicator with cyclic traffic.
- Write
$OUT[256] = 16#047Efrom KRL and read back$IN[256]. ZSW1 should mirror STW1 bits per the Siemens control-word state machine. - 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.
$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
16. State Machine Reference
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.