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
p2599triggered 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.
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:
- The HMI / SCADA shows unwieldy five- or six-digit position counts instead of 0…359 999.
- 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
- Open the drive in STARTER or Startdrive and go to Control structure → Basic positioner → Mechanical system.
- 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.
- Open Configuration → Modulo correction and enter
p2576 = 360 000(your exact value). - Set
p2577to align the modulo zero with your mechanical home — typically 0 for a knife that cuts at the physical zero mark. - 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.
- 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/p2581generous (for example ±10×p2576) unless you intentionally want to clamp rotation.
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
- Set
p2599 = 0(or your preferred origin, e.g. 90° for a cut that should occur 90° before the physical zero). - Wire the set-reference-point signal source through
p2598to a free PLC tag (PROFINET word from S7-1200/S7-1500, or a direct I/O on the CU). - 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.
- Confirm
r2521[0] = p2599on the HMI / web server.
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
- Select traversing block 0 via the EPOS control word bits 0–6.
- Set the “activate traversing task” bit (positive edge).
- Wait for in-position.
- Trigger
p2598set-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:
- Issue MDI Setup with
FWD = HIGHuntil the blade is close to the cut point. - 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.
- 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)
- Wire the drive via PROFINET Telegram 111 (8 words PZD, 4 words SI/Extended).
- Set the device name in TIA Portal; assign the S7-1500 TO_PositioningAxis to the drive.
- Activate EPOS in the device configuration and download the HW configuration.
- In the SINAMICS commissioning tool, configure mechanical system (load rev = 1, motor rev = 1 for direct drive) so 1 motor rev = 1 load rev.
- Set
p2576 = 360 000for 1000 LU/° mapping; setp2599 = 0. - Run active homing with reference cam approach (mode 4) so
r2684.0= 1. - Program TO_MoveAbsolute blocks in the S7-1500 axis DB. Use 0° as the cut position, 359° as the pre-cut position, and repeat.
- Enable MC_Power, MC_MoveAbsolute, MC_Halt per typical machine cycle.
- 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/p2581inside 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.