Sinamics G120 PROFIdrive Position Scaling: Troubleshooting Guide
When a Sinamics G120 drive controlled via PROFIdrive reports a position that is consistently wrong by a factor of two to five, the root cause is almost always in the mechanical-to-electrical scaling chain. This reference walks through the PROFIdrive position-control architecture, the belt-and-pulley scaling math, the encoder A/B single versus fourfold evaluation decision, and the exact TIA Portal / Startdrive commissioning sequence needed to recover a stable, repeatable positioning result on a belt-driven axis.
1. Problem Description and Field Symptom
The reported fault is a scaling error, not a hardware fault. The drive does not generate an alarm, the PROFIdrive telegram remains in cyclic Operation enabled state (ZSW1 bit 2 = 1, ZSW1 bit 6 = 1), and the motor runs smoothly. Only the relationship between commanded and actual position is wrong.
1.1 Observed Behavior
- Commanded position from S7-1500/S7-1500T technology object: 100 mm
- Measured actual position at the load: 23 mm
- Position error reported by TO: 77 mm (positive, indicating under-travel)
- Following error (LAG) follows the position error and reaches the configured tolerance window only when motion stops early
- Reversing direction does not change the ratio; the under-travel is symmetric in both directions
1.2 Mechanical Layout (Belt + Two Pulleys)
| Pulley | Mounted on | Teeth | Pitch | Calculated circumference |
|---|---|---|---|---|
| Pulley 1 (drive) | Motor shaft | 40 | 3 mm | 40 × 3 = 120 mm |
| Pulley 2 (feedback) | Encoder shaft | 40 | 2 mm | 40 × 2 = 80 mm |
The belt is a single continuous loop, so its linear velocity is identical at both pulleys. The 120 mm and 80 mm values are per-revolution linear travel of the belt, not the diameters of the pulleys. Because the two pulleys have different tooth pitches, they rotate at different speeds for the same belt travel. The encoder therefore rotates 120 / 80 = 1.5× faster than the motor.
1.3 Encoder
- Pulses per revolution (PPR) on nameplate: 1000
- Output type: HTL or TTL differential (must be verified on drive)
- Wired to: SINAMICS G120 Control Unit (e.g. CU250S-2) encoder interface X9 or X2102
2. PROFIdrive Position Control Architecture
The PROFIdrive profile specifies the application classes and telegrams used to close position, velocity, and current loops between an external controller (SIMATIC S7-1500/S7-1500T) and a drive (SINAMICS G120). For motion control applications, the controller typically closes the position loop, while the drive closes velocity and current loops internally.
2.1 Application Classes
| Class | Function | Position loop closed in | Typical telegram |
|---|---|---|---|
| AC1 | Velocity setpoint from PLC, drive closes velocity loop | PLC (if used) | Standard telegram 1, 2 |
| AC3 | Position controller in drive, position setpoint via PROFIdrive | Drive | Standard telegram 3, 5 |
| AC4 | Position controller in PLC, drive follows velocity setpoint | PLC | Standard telegram 1, 2 with DSC |
For belt-driven positioning axes where the encoder is mounted on a non-load-side pulley, AC4 with Dynamic Servo Control (DSC) is the most common choice on the S7-1500T platform. DSC moves the position loop into the drive so that even with a non-rigid belt, dynamic following error is minimized. Configuration of the PROFIdrive telegram is documented in the Siemens TIA Portal documentation.
2.2 Telegram Components Relevant to Scaling
- NSOLL (setpoint speed) / XIST_A (actual position): transmitted cyclically in telegrams 3, 5, 6, 103, 105, 106
- Gx_XIST1 / Gx_XIST2: encoder raw position, 32-bit, increments
- NIST_B / Gx_XIST1: feedback values used by the technology object
The technology object in the S7-1500 converts the raw increments into load units (LU) using the load gear, motor revolutions, and leadscrew / belt pitch parameters configured in TIA Portal. Every parameter on this chain must be correct for the position error to disappear.
3. Mechanical Scaling Fundamentals
For a belt-pulley axis the canonical relationship is:
Linear travel per motor revolution L_motor = teeth × pitch (mm)
Linear travel per encoder revolution L_enc = teeth_enc × pitch_enc (mm)
Mechanical ratio i = L_motor / L_enc (revolutions of encoder per motor rev)
Applying these formulas to the case at hand:
- L_motor = 40 × 3 = 120 mm/rev
- L_enc = 40 × 2 = 80 mm/rev
- i = 120 / 80 = 1.5
3.1 Position Error Source Categories
| Source | Type | Symptom | Detection method |
|---|---|---|---|
| Wrong load distance per motor revolution | Mechanical parameter | Linear offset proportional to travel | Compare commanded vs measured distance |
| Wrong load gear ratio | Mechanical parameter | Linear offset proportional to travel | Inspect TO configuration |
| A/B evaluation mismatch | Encoder parameter | 4× or 2× error exactly | Compare raw counts vs expected counts |
| Encoder wiring / noise | Hardware | Random jitter, intermittent alarms | Check signal quality with Starter/Startdrive trace |
| Belt slip on pulley | Mechanical | Variable error proportional to load | Compare loaded vs unloaded position |
| Encoder mounted on wrong shaft | Mechanical / wiring | Permanent non-integer ratio error | Verify encoder-to-load mechanical chain |
3.2 Per-Inch Calculation
If the encoder delivers N counts per revolution and the TO is configured for E evaluation (1 for single, 2 for double, 4 for quadruple):
Counts per encoder rev = N × E
Counts per motor rev = (N × E) × i
Linear travel per count (load units per count) = L_motor / ((N × E) × i)
For the field case with 1000 PPR, A/B fourfold, mechanical ratio 1.5:
- Counts per motor rev = 1000 × 4 × 1.5 = 6000 counts
- Linear travel per count = 120 mm / 6000 = 0.02 mm/count
If the TO is mistakenly configured for A/B single (E = 1) but the drive hardware is delivering fourfold edges (E = 4), the TO reads 1/4 of the actual count, the displayed position lags 4× behind reality, and the controller commands 4× as much travel before the position window closes. The error factor will be exactly 4 in a clean case; a value of 4.35 (giving 23 mm instead of 25 mm) suggests partial slip or stretch on top of the 4× scaling defect.
4. Encoder Configuration: A/B Single vs Fourfold
Incremental encoders deliver two square-wave channels (A and B) 90 electrical degrees apart. The number of edge transitions per mechanical revolution determines how the drive evaluates the signal.
| Evaluation | Edges counted per PPR cycle | Counts per rev (1000 PPR) | Required signal quality |
|---|---|---|---|
| A/B single (x1) | 1 rising edge per channel | 1000 | Minimum |
| A/B double (x2) | 2 edges per channel | 2000 | Better |
| A/B fourfold (x4) | 4 edges per channel | 4000 | High |
4.1 Drive-Side Selection (Starter / Startdrive)
In the SINAMICS G120 commissioning tool (Starter or Startdrive), the encoder is configured under Drive -> Configuration -> Encoder interface. Parameters:
-
p0408= encoder pulses per revolution (default nameplate value: 1000) -
p0421= absolute encoder type (set to incremental) -
p0430= signal evaluation for encoder 1:0= single,1= double,2= fourfold -
p0431= zero mark evaluation (typically disabled for incremental positioning)
The value of p0430 must match the actual signal quality. With TTL differential signals (RS-422) and short shielded cables, fourfold is reliable. With HTL single-ended signals or long cable runs, fourfold becomes unreliable and the drive may count phantom edges; single evaluation is then the correct choice. The selected evaluation mode must be consistent between the drive (Starter/Startdrive) and the technology object (TIA Portal).
4.2 Technology Object Side (TIA Portal)
In the S7-1500 / S7-1500T technology object, under Configuration -> Encoder:
- Encoder type: incremental
- Signal evaluation: must match the drive
- Counts per revolution: derived from PPR × evaluation
- Reference mark: not used for incremental-only axis
5. Root Cause Analysis
The reported 100 mm → 23 mm symptom has the following root-cause chain:
- The drive was originally configured with the wrong signal evaluation mode in either Starter/Startdrive or in the TIA Portal technology object. The configured evaluation did not match the actual delivered pulses.
- The mechanical scaling parameters (load distance per motor revolution, load gear ratio) were entered using the motor pulley (120 mm/rev), but the encoder pulley circumference (80 mm/rev) was used for counting in some part of the chain.
- Net effect: the controller thought the load had moved further than it actually had. The axis stopped short by a factor of approximately 4.
The reported observation that toggling A/B evaluation from fourfold to single and back to fourfold eventually yielded a correct result is consistent with: (a) a parameter write that was not committed, (b) a state machine that required re-initialization after a parameter change, or (c) cached scaling values in the technology object that had to be re-loaded. The fact that the result was inconsistent from the first attempt indicates that a verification step (described in section 7) is mandatory.
6. Step-by-Step Commissioning Procedure
6.1 Prerequisites
- Sinamics G120 with CU250S-2 (or compatible Control Unit supporting PROFIdrive position control)
- SIMATIC S7-1500 or S7-1500T with TIA Portal V18 or later
- Starter (legacy) or Startdrive (current) for drive commissioning
- Incremental encoder wired to X9 / X2102 with shielded cable, drain grounded at one end only
- Technology object created for the axis, with the correct drive assigned via PROFINET device name
- Mechanical dimensions verified by direct measurement (do not trust nameplates)
6.2 Procedure
- Verify mechanical dimensions. Measure the belt-pulley circumference with a tape measure, not the tooth count. Tooth pitch × teeth assumes zero belt thickness; in practice, the belt rides on the pitch diameter plus half belt thickness. Record the actual L_motor and L_enc.
- Compute the mechanical ratio i = L_motor / L_enc. Record as a ratio (e.g. 3 / 2).
- Wire and ground the encoder. Connect A, /A, B, /B, Z, /Z, power, ground per the Control Unit manual. Use twisted-pair shielded cable, shield bonded to PE at the cabinet entry only.
- Configure the drive encoder in Startdrive. Set p0408 = encoder PPR (e.g. 1000). Set p0430 = signal evaluation. Save the configuration to the drive.
- Verify encoder direction. Rotate the motor shaft by hand (with power off and safety observed) and observe the count direction in the control panel. The count must increment in the positive direction of the eventual axis motion. If reversed, swap A and B channels (or use p0410 = 1 to invert internally).
- Run the drive commissioning wizard (motor identification, moment of inertia, current loop, velocity loop). Do not skip the current loop measurement.
-
Configure the technology object in TIA Portal. Under
Mechanics, enter load distance per motor revolution = L_motor. UnderLoad gear, if the encoder is on a separate shaft, enter the gear ratio. UnderEncoder, ensure the signal evaluation matches p0430. -
Set position monitoring. Configure
Following error toleranceto a value appropriate for the belt system; for a non-rigid belt, 5–10 mm is typical. - Run a test motion with low dynamics (override ≤ 25 %). Command a small absolute position change, e.g. 50 mm. Observe actual position and following error.
- Iterate. If actual ≠ commanded by a constant factor, check the four values below in order.
6.3 Scaling Decision Tree
If actual travel is wrong by a constant factor, check in this order:
| Observed factor (actual / commanded) | Likely cause | Fix |
|---|---|---|
| ≈ 0.5 | Configured for double, should be single (or vice versa) | Recheck p0430 and TO encoder configuration |
| ≈ 0.25 | Configured for fourfold, should be single | Recheck p0430 and TO encoder configuration |
| ≈ 0.667 | Load distance per motor rev entered as encoder pulley circumference | Re-enter L_motor = 120 mm |
| ≈ 1.5 | Load distance per motor rev entered as encoder pulley circumference in opposite sense | Re-enter L_motor = 120 mm |
| ≈ 4 | A/B evaluation mismatch (1 vs 4) | Recheck p0430 and TO encoder configuration |
| variable | Belt slip, encoder noise, or following error limit reached | Check mechanics, encoder wiring, dynamics |
7. Verification and Diagnostics
7.1 Static Verification
- Reference the axis to its home position with
MC_Home. - Command a known absolute position (e.g. 100 mm) using
MC_MoveAbsolute. - After the motion completes, physically measure the load position with a scale.
- Compare commanded vs measured. The error must be within the following-error tolerance, not the configured load distance.
7.2 Dynamic Verification (Trace)
Use the Startdrive trace to capture:
- Speed actual value (r0063)
- Encoder raw position Gx_XIST1
- Following error (r0061 in the position controller)
- Torque actual value (r0079)
Plot Gx_XIST1 increments per motor revolution. The value must equal PPR × evaluation. For the case at hand: 1000 × 4 = 4000 increments per encoder revolution, or 6000 increments per motor revolution because of the 1.5× mechanical ratio.
7.3 Online Diagnostics via TIA Portal
- Open the technology object online view.
- Inspect
Actual positionin load units (LU) and compare against the raw encoder count. - Check
Configurationtab values: load distance per motor revolution, load gear ratio. - Check
Encodertab: signal evaluation mode and counts per revolution.
7.4 Watchdog Alarms
If the encoder evaluation is unstable, F3 family faults may appear:
| Alarm | Meaning | Action |
|---|---|---|
| F31110 | Encoder 1 signal failure | Check wiring, shield, encoder power |
| F31111 | Encoder 1 CRC / signal error | Check cable length, replace cable |
| F31117 | Encoder 1 inversion / direction error | Verify with p0410 or channel swap |
| F31805 | Encoder 1 evaluation inconsistent | Reduce evaluation mode to single |
8. Parameter Reference
| Parameter | Tool | Function | Recommended value |
|---|---|---|---|
| p0408 | Startdrive | Encoder pulses per revolution | 1000 (from nameplate) |
| p0430 | Startdrive | Signal evaluation A/B | 2 (fourfold) for TTL diff |
| p0410 | Startdrive | Encoder inversion | 0 (default), 1 if reversed |
| r0061 | Startdrive trace | Speed actual (rpm) | n/a |
| r0063 | Startdrive trace | Speed actual (rpm) | n/a |
| TO: Load distance per motor rev | TIA Portal | Belt travel per motor rev | 120 mm (measured) |
| TO: Load gear ratio | TIA Portal | Encoder-to-motor revolutions | 3:2 (1.5) |
| TO: Encoder signal evaluation | TIA Portal | A/B evaluation | Match p0430 |
| TO: Following error tolerance | TIA Portal | Positioning window | 5 mm (belt-dependent) |
9. Field-Proven Pitfalls
10. Quick Diagnostic Checklist
- Encoder wiring: A, /A, B, /B, Z, /Z, power, GND verified
- Encoder direction: counts increment in expected positive direction
- Drive p0408 matches encoder PPR
- Drive p0430 matches actual signal quality and TO configuration
- TO load distance per motor rev = measured L_motor
- TO load gear ratio = measured i = L_motor / L_enc
- TO encoder evaluation = p0430
- Telegram type on drive = telegram type on TO
- Static test: 100 mm command → 100 mm ± tolerance actual
- Dynamic test: 100 mm command at 25 % override → 100 mm actual
- Dynamic test: 100 mm command at 100 % override → 100 mm actual
- Load test with payload: 100 mm command → 100 mm ± tolerance actual
FAQ
Why does my Sinamics G120 only move a quarter of the commanded distance?
The most common cause is an A/B signal evaluation mismatch between Startdrive (p0430) and the TIA Portal technology object. If the drive is set to fourfold evaluation but the TO is set to single, the drive multiplies its output by four but the TO reads only the raw count, producing a 4× position error. Verify both sides are configured identically.
How do I enter the load distance for a belt axis with two pulleys?
Enter the linear travel per motor revolution as the load distance, regardless of where the encoder is mounted. For the 40-tooth, 3 mm pitch drive pulley used in this guide, that value is 120 mm. The encoder pulley is then entered in the load gear ratio as 40 × 2 mm = 80 mm, giving a 3:2 ratio.
What is the right A/B evaluation mode for my encoder?
Use fourfold for TTL differential (RS-422) signals on short shielded cables. Use single for HTL single-ended signals or long cables. Do not use fourfold with marginal signal quality; the drive will count noise as edges and produce intermittent F31805 faults.
Why does the position error scale with travel distance instead of being a fixed offset?
A scaling error, not a homing error, causes the error to grow with travel. Check load distance per motor revolution, load gear ratio, encoder PPR, and signal evaluation. A fixed offset, by contrast, indicates a homing reference problem.
Can DSC (Dynamic Servo Control) hide a scaling error?
No. DSC moves the position loop into the drive but does not change the load-unit conversion. A scaling error at the mechanical-to-electrical boundary produces the same under- or over-travel regardless of whether DSC is active. Always verify the scaling with DSC disabled first, then enable DSC to optimize dynamics.
Which PROFIdrive telegram should I select for S7-1500T position control?
Use standard telegram 5 for AC4 (position control in PLC with DSC) or telegram 103/105 for AC3 (position control in drive). The S7-1500T technology object configures the telegram automatically when the drive is assigned; verify the value in the drive parameters p0922.
Why does toggling between fourfold and single evaluation appear to fix the issue intermittently?
The most likely reason is a non-committed parameter change in Startdrive or a TO reload requirement in TIA Portal. After any encoder parameter change, run RAM to ROM on the drive and recompile + download the TIA project so that the technology object re-reads its configuration. Always re-run the verification steps in section 7 after a change.