Problem Definition
Setup: a SIMATIC S7-1511 CPU drives a SINAMICS G120C over PROFINET to position a linear belt actuator. The motion sequence is:
- Move forward to position 1
- Move forward to position 2
- Return home (reverse direction)
Forward moves complete without fault. The home return move fails whenever the configured velocity exceeds a specific threshold (in the field report: above 1000, units application-dependent: rpm, mm/min, mm/s, or 0.1% reference speed). Below that threshold, the move completes. The S7-1500 Technology Object (TO) raises one of two alarm families at the moment of failure:
- Following error (dynamic lag exceeds the tolerance window during the move)
- Positioning error (target position not reached within the positioning window after the move)
Asymmetric failure (forward OK, reverse fault) is a strong indicator that one of the following is in play: asymmetric mechanical load, gravity acting on a vertical or inclined belt, backlash that engages differently on direction reversal, or a position controller tuned for one direction only. The fault is reproducible, which means it is deterministic and configuration-related rather than a random hardware failure.
Engineering Context
The S7-1500 family uses TIA Portal Technology Objects for motion control. The three relevant types are:
-
TO_SpeedAxis— open or closed speed loop only. -
TO_PositioningAxis— closed position loop with positioning commands (MC_MoveAbsolute, MC_MoveRelative, MC_MoveJog). -
TO_SynchronousAxis— gearing/camming to a master axis.
For a linear belt, the correct selection is TO_PositioningAxis. The position loop is closed inside the S7-1500 CPU; the G120C runs as a speed follower under one of the standard telegrams (typically 1, 2, 3, 5, 7, or 9). The CPU outputs a speed setpoint, reads the actual position back through the encoder interface, and computes the position error.
The G120C supports the CU240E-2 PN (PROFINET) and CU250S-2 PN Control Units. Telegrams 1-9 and the SIAM safety telegrams 100-106 ("telegram 10x" family) are configured in the drive and in TIA Portal's device configuration. The CPU and drive must agree on telegram layout; mismatches surface as commutation alarms, STW1/2 bit errors, or encoder sign errors.
Root Cause Analysis
Four primary root causes trigger following-error or positioning-error alarms above a specific velocity. They can be present individually or stacked.
Cause 1: Normalization Mismatch
The TO and the G120C must agree on three quantities: encoder resolution (increments per motor revolution), load gear ratio (motor revolutions to load units), and the load distance per motor revolution (belt travel in mm per motor rev). If any one is wrong, the value of ActualPosition on the TO diverges from the real mechanical position of the belt. The position controller closes the loop on the wrong variable. Below a certain velocity, the lag stays inside the tolerance window by chance; above the threshold, the error grows linearly with velocity and trips the alarm.
For a belt, the canonical parameter is Mechanics.LeadScrewPitch in TIA Portal, set to the pulley circumference in load units (mm). A typical 100 mm-pitch pulley driven by a 1:1 gearbox means the belt advances 100 mm per motor revolution. If the value entered is 50 mm or 200 mm, every commanded move is half or double the actual motion, and the controller will over- or under-shoot in proportion to velocity.
Cause 2: Position Controller Dynamics
The closed-loop position controller in TIA Portal exposes three gains (in modern firmware versions: Kp, Tn, Tv; in older versions a single Kv factor). The steady-state position error of a P-only position loop is:
e_steady = v / Kp
If Kp is fixed, the steady-state error grows linearly with velocity. A tolerance window that contains the lag at 1000 (units) does not contain it at 1500. The threshold effect described in the field report is a textbook sign of under-tuned Kp or a tolerance window scaled to a different v_max than the actual operating velocity.
If the controller is over-tuned, the response oscillates. In a belt with mechanical backlash, oscillation can drive the load against the backlash on reversal, producing large transient errors on every direction change. This is the second most common cause of "works in forward, fails in reverse" behavior.
Cause 3: Acceleration / Deceleration Ramp Too Aggressive
The TO generates a velocity profile (trapezoidal by default, S-curve if jerk limiting is enabled). If the configured acceleration is greater than the drive and load can mechanically deliver, the drive saturates at the current or torque limit. The actual velocity lags behind the setpoint velocity, producing a velocity-dependent position error proportional to the integral of the velocity difference.
Drive-side ramp generators (p1120 ramp-up time, p1121 ramp-down time on the G120C) clamp the velocity change. If the TO commands a velocity step of 1000 rpm in 100 ms, but p1120 = 5 s on the drive, the drive can only deliver 200 rpm/s. The drive becomes the limiting factor regardless of what the TO requests.
Asymmetric motion is a strong indicator of mechanical asymmetry:
- Vertical belt lifting a load: the drive must produce positive torque to lift. The lifting direction requires the most torque; the lowering direction needs regen or active braking.
- Inclined belt: gravity contributes positively to motion in one direction and negatively in the other.
- Belt with one-way mechanical stiffness: e.g., a belt that engages a catch on the home side but not on the work side.
Cause 4: Following-Error Monitoring Window Too Tight
The TO exposes dynamic and static following-error limits. The dynamic window is a position error threshold that scales with velocity. Default values in TIA Portal are conservative and sized for a v_max close to the configured maximum. If the application operates at a velocity substantially different from the assumed v_max, or if the load inertia is higher than assumed, the default window can be too tight.
The static window is checked at the end of motion: the target must be reached within PositionMonitoring.ToleranceTime. If the drive cannot complete the move at the commanded velocity because of torque saturation, the static window fires.
Diagnostic Workflow
The fastest path to a root cause is a four-step isolation procedure. Each step is non-destructive to the application.
Step 1: Identify the TO Alarm Number
Open TIA Portal online, navigate to Technology Objects → the affected axis → Diagnostics. Note the alarm code. Common codes for TO_PositioningAxis (TIA Portal V17/V18):
| Alarm ID | Meaning | First Check |
|---|---|---|
| 201101 | Following error (dynamic lag during motion) | Kp, acceleration, drive torque limit |
| 201102 | Following error (static, position not reached) | Drive torque saturation, brake, mechanical binding |
| 201103 | Encoder error | Encoder wiring, p0400, p0408 |
| 201105 / 201106 | SW limit switch approached / overrun | Software limit configuration, homing |
| 201107 / 201108 | HW limit switch approached / overrun | Wiring, negative logic, debounce |
| 201111 | Jerk limit violation | Jerk configuration, profile generator |
| 201112 / 201113 | Velocity / acceleration limit violation | Profile limits vs. configured v_max |
For S7-1500 motion control, the canonical reference is the SIMATIC S7-1500 Motion Control function manual, available on Siemens Industry Online Support, which lists the complete alarm catalog with troubleshooting actions.
Step 2: Open a TO Watch Table
Create a watch table in TIA Portal with the following tags (substitute your TO instance DB):
"TO_DB".ActualPosition // current position, load units
"TO_DB".ActualVelocity // current velocity, configured units
"TO_DB".SetpointPosition // commanded position
"TO_DB".SetpointVelocity // commanded velocity
"TO_DB".LagPosition // position error, load units
"TO_DB".StatusWord // TO status bits
"TO_DB".ErrorWord // error bits
"TO_DB".ErrorCode // detailed alarm number
Force a fault by jogging in the failing direction at the failing velocity. Capture the values of LagPosition, ActualVelocity, and SetpointVelocity at the moment of alarm. A healthy axis at steady state has a lag of 1-3% of the actual velocity at most. If the lag exceeds the configured FollowingError.MaxPositionError, the alarm fires by definition.
Step 3: Drive-Side Trace
Use the G120C's integrated webserver (default IP from PROFINET device configuration) or STARTER/WinCC to record the following parameters during the failing move:
| Parameter | Description | Why It Matters |
|---|---|---|
| r0061 | Speed setpoint smoothed (after ramp) | Compare to TO setpoint for ramp slowness |
| r0063 | Actual speed smoothed | Should track r0061 with ms-scale lag |
| r0078 | Current actual value | Compare to p0305 (rated current) |
| r0079 | Torque setpoint | Compare to r0080 actual |
| r0080 | Torque actual value | Saturation against p1520 / p1521 = torque-limited |
| p1520 / p1521 | Torque limit upper / lower | Default ±100% of rated torque |
| p1120 / p1121 | Ramp-up / ramp-down time | Higher value = slower drive response |
The full parameter set is documented in the SINAMICS G120C List Manual (LH13, edition 04/2014), which is the canonical parameter reference for the G120C family.
If r0080 saturates against p1520 or p1521 during the move, the drive is torque-limited. Torque limiting produces a velocity-dependent position error because the drive cannot accelerate at the rate the TO requests.
Step 4: Verify Asymmetric Load Behavior
If the move fails only in reverse, capture the drive parameters in both directions. A vertical or inclined belt needs the gravitational torque in only one direction. Compare:
-
r0080in forward vs. reverse (the lifting direction will show higher torque demand). -
p1520andp1521(verify the drive has headroom in the failing direction). - Mechanical inspection: backlash in the gearbox or belt coupling amplifies reversal errors.
Step-by-Step Resolution
Fix 1: Normalization Verification
Cross-check the following parameter groups. They must match on both the TO and the G120C:
| Quantity | TO (TIA Portal) | Drive (G120C) | Notes |
|---|---|---|---|
| Encoder type | Sensor.Type | p0400 | HTL / TTL / SSI / EnDat |
| Encoder resolution | Sensor.IncrementsPerRevolution | p0408 | Increments per motor revolution |
| Load gear ratio | Mechanics.LoadGearRatio (Numerator / Denominator) | None on G120C | Enter on TO only; no equivalent on speed-follower drive |
| Lead screw / belt pitch | Mechanics.LeadScrewPitch | None on G120C | Belt pulley circumference in load units |
| Direction inversion | Mechanics.InvertDirection | p0410 | Encoder direction inversion; both must agree |
For a belt with a pulley of circumference C mm driven through a 1:1 gearbox, set LeadScrewPitch = C. LoadGearRatio = 1:1. If the gearbox is external (e.g., 5:1 reduction from motor to belt pulley), set LoadGearRatio numerator = 5, denominator = 1 (motor rev → 5 load rev) and adjust LeadScrewPitch accordingly.
To verify normalization empirically, move the belt a known mechanical distance (e.g., 100 mm measured with a ruler) using a slow jog. Compare the change in ActualPosition on the TO. If 100 mm of belt movement produces 100 mm of TO position change, normalization is correct. If it produces 99 mm or 101 mm, the load gear ratio or lead screw pitch is off.
Fix 2: Position Controller Tuning
The TO position controller has three parameters in modern TIA Portal firmware versions:
- Kp: proportional gain (load-units/s per load-unit of error; or mm/s per mm in SI units).
-
Tn: integral time (s); integral action is active when
Tn > 0. -
Tv: derivative time (s); derivative action is active when
Tv > 0.
The steady-state position error of a P-only loop is:
e_steady = v_setpoint / Kp
For example, with v_setpoint = 1000 (units) and Kp = 10, e_steady = 100 units. This is not a usable position accuracy. To reduce the lag, either lower the operating velocity or raise Kp. The relationship is linear: doubling velocity doubles the lag, doubling Kp halves it.
Practical tuning procedure:
- Set
Tn = 0(disable integral action) andTv = 0(disable derivative action). - Start with
Kp = 1.0(or 10% of the maximum allowed by TIA Portal, whichever is lower). - Jog in the failing direction at the failing velocity. If the alarm persists, increase
Kpby 50% and retry. - Continue until the axis reaches setpoint with stable response (no audible oscillation, no overshoot, no limit-cycle).
- Once stable, add integral action:
Tn = 1to5 × the closed-loop response time(typically 0.5-2 s for a belt). - Add derivative action only if high-velocity reversal causes oscillation.
Tv = 0.1to0.5 × Tnis a safe starting point.
For an asymmetric load (vertical belt, gravity-loaded actuator), tune separately for up and down. The TO does not have separate Kp for each direction; the practical workaround is to enable torque pre-control in the TO (under Mechanics → LoadGear → Torque pre-control). The pre-control adds a feed-forward term that compensates for the constant gravitational torque. The remaining position error is then only the dynamic component (proportional to acceleration), which the position controller handles more cleanly.
Fix 3: Acceleration Ramp Sizing
The TO accepts the following dynamics parameters:
-
Acceleration: maximum acceleration in normal moves (load units/s²). -
Deceleration: maximum deceleration; may equal acceleration or be set independently. -
EmergencyStopDeceleration: maximum deceleration onMC_Stop. -
Jerk: rate of change of acceleration (enables S-curve profiling whenJerk > 0).
A drive can deliver only as much acceleration as the available torque allows. The maximum theoretical acceleration is:
a_max = (M_drive - M_load) / J_total
where M_drive is the motor's available torque, M_load is the resisting torque (positive when opposing motion, negative when aiding), and J_total is the total reflected inertia on the motor shaft.
For a horizontal belt with no load torque, the only limit is motor torque. For a vertical belt, the load torque in the lifting direction is M_load = m·g·r, and it subtracts from M_drive. In the lowering direction, the load torque adds to M_drive (gravity assists motion), and the drive must regenerate or brake.
Practical sizing rule:
- Set the TO
Accelerationat 50-70% of the calculateda_max. This gives headroom for transients. - Enable jerk limiting (S-curve profile) to reduce peak torque demand. A starting jerk of
10 × Accelerationto100 × Accelerationis typical for a belt. - If the drive current during a step-in-velocity profile saturates at the current or torque limit (visible in the trace as
r0078clamped atp0305), reduceAcceleration. - For a vertical belt, separately configure up-direction and down-direction acceleration if the application requires it. The TO does not have separate values per direction; the practical workaround is to lower the global
Accelerationto the lower of the two, and let the controller compensate with longer move times.
The drive-side ramps p1120 and p1121 on the G120C also clamp the velocity change. A safe rule:
p1120 ≥ (v_target − v_current) / a_max
If the TO ramp is 100 ms and p1120 is 5 s, the drive is the limiting factor. Reduce p1120 to match or undercut the TO's own ramp.
Fix 4: Following-Error Monitoring Window
The TO exposes two monitoring parameters (paths vary by TIA Portal version):
-
FollowingError.MaxPositionError: maximum steady-state position error. -
PositionMonitoring.ToleranceWindowandToleranceTime: positioning window at the end of motion.
The dynamic following-error window is a position lag that scales with velocity. The Siemens default is sized for a Kp of approximately 1.0 (1/s) and the configured v_max. If the application requires a different v_max, Kp, or has a heavy load, the default window may be too tight or too loose.
Verify the following:
- The window must be larger than the steady-state lag
e = v / Kpat the maximum operating velocity. - The window must be smaller than the application's maximum allowed position error (the manufacturing tolerance).
For a horizontal belt with Kp = 1.0 (1/s) and v = 1000 mm/min = 16.67 mm/s, e_steady = 16.67 mm. If the default window is 5 mm, it will trip. Either reduce the maximum velocity, increase Kp, or relax the window. For a typical belt application, a window of 10-20 mm at v = 16 mm/s is reasonable; for a high-precision pick-and-place, 1-2 mm with a higher Kp.
Fix 5: Torque Limits and Pre-Control
The G120C defaults to p1520 = +100% and p1521 = -100% of rated torque. Verify these match the application:
- For positioning with high-dynamic reversal, reducing
p1520andp1521below 100% reduces stress on the gearbox and couplings, but reduces dynamic performance. - For a vertical belt,
p1520(positive torque, motoric) may need to be > 100% briefly to lift the load on startup. Use parameterp1522/p1523(CI torque limit upper/lower) with a supplementary telegram input for dynamic torque limit setpoint, or size the motor such that rated torque exceeds the lift requirement. - Torque pre-control (TO) can compensate for known constant loads. Enable it under Technology Object → Configuration → Mechanics → Torque pre-control, and enter the gravity constant in load units.
The pre-control value is added to the position controller output. The position controller then only handles the dynamic error, which scales with acceleration rather than velocity. The steady-state error becomes near zero.
Telegram 10x Support and Torque Limiting
Available Telegrams on the G120C
| Telegram | Purpose | Process Data (in/out words) | Notes |
|---|---|---|---|
| 1 | Standard speed setpoint, 16-bit | 2 / 2 | Default for V/F and basic speed control |
| 2 | Standard speed setpoint, 32-bit | 4 / 4 | Higher-resolution speed |
| 3 | Speed + 2 position actual values | 4 / 6 | Recommended for positioning with encoder feedback |
| 5 | Speed + DSC (Dynamic Servo Control) | 4 / 6 | Speed control with high-dynamic position loop in drive |
| 7 | Positioning with DSC | 6 / 8 | High-dynamic positioning |
| 9 | MDI positioning with DSC | 12 / 12 | Direct setpoint input mode |
| 102 | SIAM + speed setpoint/actual | varies | Safety Integrated Axis Monitoring |
| 103 | SIAM + speed setpoint/actual + 1 position actual | varies | SIAM with position |
| 105 | SIAM + speed setpoint/actual + 1 position actual | varies | SIAM with position |
| 106 | SIAM + speed setpoint/actual + position control | varies | SIAM with closed-loop position |
"Telegram 10x" typically refers to the 100-106 SIAM family. These telegrams are required only when Safety Integrated functions on the drive (SS1, SS2, SLS, SDI, SOS) are active and need to be exchanged with a fail-safe controller. The plain G120C without safety license can run telegrams 1-9.
For the typical belt application described in the field report (no functional safety on the drive), telegram 3 is the recommended starting point. It carries the speed setpoint and 32-bit position actual values, and supports encoder feedback through the PROFINET interface. Telegram 5/7/9 add DSC, which closes the position loop in the drive rather than the controller. DSC is preferred for very high-dynamic axes (print registration, flying shear) but is not required for a belt with cycle times in the 100 ms range.
Torque Limiting in Telegram 1 / 3
Torque limits are passed in the process data as M_LIM (torque limit word) and M_ADD (additional torque setpoint). For standard telegrams 1 and 3, the torque limit word is in the cyclic setpoint. With TIA Portal and the S7-1500 TO:
- Open the G120C device configuration in TIA Portal.
- Select the drive under Device view → Properties → PROFINET interface → Telegram selection.
- Add telegram 3 (or your selected standard telegram) and, if required, a supplementary telegram 700, 701, 750, 902, or 903 for torque limit signals.
- Map the torque limit signals in the process image. The TO does not directly expose torque limit; the application code must write the M_LIM word in the cyclic setpoint block.
For positioning with torque limit, the recommended configuration on the G120C is:
- Telegram 3 (speed + position) for the position loop.
- Supplementary telegram 750 (torque limit values) for the M_LIM word, OR drive parameter
p1520/p1521set to a fixed percentage if dynamic torque limiting is not required.
Supplementary telegrams 902 and 903 carry torque force limiting on SINAMICS S/G drives. The G120C supports 902/903 in firmware V4.7 SP3 and later. For older firmware, use 750 or fixed-parameter torque limits.
Position Controller Architecture
Velocity Profile and Following Error Behavior
The shaded region between setpoint and actual velocity during reversal is the velocity-dependent position error. At a low velocity, the integral of the shaded area is small and fits inside the TO's tolerance window. At a high velocity, the same reversal dynamics produce a larger integral, exceeding the window and triggering the alarm. This is the threshold effect observed in the field report.
Verification Procedure
After applying any of the fixes above:
- Re-load the project to the S7-1500.
- Power-cycle the G120C if the telegram was changed (telegram changes require a restart on the drive).
- Re-run the original sequence: home → pos 1 → pos 2 → home.
- Monitor the TO online:
LagPositionshould stay within the configured window throughout. - Run the sequence at the highest velocity required by the application. The alarm must not fire.
- Run the sequence at 110% of the rated velocity briefly to confirm margin.
- Capture a final drive trace and TO watch table screenshot as the commissioning record.
Troubleshooting Matrix
| Symptom | Probable Cause | First Action |
|---|---|---|
| Alarm at velocity above threshold only, symmetric in both directions | Kp too low, or following-error window too tight | Increase Kp, or relax FollowingError.MaxPositionError
|
| Alarm only in reverse direction (lifting against gravity) | Asymmetric load, torque limit | Check r0080 saturation; enable torque pre-control; verify p1520
|
| Alarm only in forward direction (lowering with gravity) | Regen / braking limit, or mechanical backlash | Check brake resistor, DC link voltage; inspect belt for backlash |
| Alarm at every high-velocity move, symmetric | Acceleration ramp too aggressive | Reduce Acceleration; check p1120 / p1121
|
| Alarm with following error growing with v | Steady-state error exceeds window | Increase Kp or relax following-error window |
| Alarm with "position not reached" | Brake not released, mechanical issue, or velocity too low to reach target in time | Check brake release signal; verify SetpointVelocity non-zero |
| Alarm on first move only | Homing incomplete or home position offset | Run MC_Home before first positioning |
| Alarm in both directions at any velocity | Encoder wiring fault, normalization severely wrong | Check encoder signals with scope; verify Sensor.IncrementsPerRevolution vs. p0408
|
| Alarm with F30001 / F07412 drive fault | Drive-side fault (overcurrent, encoder) | Read drive r0945; check F fault catalog in G120C List Manual |
Drive Parameter Quick Reference (SINAMICS G120C)
| Parameter | Function | Default | When to Adjust |
|---|---|---|---|
| p0305 | Motor rated current | From motor code | Enter from motor nameplate |
| p0311 | Motor rated speed | From motor code | Enter from motor nameplate |
| p0400 | Encoder type selection | 0 (no encoder) | Set to encoder type used |
| p0408 | Encoder increments per revolution | 2048 | Match physical encoder |
| p0410 | Encoder inversion | 0 | Set 1 if direction is reversed |
| p1082 | Maximum speed | 1500 rpm | Set to motor rated or application max |
| p1120 | Ramp-up time | 10 s | Match TO ramp requirements |
| p1121 | Ramp-down time | 10 s | Match TO ramp requirements |
| p1520 | Torque limit upper | +100% | Adjust for application torque limits |
| p1521 | Torque limit lower | −100% | Adjust for application torque limits |
| p2000 | Reference speed | 1500 rpm | Reference for percent scaling |
| p2002 | Reference torque | From motor | Reference for percent scaling |
All parameters are documented in detail in the SINAMICS G120C List Manual, which is the canonical parameter reference. Field engineers should keep a copy of the List Manual local to the cabinet for commissioning and fault diagnosis.
Quick Sanity Test: Bypass the Position Controller
To confirm that the drive itself is capable of the failing velocity, use the TO's MC_MoveVelocity instruction with the PositionController input set to FALSE. The drive runs open-loop (no position loop) at the requested velocity. If the drive now reaches the failing velocity without alarm, the problem is on the TO side (normalization, position controller, or following-error window). If the drive still cannot reach the velocity, the problem is on the drive side (torque limit, current limit, mechanical).
To verify the actual position lag against the TO's reading, run MC_MoveVelocity at a low velocity, then at the failing velocity. Capture ActualVelocity and ActualPosition in a watch table. The reported position should track the actual mechanical motion when the belt is moved manually (e.g., with the drive disabled).
Field-Proven Cautions
p0408) configured in the drive, but the TO set to 1024 or 4096, produces a 2× or 0.5× scaling error. The error is invisible at low speed and grows with distance traveled.
p1120 = (v_target − v_start) / a_TO.
M_gravity = m·g·r in N·m, divide by the motor's rated torque, and enter as a percent. Sign the value positive for lifting loads (positive direction) and verify with a slow up-direction jog.
Tv damping if reversal transients exceed the window.
FAQ
Why does the S7-1500 TO raise a following error above 1000 velocity but not below?
The steady-state position lag is v / Kp. If Kp is fixed and the tolerance window is fixed, raising v eventually pushes the lag outside the window. Below 1000, the lag fits; above 1000, it does not. Increase Kp, raise the tolerance window, or lower the maximum velocity. Verify with the formula e_steady = v / Kp before tuning.
How do I confirm normalization is correct on a G120C and S7-1500 TO?
Move the belt a known mechanical distance (e.g., 100 mm with a dial indicator). Compare the change in TO ActualPosition. If 100 mm of belt movement produces 99 mm or 101 mm of TO position change, the load gear ratio or lead screw pitch is off. Match TO Mechanics.LeadScrewPitch to the belt pulley circumference, set LoadGearRatio to 1:1 for a direct-drive belt, and verify Sensor.IncrementsPerRevolution against drive parameter p0408.
Which Siemens telegrams does the G120C support for torque limiting?
Standard telegrams 1, 2, 3, 5, 7, and 9. SIAM telegrams 100-106 (the "10x" range) for safety-integrated applications and require an S7-1500F CPU. Torque limits are carried in M_LIM in the cyclic setpoint of telegram 1 and 3. For positioning with torque limit, use telegram 3 plus supplementary telegram 750 (or 902/903 on firmware V4.7 SP3+), or use fixed-parameter limits p1520/p1521 if dynamic torque limiting is not required.
How do I size the acceleration ramp for a G120C-driven belt?
Start with the mechanical limit: a_max = (M_drive - M_load) / J_total. Configure TO Acceleration at 50-70% of a_max. If the drive saturates at the current or torque limit during the move (check r0080 against p1520/p1521), reduce acceleration. If response is too slow, raise p1520/p1521 within motor capability, or upsize the motor. The drive ramp p1120/p1121 should be no greater than (delta_v) / a_max of the TO profile, with the TO profile taking precedence.
Can the S7-1500 TO position loop be bypassed for a pure speed-controlled move to verify the drive?
Yes. Use MC_MoveVelocity with the PositionController input set to FALSE, or use MC_MoveJog. The TO closes the speed loop without the position loop. If the drive now reaches the failing velocity without alarm, the problem is on the TO side (normalization, position controller, or following-error window). If the drive still cannot reach the velocity, the problem is on the drive side (torque limit, current limit, mechanical).