Configuring Modulo 360° Position Reset on SINAMICS EPOS

David Krause10 min read
SiemensTutorial / How-toVFD / Drives
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

Configuring Modulo 360° Position Reset on SINAMICS EPOS

Rotating knife, scissor, and rotary-table applications that require a single mechanical revolution to be normalized into a fixed numeric range (for example, 0…360°) hit a well-known limitation of absolute positioning: the actual position value in the drive grows without bound as long as the axis keeps rotating in the same direction. The Siemens SINAMICS EPOS (basic positioner) function module solves this with two complementary mechanisms — software-based modulo correction and an explicit reference-point command — plus the traversing-block editor for recurring motion profiles.

This reference covers the four field-proven methods you can apply on a SINAMICS S110, S120, G120 with CU250S-2, or V90 PN positioner:

  • Modulo correction via parameter p2576 (modulo range in LU).
  • Reference-point coordinate via parameter p2599 triggered by the “Set reference point” command.
  • Traversing blocks programmed with relative positioning that wrap automatically after a full revolution.
  • MDI Setup-to-Absolute on-the-fly handoff to avoid overshoot when a precise 360° reset must follow a relative move.
Notation: LU = Length Unit. 1 LU is the increment defined by the mechanical system / load gear (often p29247/p29248 on V90 or mechanical system on S120). 360° must be converted to LU using your gear ratio and the load-side angle per motor revolution.

Prerequisites

Before changing any EPOS parameter, confirm the following hardware and software conditions are satisfied. Each item maps to a specific commissioning step in the official SINAMICS List Manual and Basic Positioner Function Manual.

Item Required Value / Setting Where Configured
Drive firmware SINAMICS S120 ≥ 4.4 (or matching CU250S-2 / V90 PN image) STARTER / Startdrive device trace, parameter r0018
Function module EPOS Activated STARTER configuration tree, “Position control” function module
Encoder actual value Resolved and consistent (no F31812 / F31813) Diagnostics → Actual values
Mechanical system / LU definition 1 LU = the LU you use everywhere in EPOS Mechanical system dialog in STARTER / Startdrive
Homing completed Active homing (mode 0…35) or passive homing performed; r2684.0 = 1 Homing tab, control word bits p2593/p2594
Limit switches Software limits (p2580, p2581) consistent with the 360° range Limits dialog

For the underlying basic positioner documentation see the SINAMICS S120 Function Manual – Basic Positioner (EPOS) and the S120 List Manual.

Understanding the Position-Wrap Problem

The default actual position value in EPOS is a monotonically increasing 32-bit signed integer. After each motor revolution the drive adds the load-side LU-per-revolution (often 10 000 LU, 360 000 LU, or whatever the mechanical system defines), so after N revolutions the position reads N × LU_per_rev. When you then issue a relative traversing block that asks for “+1 LU” the drive executes it correctly — but the absolute numeric value continues to climb.

This breaks two operator-facing behaviours:

  1. The HMI / SCADA shows unwieldy five- or six-digit position counts instead of 0…359 999.
  2. A cut command that expects the tool to “return home” cannot rely on position == 0 because the absolute value rarely hits zero after a complete turn.

The correct fix is not to mask the value at the controller — it is to enable modulo handling in the drive so the actual position value internally wraps inside the configured range.

Method 1 – Modulo Correction (p2576 / p2577)

Modulo correction is the most elegant solution for true rotary axes. The drive continues to accept positions as ordinary absolute values, but the displayed and used actual position is mapped into the modulo range [0, p2576). Once enabled, a relative move of +360° (or +full-revolution in LU) leaves the actual position unchanged.

Key Parameters

Parameter Name Value for 360° Application Comment
p2576 EPOS modulo range (LU) 360 000 (example for 1000 LU/°) Sets the wrap modulus. Must be an integer multiple of LU per motor revolution on the load side.
p2577 EPOS modulo range extension / correction start value As needed (firmware-dependent) Used together with p2576 to specify the modulo start point and any offset.
p29247 (V90 PN) Mechanical system: load revolutions 1 Defines ratio denominator for V90.
p29248 (V90 PN) Mechanical system: motor revolutions 1 (or gear ratio) Defines ratio numerator for V90.

Configuration Procedure

  1. Open the drive in STARTER or Startdrive and go to Control structure → Basic positioner → Mechanical system.
  2. Verify the LU per motor revolution equals the LU per load revolution × load ratio. For a direct drive with one motor rev = 360° and 1000 LU/°, the result is 360 000 LU/revolution.
  3. Open Configuration → Modulo correction and enter p2576 = 360 000 (your exact value).
  4. Set p2577 to align the modulo zero with your mechanical home — typically 0 for a knife that cuts at the physical zero mark.
  5. Download (RAM → ROM) and power-cycle, or issue Copy RAM to ROM and re-initialize the drive so the new modulo range is taken into account.
  6. Enable the drive, perform homing, then jog +360°. The actual position value in r2521[0] should now show the same value as before the move.

Behaviour After Activation

With modulo correction active:

  • Relative positioning (MDI mode p2641 = 0, traversing block p2621 = 1) wraps the actual value around automatically.
  • Absolute positioning remains usable: a command of 359 999 LU is treated as 1 LU before zero.
  • Software limits are evaluated in the unwrapped space — keep p2580/p2581 generous (for example ±10×p2576) unless you intentionally want to clamp rotation.
Edge case: If the absolute target equals p2576, EPOS throws F07494 “Target position outside modulo range”. Subtract p2576 from the target and re-issue.

Method 2 – Reference-Point Coordinate (p2599)

If you do not want to enable modulo handling, you can force a hard zero by setting the actual position to a configurable coordinate via the “Set reference point” command. This is essentially a software home move that does not require the encoder pulse pattern to match a hardware reference marker.

Key Parameters

Parameter Name Typical Value Comment
p2599 EPOS reference point coordinate (LU) 0 Actual position written when the command is accepted.
p2598 EPOS reference point coordinate signal source BI to a digital input or PLC bit Selects where the set-reference-point command is sourced.

Control Word / Sequence

The “Set reference point” function is mapped to bit 15 of the EPOS control word 2 (r2587/p2690 equivalent in some firmware) or selected via p2598. Once the command is detected, the drive copies p2599 into the actual position value and clears the homed bit, requiring a re-home only if the controller logic demands it (otherwise position 0 is treated as valid).

Configuration Procedure

  1. Set p2599 = 0 (or your preferred origin, e.g. 90° for a cut that should occur 90° before the physical zero).
  2. Wire the set-reference-point signal source through p2598 to a free PLC tag (PROFINET word from S7-1200/S7-1500, or a direct I/O on the CU).
  3. In the PLC, after the cut completes, set the bit for one PLC cycle, then clear it. The drive accepts the rising edge and writes the actual position.
  4. Confirm r2521[0] = p2599 on the HMI / web server.
Safety: Set-reference-point must not be issued while the drive is actively traversing; first wait for in-position (r2683.6 = 1) and stand-still (r2199.7 = 1).

Method 3 – Traversing Blocks with Relative Positioning

The traversing-block editor inside EPOS gives you a programmable cam profile. For a scissor/knife that always performs the same revolution, a single block programmed in relative mode is enough — the drive handles the modulo internally if you also use modulo correction, or you can pair relative blocks with a set-reference-point command at the end of the profile.

Block Parameters

Parameter Field Setting
p2617[0] Block 0 – task 1 = POSITIONING
p2616[0] Block 0 – mode 1 = RELATIVE
p2612[0] Block 0 – position 360 000 LU (one full revolution)
p2613[0] Block 0 – velocity Application-specific (LU/min)
p2614[0] Block 0 – acceleration override 100 %
p2615[0] Block 0 – deceleration override 100 %

PLC Sequence

  1. Select traversing block 0 via the EPOS control word bits 0–6.
  2. Set the “activate traversing task” bit (positive edge).
  3. Wait for in-position.
  4. Trigger p2598 set-reference-point (Method 2) to zero the actual value, then loop back to step 1.

This pattern is common on S7-1200/S7-1500 motion control libraries where a TO_CommandDB writes into the EPOS Telegram 111 / 110 word layout.

Method 4 – MDI Setup-to-Absolute On-the-Fly

When the drive is jogging toward an open-loop speed (Setup mode) and must hand off to a precise 360° absolute position without overshoot, the recommended sequence is:

  1. Issue MDI Setup with FWD = HIGH until the blade is close to the cut point.
  2. On the fly (axis still moving) switch to MDI absolute positioning by toggling mode bit and writing the absolute target. EPOS internally blends the trajectory.
  3. After positioning completes, fire set-reference-point.

This pattern avoids the overshoot you observe with MDI relative positioning that always starts from the actual position. The blending is implemented in the position controller’s pre-control branch and does not require additional parameters — only the control-word sequence in the cyclic Telegram 111 PDO map.

Verification & Commissioning Checklist

Check How to Verify Acceptance
Modulo wrap Jog exactly 360° and read r2521[0] Returns to original value
Block repeatability Run block 0 ten times, log r2521[0] Value stays inside one LU window
Homing state Inspect r2684.0 Bit set after homing
Faults Fault buffer via r0945 / r0947 No F07491 / F07492 / F07494
Overshoot Trace r2521[0] and command position No sign reversal during MDI hand-off
PROFINET cycle IRT / RT class set on Telegram 111 Cycle time ≤ 4 ms for precision cuts

Troubleshooting Matrix

Symptom Likely Cause Parameter / Action
Position keeps growing Modulo correction disabled Set p2576 to LU per revolution, cycle power
F07494 “Position outside modulo range” Absolute target ≥ p2576 Reduce target by p2576; ensure block mode = relative
Overshoot when switching modes MDI relative used instead of absolute on-the-fly Use MDI Setup → MDI Absolute hand-off, or traversing block
Set-reference-point ignored Axis still traversing when command issued Wait for r2683.6 = 1 (in-position) and r2199.7 = 1 (standstill)
Position jumps at every revolution Modulo range mismatch with mechanical LU Recompute p2576 from gear ratio and encoder resolution
HMI shows overflow Display configured as signed 32-bit, raw count Switch HMI tag to LU; clamp display to p2576
Cut drifts after a few cycles Encoder slip / backlash Inspect r3776 (load-side actual value), check coupling

Field-Proven Commissioning Sequence (S7-1500 + SINAMICS S120)

  1. Wire the drive via PROFINET Telegram 111 (8 words PZD, 4 words SI/Extended).
  2. Set the device name in TIA Portal; assign the S7-1500 TO_PositioningAxis to the drive.
  3. Activate EPOS in the device configuration and download the HW configuration.
  4. In the SINAMICS commissioning tool, configure mechanical system (load rev = 1, motor rev = 1 for direct drive) so 1 motor rev = 1 load rev.
  5. Set p2576 = 360 000 for 1000 LU/° mapping; set p2599 = 0.
  6. Run active homing with reference cam approach (mode 4) so r2684.0 = 1.
  7. Program TO_MoveAbsolute blocks in the S7-1500 axis DB. Use 0° as the cut position, 359° as the pre-cut position, and repeat.
  8. Enable MC_Power, MC_MoveAbsolute, MC_Halt per typical machine cycle.
  9. Optionally enable modulo display on the HMI by reading r2521[0] directly via the cyclic PIV (process image of values) instead of the controller-side tag.

Safety Considerations

  • Modulo correction does not bypass software limits. If you keep p2580/p2581 inside the modulo range you will trip F07491 on the first wrap.
  • Set-reference-point is a normal-mode operation; it does not interfere with safety integrated functions (STO, SS1, SLS) because it only writes the actual value.
  • When driving rotary knives, ensure SLS limits (p9531/p9561) reflect the maximum permissible rotation, not the mechanical end stops.

FAQ

Which parameter enables automatic 360° position wrap on a SINAMICS drive?

Set p2576 (EPOS modulo range) to the load-side LU value that corresponds to exactly one revolution. After saving and power-cycling, the actual position value automatically wraps inside [0, p2576).

How do I force the actual position to zero after a complete turn?

Use the “Set reference point” command through p2598 (signal source) so the drive writes p2599 into the actual value. Trigger only when the drive is in-position and at standstill.

Can I mix relative and absolute traversing blocks on the same axis?

Yes. Each block has its own mode bit (p2616 or the per-block equivalent). Relative blocks count from the actual position, absolute blocks count from a fixed coordinate. With modulo correction active both behave consistently across revolutions.

Why does my MDI relative move overshoot the target?

Because MDI relative always starts from the actual position and uses the closed-loop position controller to blend the new target. Use MDI Setup with FWD=HIGH and hand off to MDI absolute on-the-fly, or program the cycle as a traversing block.

Does modulo correction affect SINAMICS Safety Integrated?

No. Modulo correction only rewrites the internal actual-position value used by the position controller; STO, SS1, SS2, and SLS operate on independent actual values and remain unaffected.

Back to blog