SINAMICS S110 with S7-1200: Speed Control with Length Counter Setup
This technical reference covers a complete commissioning workflow for a SINAMICS S110 servo drive (CU305DP control unit) driving a 1FK7042 synchronous motor through a S7-1214C controller. The application is a band-pulling line that must run under closed-loop speed control, accumulate material length in a resettable counter, and surface drive faults, status, and safety information to the PLC for HMI alarming and trending.
Two parallel control paths are documented: the recommended basic positioner in JOG mode with override path, and the alternative ramp generator path with a position controller that is engaged only on demand. A real-world safety caveat documented in the field is highlighted: enabling the drive while the position setpoint is at zero and the actual position is non-zero causes the position controller to demand a step change that the drive will accelerate to follow, generating an unintended jerk on the band. The procedure below explicitly prevents this condition.
1. System Architecture
The S7-1214C exchanges cyclic process data with the S110 over PROFIBUS DP (or PROFINET when using CU305PN). The telegram in both directions must match. A free telegram 999 with BICO extension is also supported and is the right choice when you need length, status, and safety in one PZD frame.
2. Prerequisites
- S7-1214C CPU (any DC/DC/DC or DC/DC/RLY variant) with at least firmware V4.2 for full PROFIdrive conformance. Higher firmware V4.4 or V4.5 is recommended for HSC improvements.
- SINAMICS S110 with CU305DP control unit, firmware 4.7 SP3 or 5.2 (STARTER commissioning tool ≥ V5.4 or Startdrive in TIA Portal V17+).
- 1FK7042-xAF7x servo motor (Drive-CLiQ interface built in).
- PROFIBUS DP cable with D-sub connectors; PROFINET cable if a CU305PN is fitted.
- Length-sensing encoder (incremental, 24 V HTL or TTL) wired to the HSC inputs Ia0/Ia1 of the CPU, or to a TM PTO module if you run the counter on a signal module.
- TIA Portal V17 or later for SIMATIC S7-1200; STARTER or Startdrive for the S110 commissioning.
- Optional: CM 1241 RS485 if you use the USS-based positioning reference approach as a fallback path.
3. Telegram Selection in SINAMICS and S7-1200
The PLC and drive must use the same standard PROFIdrive telegram on both sides. The available telegrams for S110 in this hardware configuration are:
| Telegram | Setpoints (PLC → Drive) | Actual values (Drive → PLC) | Typical use |
|---|---|---|---|
| 1 | STW1, NSOLL_A (16-bit speed) | ZSW1, NIST_A | Basic speed control |
| 2 | STW1, NSOLL_B (32-bit speed) | ZSW1, NIST_B | High-resolution speed |
| 3 | STW1, NSOLL_B | ZSW1, NIST_B, FAULT_CODE | Speed with fault word |
| 4 | STW1, NSOLL_B | ZSW1, NIST_B, ZSW2 | Speed + extended status |
| 7 | STW1, STW2, NSOLL_B | ZSW1, ZSW2, NIST_B | Speed with two control words |
| 9 | STW1, NSOLL_B, M_LIM | ZSW1, NIST_B, MIST, FAULT_CODE | Speed + torque limit + actual torque |
| 102 | STW1, STW2, NSOLL_B, M_LIM, STW3 | ZSW1, ZSW2, NIST_B, MIST, ZSW3, FAULT_CODE | Speed + torque + safety bits |
| 103 | STW1, STW2, NSOLL_B, M_LIM, STW3 | ZSW1, ZSW2, NIST_B, MIST, ZSW3, FAULT_CODE | Speed + torque + safety bits (alt) |
| 110 | STW1, STW2, G1_STW, NSOLL_B, M_LIM, STW3 | ZSW1, ZSW2, G1_ZSW, G1_NIST_B, G1_XIST_A, MIST, ZSW3, FAULT_CODE | Basic positioner, EPOS mode |
| 390 | STW1, NSOLL_A, OFFSET, M_LIM | ZSW1, NIST_A, MIST, FAULT_CODE, WARN_CODE | Speed with offset + warn |
| 391 | STW1, STW2, NSOLL_B, M_LIM | ZSW1, ZSW2, NIST_B, IAIST, MIST, FAULT_CODE, WARN_CODE | Speed with current + warn |
| 999 (free) | User-defined via BICO | User-defined via BICO | Length counter, custom status |
Recommendation for this application: use telegram 110 when the basic positioner is active, or telegram 4 when the drive is configured as a pure speed follower. Telegram 110 carries G1_XIST_A, the 32-bit cyclic position actual value, which doubles as the length counter source if the motor encoder is mechanically coupled to the band roller. If you need torque and warning codes, switch to 9, 390, or 391. The free telegram 999 is the right choice when none of the standard telegrams fit the application because the setpoint and actual layout are mismatched with the available signals.
4. Configuring SINAMICS S110
4.1 Drive commissioning (STARTER / Startdrive)
- Open the S110 project offline and perform the online/offline comparison so the actual topology loads.
- Run the drive configuration wizard, accept the Drive-CLiQ topology, and confirm the 1FK7042 motor data (parameter
p0301) matches the nameplate. - Set the control mode to speed control with position controller as function module:
p1300[0] = 21(speed control with torque limit)
or, for the basic positioner path:
p1300[0] = 11andp10800 = 1(basic positioner active). - Configure telegram to match PLC:
p922 = 110for EPOS, or
p922 = 4for pure speed control. - Set JOG setpoints:
p2585 = JOG1 speed (e.g. 1500 rpm)
p2586 = JOG2 speed (e.g. 300 rpm)
p2640 = JOG acceleration (e.g. 200 rpm/s)
p2641 = JOG deceleration (e.g. 200 rpm/s). - Enable the position controller as a function module only when traversing. Right-click the axis in STARTER → Function modules → tick Position controller. Leave the ramp generator active in normal operation, switch to position controller only on demand.
- For length counter reset: parameter
p29220(set actual position) accepts a trigger from a digital input wired to the reset pushbutton, or a BICO source from STW bit-driven control word. - Save the project to ROM and copy RAM to ROM after each parameter change.
|XIST_A| < ε or when the position controller is disabled.4.2 Speed override path (basic positioner, JOG mode)
The basic positioner runs the motor in JOG mode with p2585 as the JOG1 reference velocity. The override is applied through the dedicated input p2646 (JOG override) in the range 0–100 % and is gated by the active JOG setpoint select bits in STW1 bits 8/9. The PLC can write a 16-bit word to NSOLL_B in telegram 110 and let the basic positioner close the loop on its own ramp generator, or it can command velocity directly via NSOLL_A/B with override scaling. This is the cleanest path for a band-pulling line because the basic positioner's ramp generator replaces a hand-coded ramp function in the PLC.
4.3 Ramp generator path (alternative)
If the position controller must remain active in the background for a future indexing operation, configure the ramp generator as the active setpoint source and treat the position controller as a function module that is engaged by control bits. The drive ramps up to the demanded velocity with p1120 (ramp-up) and p1121 (ramp-down), and the position controller is enabled only when bit 13 of the extended control word (STW2 bit 13) is set. To return to speed control, clear the bit and the ramp generator takes over. This path is workable but adds switching logic; the JOG-with-override path is preferred.
5. Configuring the S7-1200 PLC
5.1 Hardware configuration
- Add the S7-1214C to the TIA Portal project. Confirm the article number, e.g. 6ES7214-1AG40-0XB0 for DC/DC/DC.
- Insert the SINAMICS S110 device from the catalog (HSP for STARTER exported GSD) and assign the PROFIBUS address to match the rotary switches on the CU305DP, typically 3 or 4 for the first drive.
- Right-click the drive device → Properties → Telegram configuration and select the same telegram as the drive (110 for EPOS, 4 for speed).
- Map the cyclic PZD into a data block, for example
DB_Drivewith the first 12 bytes as the receive area and the next 12 bytes as the send area, or use process image tags directly.
5.2 Telegram structure for telegram 110
| Word offset | PLC → Drive (PZD) | Drive → PLC (PZD) |
|---|---|---|
| PZD 1 | STW1 (control word 1) | ZSW1 (status word 1) |
| PZD 2 | STW2 (control word 2) | ZSW2 (status word 2) |
| PZD 3 | G1_STW (EPOS control word) | G1_ZSW (EPOS status word) |
| PZD 4 | NSOLL_B (speed setpoint, 32-bit) | G1_NIST_B (speed actual, 32-bit) |
| PZD 6 | M_LIM (torque limit, 16-bit) | G1_XIST_A (position actual, 32-bit) |
| PZD 8 | STW3 (extended control) | MIST (torque actual, 16-bit) |
| PZD 9 | — | ZSW3 (extended status) |
| PZD 10 | — | FAULT_CODE |
5.3 STW1 bit assignment (key bits)
| Bit | Name | Function |
|---|---|---|
| 0 | ON/OFF1 | Rising edge enables the drive. Check precondition first. |
| 1 | OFF2 | 0 = coast to stop (immediate pulse inhibit). |
| 2 | OFF3 | 0 = fast stop with p1135 ramp. |
| 3 | Enable pulse | 1 = enable, 0 = inhibit. |
| 4 | Ramp-function generator enable | 1 = enable. |
| 5 | Unfreeze ramp generator | 1 = unfreeze. |
| 6 | Setpoint enable | 1 = accept setpoint. |
| 7 | Acknowledge fault | 0→1 edge acknowledges faults. |
| 8 | JOG1 | 1 = select JOG1 speed. |
| 9 | JOG2 | 1 = select JOG2 speed. |
| 10 | Control by PLC | 1 = control and setpoint via PROFIdrive. |
| 11 | Reversing | 1 = reverse direction. |
5.4 ZSW1 key bits
| Bit | Name | Function |
|---|---|---|
| 0 | Ready to switch on | 1 = OK to energize. |
| 1 | Ready to operate | 1 = ON command accepted. |
| 2 | Operation enabled | 1 = drive following setpoint. |
| 3 | Fault present | 0 = fault active. |
| 4 | OFF2 active | 0 = OFF2 present. |
| 5 | OFF3 active | 0 = OFF3 present. |
| 6 | Switch-on inhibit | 1 = cannot switch on (resync needed). |
| 7 | Alarm present | 1 = non-fatal alarm. |
| 8 | Speed setpoint-actual deviation | 0 = within tolerance band. |
| 9 | Control by PLC requested | 1 = drive expects PLC control. |
| 10 | f or n reached | 1 = setpoint reached. |
| 13 | Motor overtemperature alarm | 1 = alarm. |
6. Length Counter Implementation
There are two viable sources for the length counter. The cleanest is the SINAMICS S110's G1_XIST_A cyclic position actual value (telegram 110, PZD offset 6–7, 32-bit signed). It is updated every PROFIdrive cycle and is already in motor revolutions, which you can scale by the roller circumference to get millimetres. The alternative is a discrete encoder on the band roller, fed into an S7-1200 high-speed counter.
6.1 Reading G1_XIST_A in SCL
// DB_Drive layout (10 PZD words = 20 bytes per direction)
// Bytes 0..1 : ZSW1 | 2..3 : ZSW2 | 4..5 : G1_ZSW
// 6..7 : G1_NIST_B | 8..11 : G1_XIST_A | 12..13 : MIST | 14..15 : ZSW3
// 16..17 : FAULT_CODE
// Length counter using SINAMICS position actual
"DB_Length".PosActual_LU := "DB_Drive".G1_XIST_A; // load units
"DB_Length".PosActual_mm := "DB_Length".PosActual_LU
* "DB_Length".LU_to_mm_factor;
// Reset condition: HMI button OR digital input
IF "DB_Length".CmdReset OR "I_LengthReset" THEN
"DB_Length".PosActual_mm := 0;
"DB_Length".PosActual_LU := 0;
END_IF;
To reset G1_XIST_A in the drive, set bit 4 of G1_STW (set actual position) and write the desired position in the next telegram. The drive applies the new actual position on the next cycle. The basic positioner also supports p29220 as a BICO target to perform the same reset from a digital input on the CU305DP.
6.2 S7-1200 High-Speed Counter fallback
When a separate length encoder is mounted on the band roller, configure an HSC on the CPU. The S7-1214C supports up to 6 HSC instances (HSC 0..5). Wire the encoder to Ia0 (A) and Ia1 (B) for quadrature, which gives 4x the pulse count.
The HSC is configured in the CPU properties under High-speed counters (HSC). The relevant configuration follows the S7-1200 high-speed counter configuration in the TIA Portal manual collection.
| Parameter | Setting |
|---|---|
| Counting mode | Quadrature 4x (4x resolution) |
| Initial count value | 0 |
| Hardware interrupt on count value | Optional (e.g. on preset) |
| Frequency measurement | Enabled (period measurement for rpm) |
| Reset input | Ia3 (digital input, rising edge) |
| Maximum counting frequency | 100 kHz (CPU 1214C DC/DC/DC) or 200 kHz depending on variant |
The HSC is initialized once with the CTRL_HSC instruction in the startup OB:
// SCL in OB100 (startup)
CTRL_HSC( HSC := 0, // HSC instance
CTRL := 16#0, // 0 = use configured default
CV := 0, // initial count
RV := 0, // reference value
PERIOD := 0 );
// Reset in OB1 on operator request
IF "DB_Length".CmdReset OR "I_LengthReset" THEN
CTRL_HSC( HSC := 0,
CTRL := 16#2, // 2 = write CV
CV := 0 );
END_IF;
Convert the HSC count to millimetres using the encoder pulses-per-revolution and the roller circumference:
// Constants
"DB_Length".ppr := 4096; // 1024-line encoder at 4x
"DB_Length".roll_dia_mm := 250.0; // 250 mm roller
"DB_Length".pi := 3.14159265;
"DB_Length".PulsesToMM := "DB_Length".ppr
/ ("DB_Length".pi * "DB_Length".roll_dia_mm);
// Read count from HSC IDB
"DB_Length".Pulses := "HSC_0".CountValue;
"DB_Length".Length_mm := REAL_TO_LREAL("DB_Length".Pulses)
/ "DB_Length".PulsesToMM;
7. Reading Drive Status, Errors, and Safety
7.1 Status word and fault code from PZD
ZSW1 (status word 1) and ZSW2 (status word 2) arrive in the first two PZD words of every telegram. Bit 3 of ZSW1 indicates an active fault; the actual fault number is in FAULT_CODE in telegram 3, 9, 102, 110, 390, and 391. Decode the fault number against the SINAMICS S110 List Manual to map the code to a message text. The top faults you will see on a band-pulling line are:
| Fault code | Meaning | Likely cause |
|---|---|---|
| F30001 | Power unit overcurrent | Mechanical jam, encoder fault |
| F30002 | DC link overvoltage | Regenerative ramp too short |
| F30003 | DC link undervoltage | Supply brownout |
| F30011 | Line supply failure | Phase loss |
| F30017 | Power unit I²t overload | Continuous overload, wrong power class |
| F30021 | Ground fault | Insulation breakdown, moisture |
| F31100 | Encoder 1 zero mark error | Encoder cable damage |
| F31110 | Encoder 1 communication error | Drive-CLiQ link failure |
| F31810 | Encoder parameter error | Encoder ID mismatch |
| F31900 | Motor parameter error | p0301 not set, wrong motor selected |
| F32110 | Communication to encoder error | Drive-CLiQ plug loose |
| F50800 | Setpoint / actual value error | Telegram mismatch |
| F07800 | Drive: no power unit | Power unit not detected |
| F08501 | Drive-CLiQ topology error | Port order wrong |
| F01600 | STO active | Safety input open, OK in operation |
7.2 Reading the full fault buffer via acyclic services
For full fault text and timestamp, use acyclic parameter access. From TIA Portal, use the standard RDREC / WRREC instructions on the PROFIdrive slot. The fault buffer is parameter r0947[0..63] with r0949[0..63] as the time stamp. Read index 0 for the most recent fault:
// Acyclic read of r0947[0] (most recent fault number)
// Slot 0 = the drive's parameter channel
#ReqLen := 4;
#WriteLen := 0;
"RDREC_DB".REQ := "Cmd_ReadFault";
"RDREC_DB".ID := 16#100; // PROFINET/PROFIBUS HW ID of drive
"RDREC_DB".MLEN := #ReqLen;
"RDREC_DB".INDEX := 16#B02E; // standard PROFIdrive parameter access
// INDEX format 16#B0xx
"RDREC_DB".RECORD := #FaultRecord;
IF "RDREC_DB".DONE THEN
"DB_Status".LastFault := WORD_TO_INT("RDREC_DB".RECORD[0]);
"DB_Status".FaultTime := DWORD_TO_UDINT("RDREC_DB".RECORD[2]);
END_IF;
7.3 Safety status
Two paths exist for safety on the S110:
- STO via terminals on X131: STO-A and STO-B are 24 V inputs that pulse-inhibit the drive. Wire them to a dual-channel E-Stop relay. The safety state is reflected in ZSW1 bit 4 (OFF2 active) and the drive generates alarm A01600 / fault F01600 depending on configuration.
- PROFIsafe over PROFIBUS or PROFINET: requires a CU305DP with a safety option card (e.g. CU305DP-2 PN with PROFIsafe profile 3.4). The S7-1200 supports PROFIsafe with the S7-1200F CPU (e.g. 1214FC). The safety state arrives in a separate F-host frame and in ZSW1 bit 6 (switch-on inhibit active when safe stop is engaged).
For most band-pulling lines, STO via terminals is sufficient. The S7-1200 reads the safety state from the drive over PROFIdrive (ZSW1 bits) and from the F-DI on the safety relay to compute its own safety feedback. Do not use a single-channel E-Stop in the safety path; the category is at minimum 1 (ISO 13849-1) for stationary pull lines.
8. Commissioning Step-by-Step
- Wire and power up. Confirm Drive-CLiQ LEDs are steady green on the CU305DP and the SMC/SME module. Check that the 24 V control supply is clean (better than 21.6 V).
- Run the S110 commissioning wizard in STARTER or Startdrive. Accept the topology, motor, encoder, and set the current limit to the nameplate value.
- Save to ROM and run the drive in the local control panel of STARTER to verify the motor turns in both directions. Check the encoder direction with
p1909= 1 (only for motors with absolute encoder). - Set telegram 110 in the drive and match the same telegram in the S7-1200 device configuration.
- Compile and download the PLC project. Go online with both the PLC and the S110.
- Use the watch table in TIA Portal to monitor DB_Drive.ZSW1 and confirm the drive reaches the Ready to switch on and Ready to operate states before any setpoint is given.
- Set STW1 to 0x047E (control word for OFF1 + pulse inhibit + PLC control + setpoint enable) and verify the drive returns no fault.
- Configure the precondition: STW1 bit 0 (ON) is latched only when the position actual value is within the epsilon band OR the position controller is disabled. See ladder snippet below.
- Enable the drive (STW1 = 0x047F) and apply a small JOG setpoint. Observe DB_Drive.G1_NIST_B ramping up to p2585.
- Apply a 50 % override through p2646 via BICO and verify the speed scales correctly.
- Reset the length counter from the HMI and verify G1_XIST_A returns to zero. Pull material and confirm the counter increments in proportion to the speed setpoint and the roller circumference.
- Trigger a fault (e.g. disconnect a Drive-CLiQ cable) and confirm the PLC receives fault code, the HMI displays the message, and the operator can acknowledge and reset.
- Test E-Stop: pull the STO input and verify the drive pulses-inhibit within 5 ms, the safety relay latches, and the HMI shows Safe Torque Off active.
8.1 Precondition ladder in SCL
// Latch ON command only when no fault and position is within epsilon
// (or position controller is disabled)
"DB_Drive".Precond_OK := (NOT "DB_Drive".FaultActive)
AND ("DB_Drive".PosControllerActive = FALSE
OR ABS("DB_Length".PosActual_LU) < 5);
IF "I_Start" AND "DB_Drive".Precond_OK THEN
"DB_Drive".STW1 := "DB_Drive".STW1 OR 16#0001; // bit 0 = ON
ELSE
"DB_Drive".STW1 := "DB_Drive".STW1 AND 16#FFFE; // clear ON
END_IF;
9. Verification Checklist
| Test | Expected result |
|---|---|
| Drive reaches Ready to operate with no command | ZSW1 bit 0 and bit 1 set, bit 6 cleared |
| ON command latches with position at 0 | ZSW1 bit 2 (operation enabled) goes high |
| JOG1 setpoint applied | G1_NIST_B ramps to p2585 within p1120 |
| Override 50 % | G1_NIST_B settles at 50 % of p2585 |
| Length counter accumulates 1 m of material | G1_XIST_A increases by (1 m / roller circumference × gear ratio) LU |
| Reset command from HMI | G1_XIST_A snaps to 0 and the band length returns to 0 |
| E-Stop engaged | Drive pulses inhibit within 5 ms; alarm A01600 logged |
| Drive-CLiQ cable removed | Fault F31110 logged; ZSW1 bit 3 clears; HMI alarm |
| Fault acknowledged from HMI | ZSW1 bit 3 returns high; ready to operate |
| Stop the drive mid-pull with setpoint ≠ 0 | Motor ramps down with p1121; no jerk on band |
10. Troubleshooting Matrix
| Symptom | Likely cause | First checks |
|---|---|---|
| Drive does not energize (ZSW1 bit 6 set) | Switch-on inhibit, STO open, Drive-CLiQ topology error | Check X131 STO wiring, Drive-CLiQ LEDs, F08501 in r0947 |
| Drive reaches Ready but Operation enabled never sets | STW1 bit 0 not latched; OFF2 (bit 1) or OFF3 (bit 2) cleared | Inspect STW1, check PLC precondition |
| Motor accelerates uncontrollably at ON | Position setpoint = 0 and actual ≠ 0, position controller active | Verify precondition ladder, disable position controller at start, jog to home |
| Speed does not follow setpoint | Setpoint enable missing (STW1 bit 6), wrong telegram, NSOLL_B interpreted as 16-bit | Verify STW1 bit 6, check p922 telegram |
| Length counter drifts | Encoder slip, wrong ppr, wrong roller diameter | Calibrate with a known 1 m pull, verify ppr, check roller for wear |
| Length counter resets on its own | Power cycle of drive, G1_STW bit 4 spuriously set | Check for noise on G1_STW, add latching in PLC |
| HSC not counting | Wrong input assignment, encoder wiring, PLC in STOP | Verify Ia0/Ia1 wiring, PLC run state, CTRL_HSC call in OB100 |
| Fault F50800 on first run | Telegram mismatch between PLC and drive | Check p922 and S7-1200 device config |
| Fault F08501 on power-up | Drive-CLiQ ports swapped | Move motor to X202, encoder SMC to X201 |
| Fault F30002 on fast stop | Ramp too short for stored kinetic energy | Increase p1121, or add a brake resistor (1FK7042 needs none on small loads) |
| No safety state in ZSW1 | PROFIsafe not configured, or using STO terminals only | Use terminal feedback, monitor A01600 |
11. FAQ
Which telegram should I select for a band-pulling line with length counter and JOG override?
Use telegram 110. It carries the 32-bit cyclic position actual value G1_XIST_A, which is the length-counter source, plus the basic positioner control and status words needed to run JOG with override. Match p922 in the drive to telegram 110 on the S7-1200 side exactly.
Can I read the SINAMICS fault buffer from the S7-1200 without a separate tool?
Yes. Use acyclic parameter access through RDREC on the drive's parameter channel. The most recent fault is in r0947[0], the time stamp in r0949[0]. Drive the PROFIdrive parameter access via INDEX 16#B02E with attribute 0x10 for read.
Why does the drive jump to full speed when I enable it with the position setpoint at zero?
The position controller interprets the setpoint/actual error as a step demand and accelerates to close the gap. Latch the ON command in the PLC so the drive can only energize when the position actual is within an epsilon band or the position controller is disabled. This is a documented field failure mode for SINAMICS basic positioner applications.
Do I need a separate encoder for the length counter, or can I use the motor encoder?
For a slip-free capstan drive, the motor encoder is sufficient and is already in the cyclic PZD (G1_XIST_A). For a free-running band roller, mount a discrete encoder on the roller and read it through the S7-1200 high-speed counter (HSC 0..5), configured per the S7-1200 HSC configuration in the TIA Portal manual collection.
What is the maximum counting frequency of the S7-1214C high-speed counter?
The CPU 1214C DC/DC/DC supports 100 kHz on the digital inputs; the DC/DC/RLY variant supports 30 kHz. For higher frequencies, use a signal module such as the SM 1231 or a TM PTO. Always choose quadrature 4x for the highest resolution on incremental encoders.
Can I use USS instead of PROFIBUS to talk to the S110 from an S7-1200?
Yes, with a CM 1241 RS485 module and the S110 set to USS protocol. See the Siemens Configuration Example: Positioning a SINAMICS S110 with S7-1200 via USS for a working setup. USS is recommended only as a fallback because PROFIdrive PROFIBUS or PROFINET is faster, more deterministic, and supports the full telegram 110 layout.