SIMOTION D445 Optimizing PTC and VTC for SINAMICS S120 Mode

David Krause12 min read
Motion ControlSiemensTroubleshooting
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. Problem Description

A SIMOTION D445 controller running a SINAMICS S120 drive over PROFIBUS DP must hand a high-inertia winding drum from a continuous velocity-controlled travel mode into a position-controlled setpoint of 360° on a hot-strip coiler. The strip enters the coiler at roughly 7 m/s and the drum is spinning at approximately 152 rpm when the master issues the positioning command. Instead of a smooth handoff, the drive exhibits a three-phase transient:

  1. Hard braking from 152 rpm down to roughly 53 rpm with a large, jerky deceleration.
  2. Re-acceleration from 53 rpm back to about 90 rpm with a smaller, sluggish ramp.
  3. Final approach to the commanded 360° target with a normal profile.

This three-stage shape is the classic fingerprint of an un-tuned equivalent time on the position controller. The drive momentarily misreads the open-loop velocity as a huge following error, slams on the brakes, and only settles once the closed-loop position controller catches up. The fault is not mechanical and is not in the SINAMICS S120 power section; it is in the SIMOTION controller's VTC (Velocity Time Constant) and PTC (Position Time Constant) parameters, and the way the PROFIBUS DP cycle is factored into them.

2. SIMOTION D445 and SINAMICS S120 Architecture

The relevant hardware for this scenario is the SIMOTION D445 motion controller, a SINAMICS S120 booksize or chassis drive line-up, and a PROFIBUS DP / PROFINET isochronous link between them. The full SIMOTION D445 system manual is available from the Siemens SIMOTION D445 product support page, and the SINAMICS S120 parameter list from the SINAMICS S120 List Manual.

Component Role in this application Key configuration data
SIMOTION D445 Master motion controller, runs TO axis, IPO, position/velocity controller IPO clock, position controller cycle, dynamicData and dynamicQFData
SINAMICS S120 (CU320-2 DP) Closed-loop torque/speed servo Servo clock, p0115, p115[0..4], telegram 5/6/105/106
PROFIBUS DP Setpoint and actual-value exchange Bus cycle, Ti/To, isochronous mode
Winding drum + motor (e.g. 1PH8) Mechanical load, high inertia Load inertia, gear ratio, friction
Hot-strip entry section Disturbance source from line tension Speed reference, tension loop

The controller closes its position loop in the IPO/position-controller clock, and uses a virtual equivalent time to model the delay between commanded and actual position. When the operating mode flips from velocity to positioning, the equivalent time is what determines the initial behavior of the loop.

3. Mode Switching Fundamentals

SIMOTION supports multiple operating modes per axis: speed-controlled, position-controlled, synchronous, and referencing. Switching between them while the axis is already moving is fully supported but requires a defined dynamic model. The point of contact between the two modes is the equivalent time of the position controller, set in the configuration of the technology object (TO):

  • Electric axes: dynamicData.positionTimeConstant
  • Hydraulic axes: dynamicQFData.positionTimeConstant

The reference for these configuration blocks is the SIMOTION Motion Control - Configuration of Dynamic Response manual. The same concept shows up in the S7-1500T Motion Control instructions - see Switching the position control off and on (S7-1500, S7-1500T) - so the diagnosis is transferable to TIA Portal V20 motion projects.

4. Root Cause: Equivalent Time of the Position Controller

When the operating mode is changed from speed-controlled to position-controlled while the axis is already in motion, the equivalent time Tp of the position controller is what the closed loop uses to model how fast the controller can react. The position controller is effectively a P-action controller with precontrol, and its open-loop behavior is approximated by a first-order lag with time constant Tp.

The error observed on the winding drum is the textbook symptom of Tp being too small relative to the actual closed-loop dead time:

Observed phase rpm range What is happening Cause
Hard braking 152 → 53 Controller interprets large velocity as a huge following error, slams on opposite torque Equivalent time of the position controller is too short, position loop gain looks infinite
Re-acceleration 53 → 90 Following error collapses once setpoint ramp is applied, controller recovers Velocity precontrol finally engages after a few cycles
Final approach 90 → 0 → 360° Stable closed-loop behavior Position loop is now in steady state with a correct ramp

In a properly tuned system the rpm trace after the mode change should be a smooth ramp into the final position, not a U-shape. The U-shape is the controller's way of telling you that the equivalent time you configured is not equal to the real closed-loop dead time on the bus.

5. Following Error Dynamics

The following error at the moment of switchover is:

e(0) = v_actual × (T_sw + T_p) ≈ v_actual × T_p

where vactual is the speed at the instant the mode flips and Tsw is the time the controller takes to register the switch. With vactual ≈ 152 rpm = 15.92 rad/s and a typical under-tuned Tp of 0.5 s, the initial following error is on the order of 8 rad (≈ 460°). The position controller immediately generates a torque demand proportional to that error, which is why the drive slams the brakes on.

Once the setpoint ramp starts to play out (after a few IPO cycles), the actual velocity tracks the ramp and the following error collapses. The controller then has to re-accelerate the drum to the ramp's correct value, which produces the second slope in the rpm trace (53 → 90 rpm). Only at that point does the system enter normal position-controlled behavior.

6. Solution: Optimizing VTC and PTC

The fix is to set the equivalent time of the position controller to match the real closed-loop dead time of the system. The relevant parameters are:

Parameter Location (electric axis) Meaning
PTC (Position Time Constant) TO.dynamicData.positionTimeConstant Equivalent time of the closed position loop
VTC (Velocity Time Constant) TO.dynamicData.velocityTimeConstant Equivalent time of the closed velocity loop
IPO clock SIMOTION project → target system Cycle of the position controller
PROFIBUS Ti/To SINAMICS p115[0..4] and HW Config Input/output delay of the bus cycle

6.1 Closed-Loop Dead Time Budget

The position controller's equivalent time must include every delay that sits between the position setpoint leaving the IPO and the actual position coming back. For a SIMOTION D445 + SINAMICS S120 over isochronous PROFIBUS DP with telegram 5, the dead time budget looks like this:

  1. IPO cycle TIPO (typical 1 ms, sometimes 2 ms or 4 ms)
  2. Position controller cycle TP = TIPO
  3. Velocity controller cycle on SINAMICS TV (typical 250 µs for servo control)
  4. PROFIBUS Ti (input update time, configured on the CU, e.g. 1 ms)
  5. PROFIBUS To (output update time, configured on the CU, e.g. 1 ms)
  6. PROFINET/PROFIBUS cable and repeater delay (sub-µs, ignored for tuning purposes)
  7. Current controller cycle and PWM (typically 125 µs, ignored for tuning purposes)

The PTC should be set to the sum of these delays, with a small safety margin:

T_p = T_IPO + T_V + Ti + To + T_safety

For a typical PROFIBUS installation with 1 ms IPO, 250 µs velocity controller, 1 ms Ti, 1 ms To, this gives Tp ≈ 3.25 ms. Round up to 4 ms or 5 ms to leave headroom.

6.2 VTC (Velocity Time Constant)

The VTC is the equivalent time of the velocity loop. It is usually a few hundred microseconds to a few milliseconds, set in TO.dynamicData.velocityTimeConstant. The rule of thumb is:

T_v ≈ 2 × T_current_controller + T_velocity_clock

For a SINAMICS S120 with the default 250 µs velocity controller and 125 µs current controller, the VTC should be on the order of 0.5 ms to 1 ms.

7. Step-by-Step Tuning Procedure

  1. Record the bus and controller cycle in SCOUT or TIA Portal: IPO clock, position controller cycle, SINAMICS p0115[0..4], PROFIBUS Ti/To from the device configuration.
  2. Compute the closed-loop dead time from Section 6.1. For a 1 ms IPO + 1 ms Ti + 1 ms To, expect 3 to 4 ms.
  3. Set positionTimeConstant on the TO's dynamicData to the computed value (e.g. 4 ms). For hydraulic axes, set the same value on dynamicQFData.positionTimeConstant.
  4. Set velocityTimeConstant to the value computed in Section 6.2 (e.g. 0.75 ms).
  5. Download to the D445 and run a controlled test on the coiler. Trigger the mode switch at 152 rpm, monitor the actual rpm and the following error trace in the trace tool.
  6. Iterate: if the trace still shows a U-shape, increase positionTimeConstant in 0.5 ms steps. If the loop becomes sluggish, reduce it. Do not go below 2 × TIPO.
  7. Validate with the strip actually moving at 7 m/s and the drum under tension. The mode switch should produce a single smooth ramp.
Warning. Tuning VTC and PTC too low can make the position loop unstable. Never set positionTimeConstant below 2 × IPO clock, and never set it to zero - SIMOTION will interpret zero as "no equivalent time" and the position loop will be effectively open for the first cycle.

8. PROFIBUS and PROFINET Considerations

The PROFIBUS cycle, the isochronous Ti/To, and the chosen telegram all enter the equivalent time. For a SIMOTION D445 with a CU320-2 DP and telegram 5/6, the standard configuration is:

Parameter Typical value Source
Telegram type Standard telegram 5 or 6 HW Config → drive
PROFIBUS cycle 1 ms (must equal IPO clock for isochronous mode) HW Config → network
Ti (input) 1 ms Drive properties → isochronous
To (output) 1 ms Drive properties → isochronous
Sinamics p115[0] 1 ms (PROFIBUS Ti) Drive expert list

If you are using PROFINET instead of PROFIBUS, the isochronous SendClock and ReductionRatio determine the same Ti/To. The same Tp calculation applies, with the PROFINET update time substituted for Ti/To. See the SIMOTION Communication System Manual for the configuration of isochronous PROFINET.

9. Verifying the Fix

After the new VTC and PTC are loaded and the axis is in run, the verification should be:

  1. Trigger the mode switch at 152 rpm exactly as in the original fault.
  2. Record the actual rpm trace. The transition from velocity mode to position mode should appear as a single ramp, not a U-shape.
  3. Record the following error trace. Peak following error should be < 0.5 rev during the switch, settling in < 50 ms.
  4. Check the SINAMICS trace for any F-class fault during the switch (e.g. F01151, F07452). A clean trace confirms the closed loop is stable.
  5. Check the trace tool alarm log for axis alarms A1 (communication), A2 (following error), or A3 (limit) during the switch.

10. Related Parameters and Where to Find Them

Parameter Tool / location Default Tuned (this case)
dynamicData.positionTimeConstant SCOUT → axis → configuration → dynamics 0.0 s 0.004 s
dynamicData.velocityTimeConstant SCOUT → axis → configuration → dynamics 0.0 s 0.00075 s
axis.ipo.TimeCycle SCOUT → target system 2 ms 1 ms
SINAMICS p115[0] Drive expert list 0 1 ms
PROFIBUS Ti/To HW Config Auto 1 ms / 1 ms
TO.followingError.maxValue SCOUT → axis → monitoring 1 rev 0.5 rev

11. Edge Cases and Field-Proven Caveats

  • Telegram mismatch. If the SIMOTION project and the SINAMICS drive are configured with different telegrams (e.g. 5 vs 6), the isochronous handshake fails and the controller falls back to non-isochronous mode. The Ti/To in that case are not valid; check for fault A1 on the axis.
  • IPO clock too long. If the IPO clock is 4 ms or more, Tp must be at least 8 ms, and the loop will be sluggish. For a coiler running at 7 m/s, an IPO of 1 ms is the practical minimum.
  • Hydraulic axes. The parameter is dynamicQFData.positionTimeConstant, not dynamicData.positionTimeConstant. Forgetting to set the QF variant is a common commissioning bug. See the SIMOTION Motion Control manual, section 2.11.5.
  • Precontrol missing. If positionControl.gainFactor is set to 0 or the velocity precontrol is disabled, the position controller must integrate the entire following error on its own, which amplifies the switchover transient. Enable precontrol for high-inertia axes.
  • Mechanical backlash. A backlash in the gear train between the motor and the drum will re-create the U-shape on the rpm trace, but the cause is mechanical. Check with the motor de-coupled before tuning VTC and PTC.

12. Diagnostic Matrix

Symptom Likely cause Action
Hard braking then re-acceleration (U-shape) Position Time Constant too low Increase positionTimeConstant
Sluggish approach to 360° target Position Time Constant too high Reduce positionTimeConstant in 0.5 ms steps
Oscillation at the target Position controller gain too high, or equivalent time too low Reduce Kv factor and re-check PTC
Following error alarm at switch Equivalent time not matching real closed-loop delay Recompute T_p from Section 6.1
Fault F07452 on SINAMICS Drive-side following error exceeded Increase p2546 (following error limit) only after tuning PTC
Fault F01151 on SINAMICS PROFIBUS isochronous handshake lost Check telegram, Ti/To, PROFIBUS cable
Mode switch never engages TO not in "velocity-controlled + position-allowed" state Check axis.actualMode and axis.operationalMode in the user program

13. Summary of the Fix

For the original problem on the hot-strip coiler, the operator's velocity-controlled loop was perfect, the pure position-controlled loop was perfect, but the switching between them was unstable. The cure is to align the SIMOTION D445's equivalent time of the position controller (PTC, in dynamicData.positionTimeConstant) with the real closed-loop dead time of the SIMOTION → PROFIBUS → SINAMICS S120 chain. The closed-loop dead time in this case is the IPO cycle (1 ms) plus the PROFIBUS Ti and To (1 ms + 1 ms) plus the velocity controller cycle (0.25 ms), giving approximately 3.25 ms. With the PTC raised to 4 ms and the VTC raised to 0.75 ms, the U-shape in the rpm trace collapses into a clean single ramp and the 360° positioning completes in one smooth pass.

FAQ

What is the Position Time Constant (PTC) on a SIMOTION axis?

The PTC (dynamicData.positionTimeConstant for electric axes, dynamicQFData.positionTimeConstant for hydraulic axes) is the equivalent time the SIMOTION position controller uses to model the closed loop. It must equal the real dead time of the SIMOTION → bus → SINAMICS chain, otherwise the controller misreads the closed-loop response at a mode change.

How do I calculate the required PTC for a SIMOTION D445 + SINAMICS S120 over PROFIBUS?

Sum the IPO cycle, the velocity controller cycle on the SINAMICS, and the PROFIBUS Ti and To. For a 1 ms IPO, 250 µs velocity clock, and 1 ms Ti + 1 ms To, set the PTC to 3 to 4 ms. Round up by 0.5-1 ms to leave safety margin.

Why does the drive slam on the brakes at the mode switch?

Because the PTC is too low, the position controller treats the open-loop velocity at the instant of the switch as a huge following error and generates a large opposite torque. The result is a hard brake from 152 rpm to roughly 53 rpm. Raising the PTC to the real dead time eliminates this initial peak.

Does the same tuning apply to PROFINET?

Yes. The equivalent time calculation is identical, with the PROFINET SendClock × ReductionRatio substituted for the PROFIBUS Ti/To. A 1 ms PROFINET update is typical for SIMOTION D445 in isochronous mode.

What is the difference between VTC and PTC?

VTC (velocityTimeConstant) is the equivalent time of the closed velocity loop, typically 0.5 to 1 ms for a SINAMICS S120. PTC (positionTimeConstant) is the equivalent time of the closed position loop, which is always larger because it includes the bus delay. Both must be set for stable mode switching on high-inertia loads.

Back to blog